modules/VMSettings.psm1
Set-StrictMode -Version "Latest" function Get-VMSettings { [CmdletBinding()] param ( [Parameter(Mandatory = $true, ValueFromPipeline = $true)] [HyperV.Tools.VM] [Alias("VM")] $InputObject ) $VM = $InputObject $VM_settings = Get-CimInstance -Namespace "root\virtualization\v2" -Class "Msvm_VirtualSystemSettingData" -Filter "ConfigurationID='$($VM.Id)'" return $VM_settings } function Set-VMSettings { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [CimInstance] [ValidateCimInstance("Msvm_VirtualSystemSettingData", "root\virtualization\v2")] $VMSettings ) $CIM_serializer = [Microsoft.Management.Infrastructure.Serialization.CimSerializer]::Create() $VM_settings_serialized = $CIM_serializer.Serialize($VMSettings, [Microsoft.Management.Infrastructure.Serialization.InstanceSerializationOptions]::None) $VM_settings_as_XML = [System.Text.Encoding]::Unicode.GetString($VM_settings_serialized) $mgmt_svc = Get-CimInstance -Class "Msvm_VirtualSystemManagementService" -Namespace "root\virtualization\v2" Invoke-CimMethod -CimInstance $mgmt_svc -MethodName "ModifySystemSettings" -Arguments @{ "SystemSettings" = $VM_settings_as_XML } | Out-Null } |