I want to create an ISO image, so a .iso file, on Windows. This is possible to do using COM component IMAPI2FS.MsftFileSystemImage, and I found instructions on how to do this using PowerShell in an MSDN blog post entitled "Writing optical discs using IMAPI 2 in powershell".
After step 3, those instructions say that "at this step you can stop and save resulted image to the local hard disc, this will be a pure iso image."
My question: How do I take $resultStream, i.e., a COM object that results from retrieving an ImageStream, in PowerShell and save its contents to a file?
You need to use FileStream writer. Check this link for an example of how it is done in c#.
http://tools.start-automating.com/Install-ExportISOCommand/?-Download
The function there can be used to create cmdlets that help you create ISO. For example,
Run Install-ExportISOCommand
This creates Export-Iso
Then, use Export-ISO
to create an ISO.
Export-Iso -ISOPath C:\dropbox\test.iso -FileName C:\Dropbox\Scripts
You can use the DiscUtils library to make ISOs (and manage other disk formats such as VHD/VHDX, DMG, FAT, etc). A PowerShell module is supported as well an MSBUILD task to automatically create your ISO on project build.
Create a CDBuilder
object and go to town with adding files and directories then save it to disk with the Build
method. Download documentation here.
CDBuilder builder = new CDBuilder();
builder.AddFile("samplefile.txt", new byte[] { });
builder.Build(@"c:\output.iso");
The great thing about this approach is that it is 100% managed code and cross-platform - there is no IMAPI2 COM/Marshaling requirement.