私は数週間見て、他の人と私と一緒に研究していましたが、これに対する答えは見つかりませんでした。リモートサーバー上でリモートpowershellスクリプトを実行
私はサーバー1に存在し、特定の資格情報を使用してサーバー1で実行する必要があるスクリプトを持っています。究極の解決策は、ファイルの解読に役立ちます。特定のサーバー上の特定のユーザーとしてスクリプトを実行する必要があります。これは、キーペアがそのサーバー上のユーザーのキーリングにあるためです。
より大きなプロセスの一部としてサーバー2からスクリプトを呼び出したいとします。サーバ2は、以下の流れを持つSQL仕事をしているジョブの
- ステップ1は、ファイルをダウンロードするためにPowerShellスクリプトを使用するジョブの
- ステップ2復号化するために、サーバ1上でスクリプトを実行する必要があります
- ジョブのステップ3で、powershellスクリプトを実行してファイルの属性(前回の日付、ファイルサイズを昨日と比べてなど)を確認します。
- ステップ4つのジョブがログファイルを復元します
サーバー1のスクリプトは問題なくローカルに実行され、予期した結果が得られます。サーバー2にサーバー1のスクリプトを実行させようとすると、私は何の成功もしていません。実際に働いていないものを見つけるためにできるだけシンプルになるために、私はシンプルな一連のスクリプトを思いつきました(下記参照)。
- サーバー1(ファイルが物理的に存在する場所)でスクリプト1を実行すると、 は正常に動作します。テキストファイルは、ファイル内に「hello world」と表示されます。
- サーバ2でスクリプト2を実行すると(ファイルを保存していないため、 はISEウィンドウで実行されただけです)、エラーまたは警告なしで実行されます。 書き込むべきファイルは存在しませんサーバー1(または サーバー2 - それは必要ではありませんが、とにかく確認するためにチェックしました)。
私はどのような種類の力士達でもありません - それは非常に明白なことであれば、今私は謝罪します。 :)
#-------------------------------------
# script 1
# this script lives on server 1
# file name: c:\deleteme\helloworld2.ps1
$CMD = Invoke-Expression " `"hello world`" >> C:\deleteme\helloworld.txt"
Invoke-Command -ScriptBlock { $CMD }
#-------------------------------------
# script 2
# this script is executed on server 2 and attempts to execute the script on server 1
$session = New-PSSession -ComputerName "SERVER01.lahcg.com" #-Credential $username
$CMD = "Invoke-Command -ScriptBlock { powershell.exe `"C:\deleteme\helloworld2.ps1`" } "
#write-output $CMD
Invoke-Command -Session $session -ScriptBlock { $CMD }
Remove-PSSession $session
環境情報:
- サーバー1:PowerShellの2でのWindows Server 2008 R2の標準
- サーバー2:のWindows Server PowerShellの4と
エキストラ2012 R2 Datacenterのノート
- 私は可能なリモートセットOKを持っています...私は以前研究していたことがわかりました。
- 私はPowershellの異なるバージョンを使用していますが、サーバー1のスクリプトがローカルでokを実行しているため、問題ではないと思いました。
- 私は別のスクリプトで作業するための資格を取得しました。だから私はこの投稿でそれについて質問していません。私はスクリプトに残し、参考にしてコメントアウトしました。
Invoke-Commandセッション$セッション-ScriptBlock {Invoke-Expression $ using:CMD} ' – BenH
この変更を行い、サーバー1のスクリプトは実行されませんでした(テキストファイルは作成されませんでした)。 invoke-expression部分を二重引用符で囲む必要がありましたが、それはあなたが話している内容を変えるべきではありません。エラーなしで正常に実行されましたが、テキストファイルは作成されませんでした。 –