【问题标题】:Powershell - How to pass a two values for a array variablePowershell - 如何为数组变量传递两个值
【发布时间】: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


【解决方案1】:

您有语法错误。

$dns = $($dns1[$index]),$($dns2[$index])

你少了一个逗号 编辑:固定逗号。谢谢你告诉我。

"-DNSServers 172.28.158.113 ,172.28.158.113"

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

【讨论】:

  • 没错,你已经复制了这个问题,非常感谢,但我已经用 -join 对该问题进行了排序,以便在数组中的 btn a 值中添加一个逗号!
猜你喜欢
  • 1970-01-01
  • 2015-12-29
  • 2020-03-10
  • 2014-06-21
  • 1970-01-01
  • 2019-08-18
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多