【发布时间】:2020-02-24 20:42:27
【问题描述】:
我整天都在谷歌上搜索,但我似乎无法破解这个坚果。我从 RVTools 获得了一个 csv,其中列出了 VM 名称和 VLAN (Column names VM & Network),我的目标是让 PowerCLI 更改 vCenter 中的 VLAN 以匹配 CSV 中的 VLAN。
我首先在我们的测试环境中采用了艰难的方法,将两列放入各自的单独数组中
$HadesList = "C:\Users\-user-\Desktop\test.csv"
$TestList = Import-CSV $HadesList
$result = ForEach($Line in $TestList) { $Line.VM }
$result2 = ForEach($Line2 in $TestList) { $Line2.Network }
get-vm $result[0] | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $result2[0] -Confirm:$false
...manually changing the numbers...
get-vm $result[24] | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $result2[24] -Confirm:$false
这在测试实验室中运行良好,因为它只有 25 个虚拟机。但是当我们在生产中进行这种更改时,我想要更简洁的东西。搜了一圈,发现有人在做for循环,会返回数据,所以我尝试用它来更改网络适配器,但它出错了:
$VMData = Import-CSV C:\Users\-user-\Desktop\test.csv
for ($i=0; $i -lt $VMData.count; $i++){
Get-VM $VMData.VM[$i] | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName $VMData.Network[$i] -Confirm:$false
}
Set-NetworkAdapter : 2/24/2020 2:15:41 PM Set-NetworkAdapter 找不到 ID 为“HostSystem-host-14”的 VMHost 的环境浏览器。
在行:2 字符:46 + ... rkAdapter | Set-NetworkAdapter -NetworkName $VMData.Network[$i] -Conf ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~ + CategoryInfo : ResourceUnavailable: (HostSystem-host-14:String) [Set-NetworkAdapter], ViError + FullyQualifiedErrorId : Client20_VmHostServiceImpl_TryGetHostEnvironmentBrowser_EnvironmentBrowserNotFound,VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.SetNetworkAdapter
有什么东西可以让这样的事情发挥作用吗?我整天都在为此苦苦挣扎,我什至想不出办法来表达它以获得更好的搜索结果。
【问题讨论】:
-
communities.vmware.com/thread/419666 根据这个帖子,错误
...Cannot find the environment browser for VMHost with Id: 'HostSystem-host-14'...是一个已知的错误,没有解决方案。
标签: arrays powershell for-loop powercli import-csv