我的情况是有10 000个XML文件,然后是一个csv文件,其中包含每个xml文件的更多信息。我需要一个powershell脚本来引用csv文件中的文件名,并将其旁边的一个列中的信息添加到引用的XML文件中。
我不知道如何做到这一点。
答案 0 :(得分:1)
我们可以在PowerShell中轻松加载XML文件。想象一下名为Data.xml
的XML文件,如下所示:
<--.\Data.xml-->
<?xml version="1.0" encoding="utf-8"?>
<Data version="2.0">
<Roles>
<Role Name="ManagementServer" Value="NewManagementServer" />
<Role Name="ADServer" Value="NewADServer" />
<Role Name="ADServer" Value="NewADServer" />
</Roles>
<SQL>
<Instance Server="NewSQLServer" Instance="MSSQLSERVER" Version="SQL Server 2012">
<Variable Name="SQLAdmin" Value="Domain\NewSQlAdmin" />
<Variable Name="SQLUser" Value="domain\sqluser" />
</Instance>
</SQL>
</AllContacts>
</Data>
我们可以使用这些命令在PowerShell中加载文件。
$file = (get-content .\data.xml) -as [XML]
然后我们可以将XML文件视为一个对象,甚至可以像这样选择节点:
#Display some particular sub-nodes
$file.Data.Roles.Role
Name Value
---- -----
ManagementServer NewManagementServer
ADServer NewADServer
ADServer NewADServer
我们也可以添加节点!
#Create a new XML element
$newRole = $xml.CreateElement("Role")
#set the values
$newRole.SetAttribute("Name","MyNewElement")
$newRole.SetAttribute("Value","MyNewValue")
#add it to the collection
$file.Data.roles.AppendChild($newRole)
#save it
$file.Save('c:\temp.data.xml')
我还没有涉及如何从.csv文件中提取信息,但是一旦您提供其他信息我就可以更新。