2017-03-31 194 views
1

是否有可能使用一個變量的值作爲參數的名稱,像這樣的東西(但不完全是這樣,因爲它不工作):變量作爲參數名稱

$processData = Split-Path $processData -($variable.split) 

$variable是實際上是一些XML,而split屬性可以是「父」或「葉」。我可以使用這種方法,它工作正常:

switch ($variable.split) { 
    parent { 
     $processData = Split-Path $processData -Parent 
    } 
    leaf { 
     $processData = Split-Path $processData -Leaf 
    } 
} 

但直接使用該變量會更優雅。

回答

2

Splatting應該做你想要什麼:

$params = @{ 
    Path = $processData 
    $variable.split = $true 
} 
$processData = Split-Path @params 

不是真的更少的代碼比switch聲明,雖然:

$processData = switch ($variable.split) { 
    parent { Split-Path $processData -Parent } 
    leaf { Split-Path $processData -Leaf } 
} 
+0

我想你可以使用'調用,Expression'但也可能有消極影響。 – Matt

+0

正確。使用'Invoke-Expression'很容易讓你容易受到命令注入的影響。 –