2016-03-15 44 views
2

我想創建一個接受動態參數的powershell腳本,我也想遍歷它們。如何將動態參數傳遞給PowerShell腳本並遍歷列表?

例如: 我以下面的方式調用powershell腳本。

ParametersTest.ps1 -param1 value1 -param2 value2 -param3 value3 

,我應該能夠訪問腳本中我PARAMS如下:

for($key in DynamicParams) { 
    $paramValue = DynamicParams[$key]; 
} 

反正有沒有做到這一點在PowerShell中?提前致謝。

回答

2

沒有像這樣的內置內容(實質上,你需要在沒有這些參數的任何定義的情況下解析PowerShell參數)。不過,你可以模仿它。通過$args,您可以將函數的所有參數作爲數組獲取。然後,您可以重複這一點,它分解成名稱和值:

$DynamicParams = @{} 
switch -Regex ($args) { 
    '^-' { 
    # Parameter name 
    if ($name) { 
     $DynamicParams[$name] = $value 
     $name = $value = $null 
    } 
    $name = $_ -replace '^-' 
    } 
    '^[^-]' { 
    # Value 
    $value = $_ 
    } 
} 
if ($name) { 
    $DynamicParams[$name] = $value 
    $name = $value = $null 
} 

遍歷動態參數,你可以這樣做你寫

foreach ($key in $DynamicParams.Keys) { 
    $value = $DynamicParams[$key] 
} 

(注意foreach,不for,後者其中不能像你寫的那樣工作)或者只是在散列表上正常迭代:

$DynamicParams.GetEnumerator() | ForEach-Object { 
    $name = $_.Key 
    $value = $_.Value 
} 
相關問題