2011-07-14 15 views
0

私は、コマンドレットに渡す必要のあるパラメータを保持するXMLファイルからハッシュテーブルを作成する簡単な関数を書きました。 私のXML-ファイルは、次のようになります。Powershell:スクリプトブロックでスプラットを使用していますか?

My機能は、このようになります
<params> 
    <Parameter> 
     <Name>After</Name> 
     <Value>(get-date).adddays(-7)</Value> 
    </Parameter> 
    <Parameter> 
     <Name>Log</Name> 
     <Value>System</Value> 
    </Parameter> 
</params> 

PS > $h = create-paramtable -configfile c:\tmp\params.xml ; get-eventlog @h 

I:私は、スプラット・オペレーターでハッシュテーブルを返して使用してい

function Create-ParamTable { 
param ([string]$ConfigFile,[string]$Root = "params", [string]$Child = "Parameter") 

$hash = @{} 
[xml]$config = get-content $ConfigFile 
foreach ($param in $config.$root.$child) { 
    $hash.add($param.name,$param.value) 
} 
return $hash 
} 

get-dateのような他のコマンドレットを使用していくつかの値を計算するためにscriptblocksをパラメータ値として渡すことができるようにしたい。
例:get-eventlogのパラメータをxml-config-fileに保存したいが、過去7日間のログを常に保持したい。

スプラットを介してコマンドレットに渡すときに値を格納する必要がありますか?

答えて

1

あなたはハッシュテーブルにそれらを貼り付ける前に、パラメータ値を評価する必要があります。このようなもの。

foreach ($param in $config.$root.$child) { 
    $hash.add($param.name,(Invoke-Expression $param.value)) 
} 
0

これは、限られたテストで私の仕事:

$hash.add($($param.name),$($param.value)) 
関連する問題