Ваша проблема в том, что вы определяете Computername
как строку [string]
, а не как массив строк [string[]]
.Таким образом, ввод localhost,example
не интерпретируется как два компьютера, а один компьютер с именем «localhost, example».Если вы используете [string[]]
(или не определяете его), то символ ,
анализируется как разделитель в массиве строк.Поскольку Get-WmiObject
может принимать массив, он запускается один раз для каждого элемента массива.
Вы можете выполнить собственный анализ пробелов и запятых с помощью -split
, но лучше использовать сначала правильно отформатированный массив.-split
используется потому, что $ComputerName -replace " ", ","
просто создаст [string]
с запятыми вместо пробелов, а не разделяется на несколько элементов в массиве.
Param (
[string[]]$ComputerName
)
# Manual parsing to split space delimited into two elements
# e.g. 'localhost Example' into @(localhost,Example) - Not a good practice
$ComputerName = $ComputerName -split " "
Get-WmiObject Win32_OperatingSystem -ComputerName $ComputerName | select csname, @{LABEL='LastBootUpTime' ;EXPRESSION= {$_.ConverttoDateTime($_.lastbootuptime)}}