2017-10-07 12 views
1

私はpowershellについてはあまりよく分かりませんが、私はpowershellから別のスクリプトを実行したいと思います。私はPowerShellで多くのことを試してみましたが、何も働いていない

MY_PARAM=$1 
shift 
python otherscript.py "[email protected]" 

:bashで、私はそれを(簡体字)、この方法でやっています。私のpythonスクリプトでは、最初の引数(またはさまざまなエラーメッセージ)として、 "System.Object[]"(または "System.Collections.Generic.List`1[System.Object]")またはすべての引数を単一の文字列にラップしています。

  • python otherscript.py $args
  • Invoke-Expression "python otherscript.py $args"
  • をそして$argsの代わりに、私はまた、このための適切な構文は何$MyInvocation.Lineまたは$MyInvocation.UnboundArguments

を使用して試してみました:私が試してみましたか?

アップデート1

Mathias R. Jessenとしてコメント、私が期待するようpython otherscript.py $args作品で、「グローバルスコープ」からPythonスクリプトを呼び出します。

私は実際にやろうとしています何を、関数内からの私のPythonスクリプトを呼び出すことです:

param (
    [string]$command = "" 
) 

function Invoke-Other() { 
    python otherscript.py $args 
} 

switch ($command) { 
    "foo" { 
     Invoke-Other $args 
    } 
} 

私はシングル、「ラップ」引数「バーバズ」を取得するときにこれは、設定され、私は.\myscript.ps1 foo bar bazと私のpowershellスクリプトを呼び出します。

+1

'pythonのotherscript.py $ args'私にとって素晴らしい作品:関数への個別の引数として渡されたスクリプトの引数リストを持っている

使用splatting 、Win10)。 PowerShellスクリプトをどのように起動していますか、どの引数を渡していますか? –

答えて

1

Invoke-Other $argsを呼び出すと、引数リストは単一(配列)引数として渡されるため、すべてのスクリプト引数は関数内の$args[0]の入れ子配列として終了します。関数内外の$args.Countの値を確認することで確認できます。関数の引数リストでPythonスクリプトを呼び出すと、ネストした配列が文字列に変換されます。 PowerShellの(PS 5.1、のpython 3.6から呼び出されたとき

Invoke-Other @args 
関連する問題