Запустить сценарии PowerShell на удаленном ПК
-
21-09-2019 - |
Вопрос
Я установил PS 1.0 на удаленном ПК (RPC001). я использовал Windows Sysinternals Tool psexec.exe Чтобы выполнить следующий процесс на пульте:
PSExec \\RPC001 -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Я вижу процесс PowerShell.exe, работающий на удаленном ПК, но на самом деле он ничего не делает, просто висят там. Я попытался поместить простой код «запись/хост» строки в сценарии. Я запускаю тот же сценарий на пульте от RTS, он там работает.
Не уверен, что я пропущу что -то еще, чтобы запустить скрипт, используя Psexec, или это ограничение psexec.exe. Я хотел бы запустить скрипт PS на пульте дистанционного управления, чтобы сделать что -то там локально (сжатие некоторых файлов локально и удалить старые файлы) из моего поле.
Я задал аналогичный вопрос в Stackoverflow: Запустите удаленный процесс PowerShell. Дон предложил мне использовать Psexec. Это звучит как альтернативный способ решить проблему. Тем не менее, я не могу заставить его работать с PowerShell. Любой способ заставить PS работать на удаленном ПК?
Кстати, я не могу использовать PS 2.0, поскольку моя сеть не позволяет мне устанавливать Windows XP SP3, что требуется для PS 2.0.
Решение
После дальнейшего изучения инструмента Psexec я думаю, что получил ответ. Мне нужно добавить опцию -i, чтобы сказать Psexec для запуска процесса в удаленном в интерактивном режиме:
PSExec \\RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2
Без -I PowerShell.exe работает в режиме удаленного в режиме ожидания. Интересно, что если я запускаю простую летучую мышь (без PS в летучей мыши), это работает нормально. Может, это что -то особенное для корпуса PS? Приветствующие комментарии и объяснения.
Другие советы
Принятый ответ не сработал для меня, но следующее сделало:
>PsExec.exe \\<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd
/c "powershell -noninteractive -command gci c:\"
Пример от здесь
Вы можете попробовать следующее?
psexec \\server cmd /c "echo . | powershell script.ps1"
Принятый ответ не работает для меня, но это так. Убедитесь, что скрипт в местоположении (C: temp_ ниже на каждом удаленном сервере. Servers.txt содержит список IP -адресов (один на строку).
psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"