我的任务是编写一个PowerShell脚本,该脚本将进行MBSA扫描并下载并安装所有丢失的补丁程序。
我能够生成此类报告并将其另存为.xml文件。这是此报告的一小部分:
我想提取<DownloadURL>
和</DownloadURL>
之间的所有URL,但是我的代码不起作用:
Select-String -Path "C:\Users\AAA\Desktop\results1.xml" -Pattern '(?<=DownloadURL>).*?(?=<\Q/\EDownloadURL)' -AllMatches |
% { $_.Matches } |
% { $_.Value } > "C:\Users\AAA\Desktop\results1.txt"
我收到以下错误:
选择字符串:解析“(?<= DownloadURL>)。*?(?= <\ Q / \ EDownloadURL)”-无法识别的转义序列\ Q。
我尝试了(?=<\\Q/\\EDownloadURL)
和(?=<%5CQ/%5CEDownloadURL)
,但是在这个result1.txt之后,里面什么也没有。
您能帮我解决这个问题吗?
答案 0 :(得分:1)
我不确定power-shell命令,但正则表达式应如下所示:
<DownloadURL>(.*)<\\DownloadURL>