DSCResources/DSC_VMHardDiskDrive/en-US/about_VMHardDiskDrive.help.txt
.NAME
VMHardDiskDrive .DESCRIPTION Manages VHD(X)s attached to a Hyper-V virtual machine. When parameter ControllerNumber or ControllerLocation is not provided, the same logic as Set-VMHardDiskDrive command is used. ## Requirements * The Hyper-V Role has to be installed on the machine. * The Hyper-V PowerShell module has to be installed on the machine. .PARAMETER VMName Key - String Specifies the name of the virtual machine whose hard disk drive is to be manipulated. .PARAMETER Path Key - String Specifies the full path of the VHD file to be manipulated. .PARAMETER ControllerType Write - String Allowed values: IDE, SCSI Specifies the type of controller (IDE/SCSI) to which the hard disk drive is to be set. If not specified, it defaults to SCSI. .PARAMETER ControllerNumber Write - UInt32 Allowed values: 0, 1, 2, 3 Specifies the number of the controller to which the hard disk drive is to be set. For IDE the possible values are 0 or 1, for SCSI the possible values are 0, 1, 2, or 3. If not specified, it defaults to 0. .PARAMETER ControllerLocation Write - UInt32 Specifies the number of the location on the controller at which the hard disk drive is to be set. Possible values for IDE are 0 or 1, and for SCSI the possible values are between 0 to 63. If not specified, it defaults to 0. .PARAMETER Ensure Write - String Allowed values: Present, Absent Specifies if the hard disk drive must be present (exist) or absent (not exist). If not specified, it defaults to Present. .EXAMPLE 1 VM with an extra disk. configuration Example { param ( [Parameter()] [System.String[]] $NodeName = 'localhost', [Parameter(Mandatory = $true)] [System.String] $VMName, [Parameter(Mandatory = $true)] [System.String] $VhdPath ) Import-DscResource -ModuleName 'HyperVDsc' Import-DscResource -ModuleName 'PSDesiredStateConfiguration' Node $NodeName { # Install HyperV feature, if not installed - Server SKU only $diskNameOS = "$VMName-DiskOS.vhdx" $diskNameExtra1 = "$VMName-Disk1.vhdx" WindowsFeature HyperV { Ensure = 'Present' Name = 'Hyper-V' } WindowsFeature HyperVPowerShell { Ensure = 'Present' Name = 'Hyper-V-PowerShell' } VHD DiskOS { Name = $diskNameOS Path = $VhdPath Generation = 'vhdx' MaximumSizeBytes = 20GB Ensure = 'Present' DependsOn = '[WindowsFeature]HyperV' } VHD Disk1 { Name = $diskNameExtra1 Path = $VhdPath Generation = 'vhdx' MaximumSizeBytes = 20GB Ensure = 'Present' DependsOn = '[WindowsFeature]HyperV' } VMHyperV NewVM { Ensure = 'Present' Name = $VMName VhdPath = Join-Path $VhdPath -ChildPath $diskNameOS Generation = 1 DependsOn = '[VHD]DiskOS' } VMHardDiskDrive ExtraDisk { VMName = $VMName Path = Join-Path $VhdPath -ChildPath $diskNameExtra1 ControllerType = 'IDE' ControllerNumber = 0 ControllerLocation = 1 Ensure = 'Present' DependsOn = '[VHD]Disk1' } } } .EXAMPLE 2 VM with 4 additional disks. configuration Example { param ( [Parameter()] [System.String[]] $NodeName = 'localhost', [Parameter(Mandatory = $true)] [System.String] $VMName, [Parameter(Mandatory = $true)] [System.String] $VhdPath ) Import-DscResource -ModuleName 'HyperVDsc' Import-DscResource -ModuleName 'PSDesiredStateConfiguration' Node $NodeName { $diskNameOS = "$VMName-OS.vhdx" # Install HyperV feature, if not installed - Server SKU only WindowsFeature HyperV { Ensure = 'Present' Name = 'Hyper-V' } WindowsFeature HyperVPowerShell { Ensure = 'Present' Name = 'Hyper-V-PowerShell' } # Create the VHD for the OS VHD DiskOS { Name = $diskNameOS Path = $VhdPath Generation = 'vhdx' MaximumSizeBytes = 20GB Ensure = 'Present' DependsOn = '[WindowsFeature]HyperV' } # Create the VM VMHyperV NewVM { Name = $VMName VhdPath = Join-Path $VhdPath -ChildPath $diskNameOS Generation = 1 Ensure = 'Present' DependsOn = '[VHD]DiskOS' } # Ensures a SCSI controller exists on the VM VMScsiController Controller { Ensure = 'Present' VMName = $VMName ControllerNumber = 0 DependsOn = '[VMHyperV]NewVM' } foreach ($i in 0 .. 3) { $diskName = "$VMName-Disk-$i.vhdx" # Create the VHD VHD "Disk-$i" { Name = $diskName Path = $VhdPath Generation = 'vhdx' MaximumSizeBytes = 20GB Ensure = 'Present' DependsOn = '[WindowsFeature]HyperV' } # Attach the VHD VMHardDiskDrive "ExtraDisk-$i" { VMName = $VMName Path = Join-Path $VhdPath -ChildPath $diskName ControllerType = 'SCSI' ControllerLocation = $i Ensure = 'Present' DependsOn = '[VMScsiController]Controller', "[VHD]Disk-$i" } } } } |