Запуск PsExec.exe на удаленном ПК - PullRequest
0 голосов
/ 01 ноября 2018

У меня есть сценарий PowerShell, который настраивает WinRM на наших удаленных серверах при запуске от учетной записи локального пользователя. Однако мне нужно загрузить скрипт в TFS и заставить каждый хост самостоятельно запускать скрипт.

Скрипт проверяет, настроен ли WinRM. Если это не так, то он проверяет, существует ли путь C: \ PSTools \ PsExec.exe. Если путь существует, необходимо настроить WinRM с помощью:

$configure = (C:\PSTools\PsExec.exe \\$hostname -s winrm.cmd -q 2> $null)

Однако вышеприведенное приводит к ошибке

Термин «C: \ PSTools \ PsExec.exe» не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.

Я знаю, что файл там, так что я не уверен, что я делаю здесь неправильно. Другие примеры, которые я видел, используют либо psexec отдельно, либо ./PsExec.exe, но ни один из них не работает.

Любой совет приветствуется, спасибо.

1 Ответ

0 голосов
/ 01 ноября 2018

Хотя это не отвечает, почему psexec.exe не работает (хотя я подозреваю, что это потому, что файл на самом деле не существует), вы можете использовать WMI для включения WinRM вместо:

([wmiclass]"\\$hostname\root\cimv2:win32_process").
    Create('powershell "Enable-PSRemoting -Force -SkipNetworkProfileCheck"')

и для удаленного перезапуска службы (даже если Enable-PSRemoting обрабатывает это):

$svc = [wmi]"\\$hostname\root\cimv2:win32_service.Name='winrm'"
$svc.StopService()
$svc.StartService()
...