运行 svn info & findstr in powershell 然后保存到变量

Run svn info & findstr in powershell then save to variable

我们如何在 powershell 脚本中 运行 以下批处理脚本语句(或那些行中的内容)并将输出保存到变量。 我们不一定要使用 cmd/batch 命令,等效的 powershell 命令就可以了。

svn info --xml pathToRepo\product | findstr /v ^<^?

大概是这样的

$svnInfoOutput = svn info --xml pathToRepo\product | findstr /v ^<^? | Out-Null

所以现在显示 $svnInfoOutput 应该显示:

<info>
<entry
   kind="dir"
   path="path"
   revision="647524">
<url>http://url</url>
<relative-url>^/url</relative-url>
<repository>
<root>http://urlroot</root>
<uuid>593eaae0-013a-</uuid>
</repository>
<wc-info>
<wcroot-abspath>absPath</wcroot-abspath>
<schedule>normal</schedule>
<depth>infinity</depth>
</wc-info>
<commit
   revision="6297">
<author>zz</author>
<date>2014-12-15T09:21:29.369584Z</date>
</commit>
</entry>
</info>

我们可以对任何 match/non 匹配项使用 Select-字符串:Select-String -NotMatch '<?xml'

要将命令的输出传递给变量,最简单的方法是使用 2>&1

所以将它们组合在一起应该会得到您正在寻找的输出:

$svnInfoOutput = svn info --xml pathToRepo\product | Select-String -NotMatch '<?xml' 2>&1
[xml]$svnInfoOutput = svn info --xml pathToRepo\product

$svnInfoOutput 现在是一个对象,您可以像对待任何其他对象一样对待它,查看每个节点的属性(包括属性)。

$svnInfoOutput.info.entry会给你一个格式化的列表,描述上面XML中entry节点的属性和节点内容。您可以使用 $svnInfoOutput.info.entry.revision 进一步查询这些值以获取修订号(例如)。