2012-01-23 6 views
0

これは簡単に行うことができますが、私はHPのチーム化ソフトウェアのエクスポート機能によって生成されたXMLファイルを編集するためのpowershellスクリプトの作成に問題があります。私は問題は、コンテンツだけがサブ要素である要素を作成することに起因すると信じています。InnerTextを使わないPowershell XML解析の問題?

私は間違った場所でAppendChildに苦労していて、vlan要素の下でInnerTextsは空です。誰かが、以下のxmlの4行を下のteam.xmlに追加するのに必要なpowershell xmlを手伝ってもらえますか?ここで

<vlan> 
    <property id='VlanId' value='3'/> 
    <property id='VlanName' value='MISC'/> 
</vlan> 

はteam.xmlの簡略内容です:複数のedits- ため

<?xml version="1.0" encoding="ISO-8859-1"?> 
<teamingconfig> 
<version UtilityVersion='9.90.0.17' ScriptVersion='3.1'/> 
<!-- <team> element 1 --> 
<team relnics='1 2'> 
<property id='TeamName' value='HP Network Team #1'/> 
<property id='OpMode' value='FailOnFault'/> 
<!-- <vlan> element 1 --> 
<vlan> 
     <property id='VlanId' value='1'/> 
     <property id='VlanName' value='MGMT'/> 
</vlan> 
    <!-- <vlan> element 2 --> 
<vlan> 
     <property id='VlanId' value='2'/> 
     <property id='VlanName' value='APPS'/> 
</vlan> 
</team> 
</teamingconfig> 

は申し訳ありませんが、私が欲しかったものを手に入れました。私は私のスクリプトの先頭に次のような行を追加する場合来るか少し

$vlan2=$xml.SelectSingleNode("//property[@value='407'] [@id='VlanId']") 
$vlan2.value="100" 

strange-新しい問題、構文:

write-host "Num Args:" $args.length 

をして、PS1に変数を渡す、それはを台無しに思えますSystem.object []にselectinglenodeという名前のメソッドが含まれていないことを示すSelectSingleNode?私はargsで$ xml変数に触れていません。私は基本的には、単にvlanidをコマンドライン引数にすることを試みています。私は関数を作成してparamを使用しようとしましたが、コードで同じ問題が発生します。

ありがとう - $ xmldata = xml ありがとうございます!

+1

あなたはすでに書いたPowerShellを投稿することができますか? – MrKWatkins

答えて

2

あなたは1のクローンを作成し、それを再度追加することができます

$vlan = $xml.SelectSingleNode("//vlan").clone() 
$vlan.property[0].value = "3" 
$vlan.property[1].value = "MISC" 
[void]$xml.SelectSingleNode("//team").AppendChild($vlan) 
$xml.save("test.xml") 
+0

これは私の質問に正確に答えるので素晴らしいです。 vlanID 1/MGMTを別のID /名前に編集するための信頼できる方法が必要な新しい問題が発生します。これはクローンの「テンプレート」になるからです。 – rismoney

+1

@ user1165300 - はい、それはあなたのサンプルXMLが示したものです。あなたが試したことを私たちに教えてください。あなたは今考えなければなりません。あなたが試したものであなたの質問を編集し、私は私の答えを更新します。 – manojlds

+0

@ user1165300 - 'SelectSingleNode'の出力を変数に代入し、それにプロパティを設定する必要があります。 – manojlds