2017-05-05 10 views
1

私はpowershellを使い慣れていません。別のサーバで.exeをリモートで実行するpsスクリプトを書きます。Powershellコマンドは、iseで選択を実行したときにのみ動作します

iseで実行をクリックすると、スクリプトは何もしないように見えます。しかし、psスクリプトのコード行を右クリックすると、psコンソールとターゲットサーバ内で、各行のコードが動作することがわかります。

iseで実行スクリプトをクリックしたとき、またはコマンドラインからスクリプトを実行したときに、何が失われるのですか?私はこの上の任意のヘルプや指導に感謝

Enter-PSSession -ComputerName MyServer1 
D:\Somefolder\On\TargetServer\theremote.exe 
Exit-PSSession 

:ここ

は、スクリプトは基本的に次のようになります。

答えて

3

あなたを説明しましょう。

Enter-PSsessionは、基本的にリモートコンピュータとの対話型セッションを作成します。

セッションが作成されたら、インタラクティブがリモートコンピュータから結果を返すすべてのコマンドを実行できます。

あなたの仕事を完了させるにはinvoke-commandを使用してください。次のようになります。

Invoke-Command -ComputerName MyServer1 -ScriptBlock {& 'D:\Somefolder\On\TargetServer\theremote.exe'} 

デフォルトでは、Windows認証が使用されます。資格情報を指定する場合は、-Credentialスイッチを使用できます。

もう1つの方法は、最初にnew-pssessionを使用してリモートセッションを作成し、そのセッションを変数に格納することです。

Invoke-Command -ComputerName MyServer1 -ScriptBlock { param ($param1) & 'D:\Somefolder\On\TargetServer\theremote.exe' -something $param1 } -ArgumentList "param1Value" 
: 最後に、あなたがコメントを1として -SessionName

として、Invoke-Commandコマンドでセッションを指定することができ、これはあなたが(私は唯一の1パラメータここで渡しています)パラメータを渡すことができますどのようにです

希望します。

+0

ありがとうございました。私はこれを試してみましょう。私はまた、他のサーバー上のexeにパラメータを送信する必要があります。あなたのコードを使ってどうすればいいですか? – tmontez36

+0

パラメータの場合は、invoke-commandで引数リストの切り替えを使用できます。このパラメータは、スクリプトブロック内でparamとしてアクセスできます。もしあなたが私がパラメータを使って答えを編集できるのであれば –

+0

はい、答えを編集して、どのようにパラメータを使うことができるかを教えてください。 – tmontez36

関連する問題