web-dev-qa-db-ja.com

PowerShellでXMLノードの値を抽出できません

Xmlファイルから情報を抽出し、必要に応じてアプリプールを更新/作成しようとしています。これが私が読んでいるxmlです:

<?xml version="1.0" encoding="utf-8"?>
<appPool name="MyAppPool">
  <enable32BitAppOnWin64>true</enable32BitAppOnWin64>
  <managedPipelineMode>Integrated</managedPipelineMode>
  <managedRuntimeVersion>v4.0</managedRuntimeVersion>
  <autoStart>true</autoStart>
</appPool>

これが私がそれでやろうとしていることです:

#read in the xml
$appPoolXml = [xml](Get-Content $file)

#get the name of the app pool
$name = $appPoolXml.appPool.name

#iterate over the nodes and update the app pool
$appPoolXml.appPool.ChildNodes | % {
     #this is where the problem exists
     set-itemproperty IIS:\AppPools\$name -name $_.Name -value $_.Value
}

$_.Nameはノードの名前を返します(つまり、enable32BitAppOnWin64)は正しいですが、.Valueプロパティは何も返しません。必要なデータを抽出するにはどうすればよいですか?

19
Micah

正解:

$_.'#text'ではなく$_.Valueが必要です。

System.Xml.XmlElementオブジェクトのInnerTextプロパティを使用するこれも考慮してください。

$ xml.appPool.ChildNodes | %{$ 。Name; $。InnerText};

22
Trevor Sullivan