Запуск сценариев PowerShell на удаленном ПК

Я установил PS 1.0 на удаленный ПК (RPC001). Я использовал Windows Sysinternals инструмент PSExec.exe чтобы выполнить следующий процесс на пульте дистанционного управления:

 PSExec RPC001 -u myID -p myPWD PowerShell C:scriptStartPS.ps1 par1 par2

Я вижу PowerShell.процесс exe работает на удаленном ПК после этого, но на самом деле он ничего не делает, просто висит там. Я попытался поместить простой код "Write-Output/Host" в строку скрипта. Я запускаю тот же скрипт на пульте RTS, он там работает.

Не уверен, что я пропустил все остальное для запуска скрипта с помощью PSExec, или это PSExec.ограничение ехе. Я хотел бы запустить сценарий PS на удаленном, чтобы сделать что-то там локально (сжать некоторые файлы локально и удалить старые файлы) из моего ящика.

Я задал аналогичный вопрос в Stackoverflow:запустить удаленный процесс с помощью powershell. не предложил мне использовать PSExec. Это звучит как альтернативный способ решения проблемы. Однако, я не могу заставить его работать с PowerShell. Любой способ получить PS работает на удаленном ПК?

кстати, я не могу использовать PS 2.0, так как моя сеть не позволяет мне установить Windows XP SP3, который требуется для PS 2.0.

4 ответов


принятый ответ не работал для меня, но следующее:

>PsExec.exe \<SERVER FQDN> -u <DOMAIN\USER> -p <PASSWORD> /accepteula cmd 
    /c "powershell -noninteractive -command gci c:\"

пример здесь


после дальнейшего изучения инструмента PSExec, я думаю, что получил ответ. Мне нужно добавить опцию-i, чтобы сказать PSExec запустить процесс на удаленном в интерактивном режиме:

PSExec \RPC001 -i -u myID -p myPWD PowerShell C:\script\StartPS.ps1 par1 par2

без-i, powershell.exe работает на пульте дистанционного управления в режиме ожидания. Интересный момент заключается в том, что если я запускаю простую летучую мышь (без PS в bat), она отлично работает. Может быть, это что-то особенное для ПС? Добро пожаловать комментарии и объяснения.


можете ли вы попробовать следующее?

psexec \server cmd /c "echo . | powershell script.ps1"

принятый ответ не работает для меня, но это делает. Обеспечить скрипт в расположении (c:\temp_ ниже на каждом удаленном сервере. сервера.txt содержит список IP-адресов (по одному в строке).

psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"