我目前正在尝试构建一个powershell脚本,它可以读取特定的XML文件并拉出某些单词 . 这些单词将位于标签之间 .
目前该文件看起来像这样 . 我们称之为events.xml:
<Computer>Hostname</Computer><Other>Random Text</Other<Other>More Random Text</Other><FilePath>notepad.exe</FilePath>
我想做的是,使用Powershell脚本在 <Computer></Computer>
和 <FilePath></FilePath>
标签之间提取单词并将它们回显给Powershell .
到目前为止我有这个:
gc events.xml | % { [regex]::matches( $_ , '(?<=<Computer>)(.*?)(?=</Computer>)' ) } | select -expa value
这在某种程度上起作用,因为它打印出 <Computer></Computer>
标签之间所有字符的列表完美无瑕 . 但是当尝试使脚本工作时,挑战就出现了,因此它将在BOTH( <Computer></Computer>
和 <FilePath></Filepath>
)行之间打印出来 . 所以它会出现:
主机名
NOTEPAD.EXE
等等 .
有什么想法或建议吗?
谢谢!
2 回答
你应该尝试这样的事情:
首先,使用以下命令加载XML目标文件:
/!\小心,你必须在好的目录中使用 .
然后,如您所知,XML文档的结构,您应该尝试这样做:
选择
<Computers></Computers>
和<FilePath></FilePath>
标记上方的标记 .然后,一个计数器,在while循环中使用它(开发你的xml):
在一个while循环中:
您应该使用
<Computers></Computers>
和<FilePath></FilePath>
的值打印XML文件 .感谢您通过XML解析向我指出正确的方向 .
我通过这样做解决了我的脚本:
这导致了一个漂亮,干净的清单 .
干杯!