Powershell命令-如果XML的特定节点中不存在,则添加属性

问题描述 投票:0回答:1
<APPPOOL APPPOOL.NAME="Classic" RuntimeVersion="v2.0" state="Started">
<add name="Classic" autoStart="true" managedRuntimeVersion="v2.0">
<APPPOOL APPPOOL.NAME="GetServiceDet" RuntimeVersion="v2.0" state="Started">
<add name="GetServiceDet" autoStart="true">
  • 我的文件有很多行以单词“ add name”开头。
  • 我想检查这些行是否具有字符串“ managedRuntimeVersion”。
  • 如果不存在,那么我需要将managedRuntimeVersion =“ v2.0”添加到那条线。

预期结果如下

<APPPOOL APPPOOL.NAME="Classic" RuntimeVersion="v2.0" state="Started">
<add name="Classic" autoStart="true" managedRuntimeVersion="v2.0">
<APPPOOL APPPOOL.NAME="GetServiceDet" RuntimeVersion="v2.0" state="Started">
<add name="GetServiceDet" autoStart="true" managedRuntimeVersion="v2.0">

我已经尝试使用以下脚本..但是结果..仅给出了具有“添加名称”的行]]

$sfile="C:\Users\subash.s\Desktop\backup\pool.xml"
(((gc "$sfile") | Select-String -Pattern "add name" | 
select-string -notmatch "managedRuntimeVersion") -replace '>',' managedRuntimeVersion="v2.0">') | 
Set-Content "$sfile"

使用以上脚本。我得到了低于结果的结果。

<add name="Classic" autoStart="true" managedRuntimeVersion="v2.0">
<add name="GetServiceDet" autoStart="true" managedRuntimeVersion="v2.0">
    
[[[]
string powershell replace find add
1个回答
0
投票
为了皮特的缘故,配置文件是XML,而不是文本文件!将其编辑为[[作为XML文档,您将省去很多麻烦。
© www.soinside.com 2019 - 2024. All rights reserved.