xml - 将 xml 元素导入 powershell 变量

标签 xml powershell

我已经弄清楚如何使用变量之前的 [xml] 标记和 Get-Content 将 xml 文件导入 Powershell 变量,但填充每个变量在 Powershell 中,从新的 xml 格式变量中一次获取一个变量是一项艰苦的工作。

$variable = $xml.vars.Linux.variable1
$variable2 = $xml.vars.Linux.variable2

...等等。

是否有更短/更快的方法来导入该 xml 文件并设置与节点名称匹配的 Powershell 变量并使用关联的节点值填充这些变量?因此,我不必使用相应的命名 xml 节点专门填充每个 Powershell 值,我可以只使用 Powershell 变量,而无需填充它们的代码行?

我怀疑我可能需要某种循环...当前的 xml 结构是 3 层,第二层节点的类别名称,然后是内部节点的变量名称。例如:

<vars>
 <Windows>
  <Hostname>Contoso</Hostname>
  <IP_Address>192.168.1.1</IP_Address>
 </Windows>
 <Linux>
  <variable1>Yup</variable1>
  <variable2>Yessir</variable2>
 </Linux>
</vars>

谢谢!

最佳答案

您可以为特定节点下的每个元素创建一个变量,如下所示:

$xml.vars.Linux.ChildNodes | %{ New-Variable -Name $_.Name -Value $_.InnerText -PassThru}

您可以删除 -PassThru 开关以避免将变量输出到管道上。

关于xml - 将 xml 元素导入 powershell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221549/

相关文章:

c++ - QT中如何将xml节点数据转化为字符串

sql 仅在表存在的情况下从第一个数据库更新第二个数据库中的数据

powershell - 想将字节写入多个二进制文件

c# - 将类序列化为 XML 并包含 CDATA 部分时出现问题

xml - 与 JSON 和 XML 相比,为什么不使用 s 表达式?

azure - 获取 无法解析请求。 (错误代码 : InvalidRequestFormat) on Module Update-AzureRmVmss on PowerShell

powershell - powershell v2远程处理-如何启用未加密的流量

powershell - 在 PowerShell 中使用 Get-EventLog 远程查询多台服务器

c# - XML 批量更改类型十六进制

xml - 在 xslt 中添加前导零记录