【发布时间】:2020-03-16 20:57:23
【问题描述】:
我目前是系统集成学徒的第一年。因此,编程和脚本在我的日常生活中扮演了一个较小的角色。我提供这些信息是为了说明我的编程水平,或者说缺乏编程水平。
尽管如此,我的任务是编写一个 powershell 脚本,该脚本将从 csv 文件中收集信息,然后根据所述输入操作 xml 文件。
到目前为止,我的脚本能够读取 csv 文件并打开 xml 进行操作。 我的斗争在于所述xml文件本身的结构。结构和摘录如下
结构:
<UserIntentions mediaName="CODE\win_b64\renamed_file.media" mediaVersion="421">
<SetVariable name="component_one" value="true"/>
<SetVariable name="component_two" value="3DPASS_TOMEE_PORT"/>
<SetVariable name="component_three" value="CERTIFICATES_DIR"/>
代码:
[xml]$file = Get-Content -Path $PSScriptRoot"\req\targetfile_Template.xml"
$file.UserIntentions.SetVariable.Value = $value
如您所见,标签一遍又一遍地重复。 因此,至少据我了解,我无法使用上面显示的内容,因为我会立即更改所有值。
当然,我之前尝试过 google,但我遇到的所有示例都有更精确的 xml 结构,其中标签(?)没有加倍。
我需要能够更改按名称选择的各个条目。为此,我尝试使用 where-object,但没有任何效果,但出现错误。 然后,我尝试了以下方法:
if($file.UserIntention.SetVariable.name -eq $intention)
{$file.UserIntention.SetVariable.value = $value}
然而,这具有相同的结果,因为条件只需要满足一次就可以改变。
所以,我希望得到解释:如何更改上面结构中的单个值,按名称过滤?请记住,我以前从未使用过 xml,并且几乎没有接触过 powershell。
诚挚的问候,非常感谢
【问题讨论】:
标签: xml powershell