Как проверить подключение к удаленному компьютеру в powershell - PullRequest
1 голос
/ 01 февраля 2020

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

  1. Test-Connection бесполезен, поскольку отправляет только ping, однако, в пункте назначения может быть запущен Intel AMT и, следовательно, он отвечает на ping или может не работать служба winRM, поэтому это не дает никакой полезной информации.

  2. Test-WSMan должен проверить доступность Windows службы RM, но работает только в том случае, если работает WinRM, в противном случае (компьютер выключен или WinRM не запущен) выдает ошибку:

    Test-WSMan: клиент не может подключиться к пункт назначения указан в запросе. Убедитесь, что служба в месте назначения работает и принимает запросы. Обратитесь к журналам и документации для службы WS-Management, работающей в месте назначения, чаще всего IIS или WinRM. Если местом назначения является служба WinRM, выполните следующую команду в месте назначения для анализа и настройки службы WinRM: «winrm quickconfig». В строке: 2 символа: 1

    • Test-WSMan -ComputerName destinationcomputer
    • + CategoryInfo          : InvalidOperation: (destinationcomputer:String) [Test-WSMan], InvalidOperationException
      + FullyQualifiedErrorId : WsManError,Microsoft.WSMan.Management.TestWSManCommand
      

Итак, я попытался обернуть Test-WSMan в try-catch командах, но все равно выдает ошибку, на самом деле она не обнаруживается:

    Try {
         Test-WSMan -ComputerName destinationcomputer
    } catch {
         write-output "not working"}

Есть идеи, как это сделать? (я был бы счастлив с Test-WSMan, если бы я мог избавиться от ошибки и заставить ее возвращать true или false)

1 Ответ

1 голос
/ 01 февраля 2020

Тест $? после запуска test-wsman.

Test-WSMan destinationcomputer
if (! $?) { 
  'not working'
}

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

if (!(Test-WSMan destinationcomputer)){
  'not working'
}

См. также Проверьте, была ли выполнена команда успешно

Также в powershell 7:

Test-WSMan destinationcomputer || 'not working'
...