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に必要です。
PSExecツールについてさらに調査した後、私は答えを得たと思います。 PSExecにリモートでインタラクティブモードでプロセスを起動するように指示するには、-iオプションを追加する必要があります。
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:\"
here の例
以下を試していただけますか?
psexec \\server cmd /c "echo . | powershell script.ps1"
受け入れられた答えは私にはうまくいきませんが、これはうまくいきます。次の場所にあるスクリプト(各リモートサーバーのc:\temp_。servers.txtにIPアドレスのリストが含まれていることを確認してください(1行に1つ))。
psexec @servers.txt -u <username> cmd /c "powershell -noninteractive -file C:\temp\script.ps1"