2010-12-15 58 views
1

我有一個簡單的powershell腳本。它需要兩個參數。兩者都是採用字符串參數的方法(Get-ResourcePool)的一部分。從cmd調用具有許多參數的powershell腳本

如果我調用該函數定義的PowerShell腳本,像這樣:

functName CI *FMS 

這工作正常。

在PowerShell中的函數調用(和像這樣,因爲這個腳本會從外面叫):

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

我嘗試從Powershell的編輯,在那裏我有我需要的所有安裝snapins調用此方法,像這樣:

C:\Script.ps1 A "*s" 

其中scrpt是我的.ps1文件的名稱。有一個功能。但是,這會失敗,並顯示參數爲空或空的錯誤。

任何想法爲什麼?

編輯:

函數簽名是:

功能RevertToSnapshot($ otherarg,$通配符)

我在這裏使用通配符$: $ SearchString在= [System.String] ::的毗連(「*」, $ VMWildcard) 名稱$ SearchString(Name是Powercli中get-vm的參數)。

回答

5

此調用風格:

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

將導致只有一個參數傳遞給FUNCNAME - 單個陣列有兩個元素。您可能想要:

FuncName $args[0] $args[1] 

通常,使用PowerShell您可以使用空格分隔參數和無參數來調用cmdlet,函數,別名。調用.NET方法是此規則的一個例外,您必須使用parens和逗號分隔參數,例如:

[string]::Concat('ab','c') 
相關問題