psexec
выводит свои сообщения о состоянии на stderr , который присваивается переменной, такой как $result =
, не , поэтому эти сообщения по-прежнему выводятся на экран.
Переменные только захватывают stdout вывод из внешних программ, таких как psexec
, что в данном случае является выводом ipconfig
.
Следовательно, ответ на suppress stderr , который вы можете сделать с 2>$null
(2
- номер потока ошибок PowerShell, на который отображается stderr) - см. Перенаправление ошибки / вывода в NULL .
Обратите внимание, что это также подавит истинные сообщения об ошибках.
Кроме того, вызовы cmd /c
не нужны, поскольку вы можете использовать psexec
для прямого вызова других программ, если у вас правильно настроен путь.
Вместо этого:
$result = & cmd /c PsExec64.exe \\$Computer -s cmd /c "ipconfig"
Сделайте это:
$result = PsExec64.exe \\$Computer -s ipconfig 2>$null
Надеюсь, это поможет.