2016-05-26 1 views
2

このような話題はたくさんありますが、私の問題と関連するものは何も見つかりません。Powershell:invoke-commandと-filepathでパラメータをリモートに渡す方法は?

ローカルマシンに保存されているスクリプトを別のサーバーで実行するために、aを呼び出しています。 "configPath"変数を渡す以外はすべて意図どおりに動作します。これは私がスクリプトを開始する方法です -

. .\script1.ps1 -serverLocation 'serverNameHere' -username 'userNameHere' -configPath 'configPathHere' 

私は最初のスクリプトに渡す他のすべてのパラメータを正しく取得します。 configPathを 'filepath'の2番目のスクリプトに渡すことはありません。

どうすればこのパラメータを通過させることができますか?本当にありがとう。

答えて

1

script2.ps1には、パラメータを受け入れるブロックparam()を定義する必要があります。そして、それを与える名前で参照することができます。ブロックparam()を使用したくない場合は、$args[0]を使用してください。

+0

はい、私はこのプロセスですべてのスクリプトを制御/作成しました。私はなぜそれが第3位に記載されているのか混乱していますか?私はリモートサーバ上で開始されているスクリプトに引数を1つだけ渡しているので、-ArgumentList $ configPathではないでしょうか?私はあなたが名前を知らないことを意味することを理解しています - 私は他のスクリプトでそれをどのように呼びますか? args [0]か何か?また、それを呼び出すスクリプトのparam()リストにリストする必要がありますか?再度、感謝します。 – crystallinity

+0

私は3番目の位置にあります。これは、3番目の位置に3番目の位置が示されていますが、実際の位置は呼び出されたスクリプトのparamブロックで定義されている場所に基づいています注文)。 – briantist

+0

ああ、私は今起こっていることを見ると思います。 'script1.ps1'は' Invoke-Command'呼び出しを含み、 'script2.ps1'は別のスクリプトです。その場合、 'script2.ps1'では、パラメータを受け入れる' param() 'ブロックを定義する必要があります。そして、それを与える名前で参照することができます。 'param()'ブロックを使用したくない場合は、 '$ args'を使って動作するはずです。 – briantist

関連する問題