param( [Parameter(Mandatory)] [string]$VMName ) #$vmName = Read-Host "Specify the name of your virtual machine" $ns = "root\virtualization\v2" $vsvms = Get-WmiObject -Namespace $ns -Class Msvm_VirtualSystemManagementService $vmcs = Get-WmiObject -Namespace $ns -Class Msvm_ComputerSystem -Filter "ElementName='$vmName'" if (-not $vmcs) { Write-Host "Error: VM $vmname is missing." exit 1; } $vs_settingdata = ($vmcs.GetRelated("Msvm_VirtualSystemSettingData", "Msvm_SettingsDefineState", $null, $null, "SettingData", "ManagedElement", $false, $null) | %{$_}) $et_settingdata = $vs_settingdata.GetRelated("Msvm_SyntheticEthernetPortSettingData") $vm_netconf = ($et_settingdata.GetRelated("Msvm_GuestNetworkAdapterConfiguration", "Msvm_SettingDataComponent", $null, $null, "PartComponent", "GroupComponent", $false, $null) | % {$_}) $yesno = Read-Host "Enable DHCP? (y/n[n])" if ($yesno.toLower() -eq "y") { $vm_netconf.DHCPEnabled = $true } else { $vm_netconf.DHCPEnabled = $false $vm_netconf.IPAddresses = @((Read-Host "Specify static ipv4 address")) $vm_netconf.Subnets = @((Read-Host "Specify subnetmask")) $vm_netconf.DefaultGateways = @((Read-Host "Specify default gateway")) $vm_netconf.DNSServers = @((Read-Host "Specify preferred dns server")) } $ret = $vsvms.SetGuestNetworkAdapterConfiguration($vmcs.Path, $vm_netconf.GetText(1)) if ($ret.ReturnValue -ne 0) { Write-Host "Error: something went wrong" } .\get-vmnicinfo.ps1 $vmName