Ваша проблема в
-replace '(<Property Name=""Version"">(.*?)</Property>)', "<Version></Version>"
Вы заменяете полный тег пустым тегом.Я предполагаю, что вы хотите использовать захваченную группу в качестве замены:
-replace '(<Property Name=""Version"">(.*?)</Property>)', '<Version>$2</Version>'
Кроме того, вы, вероятно, использовали двойные кавычки в регулярном выражении ранее, потому что там есть ""
.Скорее всего, это ничего не будет соответствовать, потому что теперь он ищет две двойные кавычки подряд.
Еще одна вещь, вы, вероятно, хотите заменить все сразу, поэтому используйте это возможно:
-replace '<Property Name="([^"]+)">([^<]+)</Property>', '<$1>$2</$1>'
Однако этого недостаточно:
PS> $xml -replace '<Property Name="([^"]+)">([^<]+)</Property>', '<$1>$2</$1>'
<Version>0</Version>
<Property Name="Qualifiers" />
<Level>0</Level>
<Task>14339</Task>
<Opcode>0</Opcode>
<Keywords>-9218868437227405312</Keywords>
<RecordId>57963203</RecordId>
<ProviderName>Microsoft-Windows-Security-Auditing</ProviderName>
Как видите, Qualifiers
все еще не изменился.Итак, другая замена:
-replace '<Property Name="([^"]+)"\s*/>','<$1/>'
выглядит лучше
PS> $xml -replace '<Property Name="([^"]+)">([^<]+)</Property>', '<$1>$2</$1>' -replace '<Property Name="([^"]+)"\s*/>','<$1/>'
<Version>0</Version>
<Qualifiers/>
<Level>0</Level>
<Task>14339</Task>
<Opcode>0</Opcode>
<Keywords>-9218868437227405312</Keywords>
<RecordId>57963203</RecordId>
<ProviderName>Microsoft-Windows-Security-Auditing</ProviderName>