Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create ISO image using PowerShell: how to save IStream to file?

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?

like image 387
MarnixKlooster ReinstateMonica Avatar asked Nov 30 '11 09:11

MarnixKlooster ReinstateMonica


2 Answers

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
like image 186
ravikanth Avatar answered Oct 25 '22 08:10

ravikanth


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.

like image 29
Andy Arismendi Avatar answered Oct 25 '22 07:10

Andy Arismendi