PowerShell - передать массив в качестве необязательного значения параметра - PullRequest
0 голосов
/ 28 апреля 2020

Я довольно новичок в PowerShell.

Я пытаюсь передать массив имен серверов в качестве значения необязательного параметра, чтобы получить время последней загрузки для списка серверов.

Пример 1

$serverList = @('server1"', '"server2"', '"server3"', '"server4"', '"server5"')

Get-CimInstance -ComputerName $serverList -ClassName win32_operatingsystem | Select-Object csname, lastbootuptime

Пример 2

Get-CimInstance -ComputerName server1,server2,server3,server4,server5 -ClassName win32_operatingsystem | Select-Object csname, lastbootuptime
  • В примере 1 я получаю ошибка, которая говорит о том, что он не может подключиться к серверам.
  • В примере 2 это работает.

Вероятно, мне не хватает ключевой части фундаментальных знаний о том, почему я Я делаю, не работает. Что мне не хватает?

Спасибо за помощь.

1 Ответ

2 голосов
/ 28 апреля 2020

В первом примере вы переутомляетесь с кавычками. (также server1 имеет конечную двойную кавычку, но без начальной двойной кавычки ..)

Помещая серверы в одинарные кавычки ', текст внутри него берется буквально, поэтому вы вводите командлет с такими именами, как "server2", поэтому , включая символы двойных кавычек.
Эти кавычки явно не относятся к имени сервера.

Кстати: не ошибка, но вы * Не нужно @() при создании массива имен серверов.

Это был бы лучший способ настройки массива строк, где вы можете использовать либо одинарные, либо двойные кавычки, но не оба:

$serverList = 'server1', 'server2', 'server3', 'server4', 'server5'
Get-CimInstance -ComputerName $serverList -ClassName win32_operatingsystem | Select-Object csname, lastbootuptime

Вы также заметили, что при использовании в качестве параметров командлета вам даже не нужны кавычки, а элементы интерпретируются как строки, если они не содержат пробелов:

Get-CimInstance -ComputerName server1,server2,server3,server4,server5 -ClassName win32_operatingsystem | Select-Object csname, lastbootuptime
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...