Mount an ISO on a Physical Server running Server Core

So you need to mount an ISO on a physical server that is running Windows Server 2012 R2 Server Core? If so, how would you accomplish that task without a graphical user interface?

With PowerShell of course, specifically the Mount-DiskImage PowerShell cmdlet:

Mount-DiskImage -ImagePath 'D:\ISO\Windows Server 2012 Trial\9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO' -StorageType ISO -PassThru

mount-iso1.png

By default nothing is returned when using the Mount-DiskImage cmdlet and the ISO is mounted using the next available drive letter. The -PassThru parameter was specified in the previous example but notice there’s no property that that tells us which drive letter was assigned.

Let’s see if we can figure out a way to make it tell us what drive letter was assigned. Piping the previous command to Get-Member confirms that there isn’t a drive letter property:

Mount-DiskImage -ImagePath 'D:\ISO\Windows Server 2012 Trial\9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO' -StorageType ISO -PassThru | Get-Member

mount-iso2.png

One thing to keep in mind is that if we didn’t use the -PassThru parameter to make the command produce output, piping it to Get-Member would generate an error because only commands that produce output can be piped to the Get-Member cmdlet.

Notice that piping the command to Get-Member as shown in the previous example also gave us the type of object that it produced which is specified after “TypeName:” and before the list of methods and properties.

Maybe there’s something we can pipe the results of Mount-DiskImage to that will tell us what drive letter is assigned? We can use Get-Command with the -ParameterType parameter to determine what cmdlets accept input from MSFT_DiskImage objects:

Get-Command -ParameterType MSFT_DiskImage

mount-iso3.png

Get-Volume looks promising, but let’s verify that it accepts MSFT_DiskImage objects via pipeline input because cmdlets that accept that type of object via parameter and/or pipeline input would show up in the previous set of results.

Looking at the “INPUTS” section of the help for Get-Volume confirms that it does indeed accept pipeline input for MSFT_DiskImage objects:

help Get-Volume -Full

mount-iso5.png

Let’s pipe our Mount-DiskImage command to Get-Volume and see what happens:

Mount-DiskImage -ImagePath 'D:\ISO\Windows Server 2012 Trial\9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO' -StorageType ISO -PassThru | Get-Volume

mount-iso4.png

As you can see in the previous set of results, piping Mount-DiskImage to Get-Volume allows us to see what drive letter was assigned. In the previous example, drive letter ‘E’ was assigned to the ISO image that was mounted.

ยต