将文件中的所有文本(通配符)替换为起始点Publisher =“{GUID}并以”结尾“

时间:2013-12-24 07:11:48

标签: powershell

所以每个文件都有一行

  

Publisher =“GUID here”

我想用简单的文字“TEXTHERE”(带引号)替换所有的guid (Powershell的)

这是我简化的内容;

 `

enter code here`$list = Get-ChildItem -Path:'C:\AppOutput\*allfiles.xml*' -Recurse
    $replacestring = 'APPXSIGNCERTIFICATE'
    $appxmltest = 'C:\AppOutput\app.xml'

ForEach ($file in $list)
        {

       (Get-Content $file) -replace "Publisher=""`*", 'Publisher="TEXTHERE"' | Set-Content     c:\test2.xml
       }

它仅取代发布者=“with Publisher =”TEXTHERE“{GUID}”

有什么建议吗?

我试图找到一种方法来告诉它Publisher =“启动以及介于那个和下一个之间的所有内容”

2 个答案:

答案 0 :(得分:5)

-replace使用正则表达式来匹配它应该替换的文本,所以尝试这样的事情:

-replace '(?<=Publisher=").*?(?=")', 'TEXTHERE'

答案 1 :(得分:2)

看起来你试图为你的匹配参数使用通配符语法。 -replace期待正则表达式。

试试这个:

(Get-Content $file) -replace 'Publisher=".*?"', 'Publisher="TEXTHERE"' | Set-Content c:\test2.xml

请参阅:

get-help about_regular_expressions