[英]Powershell Script for finding and replacing values in an XML file matching values in CSV file as parameters
I'm starting with powershell and i need some help for deploy script which one is changing values in config file (xml).我从 powershell 开始,我需要一些帮助来部署脚本,其中一个正在更改配置文件 (xml) 中的值。 All settings values are in csv file:
所有设置值都在 csv 文件中:
ID,CountryCode,LanguageCode,SiteID,SiteName 00000001,1,us001,01,site1 00000002,1,us001,01.1,site1.1 00000003,2,fr002,02,site2 00000004,3,uk003,03,site3 00000005,4,de004,04,site4 00000006,4,de004,04.1,site4.1
ID is unique in local computer registry, created by deployed app ID 在本地计算机注册表中是唯一的,由部署的应用程序创建
HKEY_LOCAL_MACHINE\SOFTWARE\EDITOR\APP ID reg_sz 00000001
Config xml for this app need to be updated, i'm trying to do it by powershell此应用程序的配置 xml 需要更新,我正在尝试通过 powershell 来完成
<?xml version="1.0" encoding="utf-8"?>
<LocalSetting xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CountryCode>1</CountryCode>
<LanguageCode>0001</LanguageCode>
<SiteID>000000</SiteID>
<SiteName>test</SiteName>
this is a part of powershell code这是 powershell 代码的一部分
$csv = Import-Csv 'C:\test\testvaluesFile.csv' | Select-Object "ID","CountryCode","LanguageCode","SiteID","SiteName"
$XMLpath = ("C:\test\testconfigFile.xml")
$XMLcontents = [XML] (Get-content $XMLpath)
$nodes = $XMLcontents.SelectNodes("/LocalSetting/CountryCode","/LocalSetting/LanguageCode","/LocalSetting/SiteID","/LocalSetting/SiteName")
$ID = (Get-ItemProperty "HKLM:\SOFTWARE\EDITOR\APP").ID
foreach($row in $csv) {
foreach($node in $nodes) {
if ($ID -eq $row.ID) {
$node.SetAttribute = $row.$nodes
}
}
}
$xml.Save("C:\test\testconfigFile.xml")
Thanks in advance提前致谢
This works这有效
$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
$csv = Import-Csv '$scriptPath\testvaluesFile.csv'
$XMLpath = ("$scriptPath\testconfigFile.xml")
$XMLcontents = [XML] (Get-content $XMLpath)
$node1 = $XMLcontents.SelectNodes("/CountryCode")
$node2 = $XMLcontents.SelectNodes("/LanguageCode")
$node3 = $XMLcontents.SelectNodes("/SiteID")
$node4 = $XMLcontents.SelectNodes("SiteName")
$ID = (Get-ItemProperty "HKLM:\SOFTWARE\EDITOR\APP").ID
if($csvitem.ID -eq $CountryCode) {
foreach($individual1 in $Node1)
{
$CountryCode = $csvitem.CountryCode
$individual1.'#Text' = "$CountryCode"
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.