2017-01-09 17 views
1

何かを理解していません。私は後で私がXML文書からハッシュテーブルにそれらを追加してい

$ExtUtilities = @{} 

、外部ユーティリティの場所が含まれているハッシュテーブルを持っている

$ExtUtilities.essclient = $XmlDoc.config.local.setup.external.utility.essclient 
$ExtUtilities.lcm  = $XmlDoc.config.local.setup.external.utility.lcm 
$ExtUtilities.sqlclient = $XmlDoc.config.local.setup.external.utility.sqlclient 
$ExtUtilities.oraexport = $XmlDoc.config.local.setup.external.utility.oraexport 

すべての罰金ですが、私は$ヌルがあることに気づきました各エントリのテーブルで、彼らは$null sがCMDのinterpriterとして、これらのコマンドを実行している私をいじっている

Name       Value 
----       ----- 
sqlclient      {$null, $null, C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe, $null} 
oraexport      {$null, $null, $null, C:\app\client\epmadmin\product\12.1.0\client_1\BIN\exp.exe} 
essclient      {$null, C:\Oracle\Middleware\EPMSystem11R1\products\Essbase\EssbaseClient\bin\startMaxl.cmd, $null, $null} 
lcm       {C:\Oracle\Middleware\user_projects\Foundation1\bin\Utility.bat, $null, $null, $null}

どこから来ていることを確認していません先頭に$nullがあるコマンドは好きではありません。

誰もがなぜ$nullがあるのか​​説明できますか?

+1

あなたは私たちがあなたのXML文書がどのように見えるかを知らずに伝えることを期待するにはどうすればよいか、にそれをロードする方法'$ XmlDoc'? –

+0

私は単に $ xmlDoc = [xml](Get-Content -path Config.xml)のようなget-contentを実行するだけでXMLを読み込んでいますが、私はBriantistが正しいと思います。返信いただきありがとうございます。 – todd1215

答えて

3

元のXMLを見ることなく言い表せませんが、複数の要素が一致している可能性があります。 $XmlDoc.config.local.などの結果はおそらく配列を返し、値の一部は$nullです。

あなたは割り当て、このような何かするときにそれらをフィルタリングすることができる必要があります:のみ$trueに解決オブジェクトを割り当てます

$ExtUtilities.essclient = $XmlDoc.config.local.setup.external.utility.essclient | 
    Where-Object -FilterScript { $_ } 

を。

あなたが本当に配列をしたくない場合は、また、最初のものだけを得る:

$ExtUtilities.essclient = $XmlDoc.config.local.setup.external.utility.essclient | 
    Where-Object -FilterScript { $_ } | 
    Select-Object -First 1 
+0

ああ...意味があります。私はそれが$ xmlDocと関係があると思っていましたが、アイテムの種類ごとに$ nullのパターンが私を捨てました。私は他のフィルタリングなどを行う必要のない明示的なXMLパスを求めていたので、私は考えました。返信いただきありがとうございます。 – todd1215

関連する問題