Powershell - Как передать два значения для переменной массива - PullRequest
0 голосов
/ 27 февраля 2020

Msvm_GuestNetworkAdapterConfiguration class принимает 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".

pls guide

1 Ответ

0 голосов
/ 27 февраля 2020

У вас есть синтаксическая ошибка.

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...