2010-12-15 8 views
1

私は単純なpowershellスクリプトを持っています。 2つのパラメータが必要です。両方とも、文字列引数を取るメソッド(Get-ResourcePool)の一部です。正常に動作しますcmdからたくさんのargsを含むpowershellスクリプトを呼び出す

functName CI *FMS 

:私はそうのように、PowerShellスクリプトに関数定義を呼び出す場合

(このスクリプトは外部から呼び出されますので、そのようにして)PowerShellで関数呼び出しがある:

FuncName $($args[0], $args[1]) 

私は私が必要SNAPINSがすべてインストールされているPowerShellのエディタからこれを呼び出そうと、 like:

C:\Script.ps1 A "*s" 

ここで、scrptは自分の.ps1ファイルの名前です。 1つの機能があります。ただし、これは、引数がnullまたは空であるというエラーで失敗します。

なぜでしょうか?

EDIT:

関数シグネチャは次のとおりです。

関数RevertToSnapshot($ otherarg、$ワイルドカード)私がここで$ワイルドカードを使用する

: $ searchStringの= [可能System.String] ::連結方式の( "*"、 $ VMWildcard) 名前$ SearchString(名前はpowercliのget-vmのパラメータです)。

答えて

5

この呼び出しスタイル:

FuncName $($args[0], $args[1]) 

がFUNCNAMEに渡されたただ一つの引数になります - 2つの要素を持つ単一のアレイ。あなたはおそらくしたい:

一般に
FuncName $args[0] $args[1] 

、PowerShellをしてあなたがスペースで区切られた引数なし括弧を使用して、コマンドレット、関数、エイリアスを呼び出します。このルールの例外として、括弧やカンマを使用して引数を区切る必要がある場合など、.NETメソッドの呼び出しがあります。

[string]::Concat('ab','c') 
関連する問題