我正在将大量适配器从 e1000 更改为 vmxnet3
我基本上是在尝试在 vmnext 适配器和 e1000 适配器之间进行过滤
get-wmiobject win32_networkadapter | Where-Object {$_.ServiceName -match "Vmxnet"}
这在我直接在 vm 中运行时有效
PS C:\Users-adm-mxj45375> get-wmiobject win32_networkadapter | Where-Object {$_.ServiceName -match "Vmxnet*"}
服务名称:vmxnet3ndis6 MAC 地址:00:50:56:88:7E:07 适配器类型 :以太网 802.3 设备 ID:1 名称:vmxnet3 以太网适配器 网络地址:速度:10000000000
但是当我通过
调用它时$Network = Invoke-VMScript -VM $VMName -ScriptType Powershell -ScriptText "(get-wmiobject win32_networkadapter | Where-Object {$_.ServiceName -match 'Vmxnet'})"
我明白了
.ServiceName:术语“.ServiceName”未被识别为名称 cmdlet、函数、脚本文件或可操作的
我期望输出是变量 $network
Import-Module NetAdapter
Connect-VIServer in1graapp022
$vms = Import-CSV "C:\Scripts\servers.csv"
$GC = $Host.UI.PromptForCredential("Please enter credentials", "Enter Guest credentials for VM", "", "")
foreach ($vm in $vms){
$VMName = $vm.Name
$IP = $vm.IP
$SNM = $vm.SubnetMask
$GW = $vm.Gateway
$DNS1 = $vm.DNS1
$DNS2 = $vm.DNS2
$Network = Invoke-VMScript -VM $VMName -ScriptType Powershell -ScriptText "(get-wmiobject win32_networkadapter | Where-Object {$_.ServiceName -match 'Vmxnet*'}).netconnectionid"
$NetworkName = get-networkadapter $VMName | Where-Object {$_.type -eq "vmxnet3"} | Select-Object MacAddress
#Write-Host "Setting IP address for $VMname..." -ForegroundColor Yellow
#Sleep -Seconds 60
$netadapter = Get-NetAdapter | where MacAddress -ne "$NetworkName"}
$netadapter1 | New-NetIPAddress -AddressFamily IPv4 -IPAddress $IP -PrefixLength 24 -Type Unicast -DefaultGateway $GW
$netadapter2 | Set-DnsClientServerAddress -ServerAddresses $DNS1
#$netsh = "c:\windows\system32\netsh.exe interface ip set address ""$NetworkName"" static $IP $SNM $GW"
#$netsh2 = "c:\windows\system32\netsh.exe interface ip set dnsservers ""$NetworkName"" static $DNS1"
#$netsh3 = "c:\windows\system32\netsh.exe interface ip add dnsservers ""$NetworkName"" $DNS2"
Invoke-VMScript -VM $VMname -GuestCredential $GC -ScriptType bat -ScriptText $netadapter1
Invoke-VMScript -VM $VMname -GuestCredential $GC -ScriptType bat -ScriptText $netadapter2
#Invoke-VMScript -VM $VMname -GuestCredential $GC -ScriptType bat -ScriptText $netsh3
Write-Host "Setting IP address completed." -ForegroundColor Green
Sleep -Seconds 20
([WMIClass]"\\$vmname\ROOT\CImv2:Win32_Process").Create("cmd.exe /c ipconfig /registerdns")
}