web-dev-qa-db-ja.com

リモートPCでPowerShellスクリプトを実行する

PS 1.0をリモートPC(RPC001)にインストールしました。 Windows SysinternalsツールPSExec.exe を使用して、リモートで次のプロセスを実行しました。

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

その後、リモートPCでPowerShell.exeプロセスが実行されているのを確認できますが、実際には何もせず、ハングアップしているだけです。スクリプトに文字列「Write-Output/Host」の簡単なコードを入れてみました。私はRTSによってリモートで同じスクリプトを実行します。それはそこで機能します。

PSExecを使用してスクリプトを実行するために他に何かを見逃しているのか、それともPSExec.exeの制限なのかわかりません。私のボックスからリモートでPSスクリプトを開始して、ローカルで何かを実行します(ローカルでいくつかのファイルを圧縮し、古いファイルを削除します)。

Stackoverflowで同様の質問をしました: Powershellでリモートプロセスを実行ドン PSExecの使用を提案されました。問題を解決する別の方法のように思えます。ただし、PowerShellで動作させることはできません。 PSをリモートPCで動作させる方法はありますか?

ちなみに、私のネットワークではWindowsのインストールが許可されていないため、PS 2.0を使用できませんXP SP3、これはPS 2.0に必要です。

9
David.Chu.ca

PSExecツールについてさらに調査した後、私は答えを得たと思います。 PSExecにリモートでインタラクティブモードでプロセスを起動するように指示するには、-iオプションを追加する必要があります。

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

-iがない場合、powershell.exeはリモートモードで待機モードで実行されます。興味深い点は、単純なコウモリ(コウモリにPSなしで)を実行すると、正常に動作することです。これはPSケースにとって特別なものでしょうか?ようこそコメントと説明。

9
David.Chu.ca

受け入れられた答えは私にとってはうまくいきませんでしたが、以下はうまくいきました:

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

here の例

8

以下を試していただけますか?

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

受け入れられた答えは私にはうまくいきませんが、これはうまくいきます。次の場所にあるスクリプト(各リモートサーバーのc:\temp_。servers.txtにIPアドレスのリストが含まれていることを確認してください(1行に1つ))。

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