Я пытаюсь использовать встроенные возможности параллельной обработки Invoke-Command
, чтобы я мог быстро сканировать сотни машин для установки Office 365 (обнаруживая расхождения в отчетах SCCM). Однако, когда Get-ItemProperty
не может найти раздел реестра, я не уверен, как зафиксировать тот факт, что на машине нет O365.
Например;
<some list of machines>.txt contains
computer1
computer2
computer3
$Computers = Get-Content .\<some list of machines>.txt
Invoke-Command -ComputerName $Computer -ScriptBlock {(Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\O365ProPlusRetail*)} -ErrorAction SilentlyContinue -ErrorVariable Problem | select pscomputername, DisplayName, DisplayVersion
... работает очень быстро и перечисляет все машины с O365 и версией. Замечательно. Но отсутствует каждая машина, на которой НЕ установлен O365. То есть, если «computer2» в приведенном выше списке не имеет O365, вывод показывает:
PSComputerName DisplayName DisplayVersion
-------------- ----------- --------------
computer1 Microsoft Office 365 ProPlus - en-us 16.0.9226.2114
computer3 Microsoft Office 365 ProPlus - en-us 16.0.9226.2114
Любые идеи о том, как я могу сохранить параллельную обработку и получить вывод, подобный следующему?
PSComputerName DisplayName DisplayVersion
-------------- ----------- --------------
computer1 Microsoft Office 365 ProPlus - en-us 16.0.9226.2114
computer2
computer3 Microsoft Office 365 ProPlus - en-us 16.0.9226.2114