2016-05-25 44 views
0

我有一個腳本,顯示一個圖形用戶界面,並通過卸載英國媒體報道並安裝flash,java,瀏覽器等常用的東西來幫助設置新的PC。有複選框和幾個文本框。我已經包含了爲某些客戶提供「預設」功能的能力。預設是一個下拉列表,選擇名稱,並自動填充框。預設信息當前位於CSV文件中,但我正在轉移到XML。該腳本允許用戶通過GUI窗口創建新的預設並修改現有預設。要修改,選擇所有需要的選項,要修改的公司從下拉列表中選擇,用戶單擊「保存」以更新文件中的信息。這適用於CSV,但我無法弄清楚如何修改XML中的現有預設。如何使用PowerShell修改現有的XML數據?

下面是我提到的GUI框的截圖,因此更容易可視化。

的XML預置信息看起來像這樣...

<Customers> 
<Name>Company Name</Name> 
<Presets Option1="TRUE" Option2="TRUE" Option3="" Option4="TRUE" /> 

<Name>Company Name 2</Name> 
<Presets Option1="" Option2="" Option3="TRUE" Option4="TRUE" /> 
</Customers> 

等等...

如何採取從GUI複選框和文本信息和修改某個特定公司的預設數據?

我一直在嘗試使用類似的方式使用索引編號,我會將信息填充到GUI中,但我沒有任何運氣。

下面是指數代碼...

$company = $companybox.SelectedItem 
$indexname = $CustomersXML.Customers.Name 
$index = [array]::IndexOf($indexname,$company) 
If ($customersxml.customers.presets.Uninstall[$index] -eq "True") { $uninstallbox.checked = $True }; 
+0

這將是更簡單的選擇預設的一家名爲如果你改變了XML格式稍有即增加一個包含客戶元素包含名稱和預設,即 ' 等等 <預置... /> ... ' 然後您可以使用XPath來選擇名稱與公司名稱匹配的Customer/Presets元素 – jjee

回答

0

$x = [xml]'<Customers><Customer><Name>one</Name><Presets A=""/></Customer><Customer><Name>two</Name><Presets A=""/></Customer></Customers>' $customerName = 'one' $x.SelectSingleNode('//Customer[Name = "' + $customerName + '"]/Presets').SetAttribute('A', 'newvalue2')