管道输入时选择字符串-Pattern输出

时间:2017-05-28 08:18:15

标签: powershell debugging pipe select-string

我试图让PowerShell吐出一个语义版本控制变量,但只是显示我输入的命令(在ISE中执行此操作)或两个错误中的任何一个('缺少参数'或&) #39;不接受管道输入'),如果我尝试解决它们,请在命令中结束再次显示。

我如何得到这个:

(Invoke-WebRequest -Uri http://someplace).Links.href | Out-String -Stream |
    Select-String -Pattern [regex]$someGoodRegex -OutVariable $NodeVersion_target

假设正则表达式和Web请求指向固定的东西,只是将搜索到的术语粘贴在-OutVariable定义的内容中?

更一般地说,是否有一种很好的方法来显示管道中对象的属性?经过大量的挖掘后,我偶然发现了{$_},但是如果命令变得更加复杂,只是一个简单的cmdlet,它就不能再显示除命令之外的任何内容。

1 个答案:

答案 0 :(得分:0)

删除ODR[regex]已将参数Select-String的参数视为正则表达式。

从变量名中删除-Pattern。您需要它直接使用变量,但$参数需要没有前导-OutVariable的裸变量名称。

您也可以删除$

这样的事情应该有效:

Out-String -Stream

或者,您可以将管道输出分配给变量,而不是使用$uri = 'http://www.example.com/' $re = 'v\d+\.\d+\.\d+/s' (Invoke-WebRequest -Uri $uri).Links.href | Select-String -Pattern $re -OutVariable NodeVersion_target

-OutVariable

后者实际上更像是PoSh。

至于检查管道中的当前对象:管道进入Format-List *以获取流水线对象的属性/方法列表,并管道进入enter image description here以获取值的列表流水线的对象。