2009-11-23 4 views
5

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

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

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

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

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

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

ответ

6

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

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

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

+0

Как я могу получить для этого 'Start-процесса с использованием Psexec". wusa.exe "-ArgumentList" $ W2K12/quiet "-Wait' – Dotnet

2

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

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

Я думаю, что вам не хватает всего пути C: \ script \ StartPS.ps1 – toxicate20

5

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

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

Пример из here

+0

Такая же проблема ... принят и возвратил код ошибки 0, но ничего не сделал, в то время как ваше решение сработало – SteveC

+1

У меня есть «powershell -noninteractive -file C: \ temp \ scripts.ps1», который работает для меня (принятый ответ не был). – kafka

+0

@kafka Где находится ваш scripts.ps1? Я пытаюсь получить скрипт работает удаленно, но безрезультатно. – null

0

Принято ответ не работает для меня, но это делает. Убедитесь, что сценарий в месте (с:. \ Temp_ ниже на каждом удаленном сервере servers.txt содержит список IP-адресов (по одному на каждой строке)

psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1" 
Смежные вопросы