Получить значение из invoke-command - PullRequest
0 голосов
/ 10 октября 2019

Этот код возвращает значение реестра с удаленного компьютера. Как отформатировать вывод в виде таблицы с двумя столбцами, содержащими такую ​​информацию, как ComputerName и RegistryValue. Примечание: RunspaceId не содержит информации RegistryValue.

$comps = "smzmi0020d", "smzmi0025d"
$block = { (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate' -name susclientid).susclientid }

PS C:\Windows\system32> invoke-command $comps -ScriptBlock $block | select susclientID, PSComputername

susclientID PSComputerName
----------- --------------
            smzmi0020d
            smzmi0025d

PS C:\Windows\system32> invoke-command $comps -ScriptBlock $block | select *

PSComputerName RunspaceId                           Length
-------------- ----------                           ------
smzmi0020d     1be1be2f-7e57-4833-81a0-6182c5ac3672     36
smzmi0025d     10e067da-06a0-4962-ae89-898aef9fe81c     36

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Я не могу воспроизвести в моей среде, но вы можете попробовать что-то вроде:

$Comps = "smzmi0020d", "smzmi0025d"

Invoke-Command -ComputerName $Comps -ScriptBlock {(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate' -name susclientid)} | Select-Object -Property SusClientID, PSComputerName

Примечание: Foreach-Object обрабатывает объекты последовательно, в то время как Invoke-Command делает это параллельно (32компьютеры одновременно по умолчанию). Следовательно, он должен быть намного быстрее!

Invoke-Command также повторно запускает параметр PSComputerName, который содержит имя компьютера, повторяющего вывод, поэтому с Select-Object в конце все будет в порядке. В конце концов вы можете направить вывод в | Format-Table -AutoSize.

0 голосов
/ 10 октября 2019

Блок возвращает строку только из-за .susclientid, поэтому | select susclientID не имеет смысла. Вы также можете сделать это и получить свойство susclientid, но вы также получите свойство runspaceid как обычно.

$block = { Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate | 
  select susclientid }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...