【发布时间】:2020-02-26 23:09:20
【问题描述】:
Msvm_GuestNetworkAdapterConfiguration 类接受字符串数组中的 DNSServers
https://docs.microsoft.com/en-us/windows/win32/hyperv_v2/msvm-guestnetworkadapterconfiguration
我有 CSV 中的数据要填充
Set-VMNetworkConfiguration -IPAddress $sipaddress -Subnet $netmask -DNSServers $dns -DefaultGateway $gateway
如何将从CSV读取的两个变量传递给命令上的变量DNSServers?
模块 Set-VMNetworkConfiguration 接受值为
[Parameter(Mandatory=$false,
Position=4,
ParameterSetName='Static')]
[String[]]$DNSServers = @(),
要通过的样本
site,ipaddress,netmask,gateway,dns1,dns2
1234,172.28.158.122,255.255.255.240,172.28.158.113,172.28.158.113,172.28.158.113
5678,172.28.158.123,255.255.255.240,172.28.158.113,172.28.158.113,172.28.158.113
F06E,172.28.158.124,255.255.255.240,172.28.158.113,172.28.158.113,172.28,158.113
下面的连接得到一个
$dns = $($dns1[$index],$dns2[$index])
传递变量状态
DEBUG: 1+ >>>> Get-VMNetworkAdapter -VMName packer-centos8-base-g2-1 | Set-VMNetworkConfiguration -IPAddress 172.28.158.124 -Subnet 255.255.255.240 -DNSServers 172.28.158.113 172.28.158.113 -DefaultGateway 172.28.158.113
以错误提示结束
Cannot process argument transformation on parameter 'NetworkAdapter'. Cannot convert the "172.28.158.113" value of type "System.String" to type "Microsoft.HyperV.PowerShell.VMNetworkAdapter".
请指导
【问题讨论】:
-
so ... 简单的答案是将两个 IP 添加到一个数组中。在您发布 CSV 样本之前,仅讨论这一点才有意义。 [grin] 请将其添加到问题中,而不是作为评论...并使用代码格式使其可读。
-
这个
-DNSServers 172.28.158.113 172.28.158.113不是一个数组。这两个项目由 SPACE ...分隔,这使得第二个完全不同的参数输入。 [grin] 尝试改用-DNSServers '172.28.158.113', '172.28.158.113'。注意两个字符串之间的逗号。 -
我是 ps 的新手,任何关于在 powershell 上获取此模式的指南,因为此模式 $dns = $($dns1[$index],$dns2[$index]) 不起作用
-
link 解决了这个问题
-
太棒了!很高兴知道你让它根据需要工作......并感谢这一切的“如何”。 [咧嘴]
标签: arrays powershell hyper-v