2

私は以下のようなxmlファイルを持っています。

<Parameters>
  <Parameter IsEncrypted="False">
    <ParameterName>pRdGpInstallOptions</ParameterName>
    <ParameterValue>Custom</ParameterValue>
  </Parameter>
  <Parameter IsEncrypted="False">
    <ParameterName>pRdAccept</ParameterName>
    <ParameterValue>true</ParameterValue>
  </Parameter>
  <Parameter IsEncrypted="False">
    <ParameterName>pCboEditSQLServer</ParameterName>
    <ParameterValue>MachineName\SQLEXPRESS</ParameterValue>
  </Parameter>
</Parameters>

ここにコピーしたノードはごくわずかです。実際には、実際のファイルには数百のパラメータノードが含まれている可能性があります。

インデックスは任意の順序で表示される可能性があるため、ハードコーディングすることはできません。パラメータ名に関連付けられているSQLinstance名のパラメータ値を取得しようとしています"pCboEditSQLServer"

PowerShellを使用してこの値を取得したいと思います。この動的xmlファイルを解析する方法は?

4

2 に答える 2

9
$sql = $xml.Parameters.Parameter | Where-Object {$_.ParameterName -eq 'pCboEditSQLServer'}
$sql.ParameterValue

MachineName\SQLEXPRESS  

xpathを使用した別のオプション(より高速なはずです)は次のとおりです。

$path = "/Parameters/Parameter[ParameterName='pCboEditSQLServer']/ParameterValue"
$xml.SelectSingleNode($path).'#text'

そして、Select-Xmlコマンドレットがあります:

$sql = $xml | Select-Xml -XPath $path 
$sql.Node.'#text'
于 2012-07-03T11:44:35.640 に答える
3

XMLを読む:

$xml = [xml](gc test.xml -Encoding utf8)

そして、オブジェクトモデルを使用してデータを取得します。

$xml.Parameters.Parameter | ? { $_.ParameterName -eq "pCboEditSQLServer" } | Select-Object -Property ParameterName, ParameterValue

于 2012-07-03T11:48:40.037 に答える