通过 powercli 调用 powershell 没有给出预期的结果

问题描述 投票:0回答:0

我正在将大量适配器从 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")
}
powershell vmware powercli
© www.soinside.com 2019 - 2024. All rights reserved.