我试图让PowerShell吐出一个语义版本控制变量,但卡在里面,只显示我输入的命令(在ISE中这样做(或2个错误之一("缺少参数"或"不接受管道输入"(,如果我尝试解决它们,则以命令再次显示而告终。
我如何得到这个:
(Invoke-WebRequest -Uri http://someplace).Links.href | Out-String -Stream |
Select-String -Pattern [regex]$someGoodRegex -OutVariable $NodeVersion_target
假设正则表达式和 Web 请求指向固体事物,以简单地将搜索的术语粘贴到定义的-OutVariable
中?
更一般地说,有没有一种好方法来显示管道中对象的属性?经过大量挖掘,我偶然发现了{$_}
,但如果命令变得比简单的 cmdlet 复杂一点,则无法让它再次显示除命令之外的任何内容。
删除[regex]
。 Select-String
已将参数的参数-Pattern
视为正则表达式。
从变量名称中删除$
。您需要它直接使用变量,但 -OutVariable
参数需要没有前导$
的裸变量名称。
您也可以删除Out-String -Stream
。
这样的事情应该有效:
$uri = 'http://www.example.com/'
$re = 'vd+.d+.d+/s'
(Invoke-WebRequest -Uri $uri).Links.href |
Select-String -Pattern $re -OutVariable NodeVersion_target
或者,您可以将管道的输出分配给变量,而不是使用 -OutVariable
:
$uri = 'http://www.example.com/'
$re = 'vd+.d+.d+/s'
$NodeVersion_target = (Invoke-WebRequest -Uri $uri).Links.href |
Select-String -Pattern $re
后者实际上更PoSh。
至于检查管道中的当前对象:管道进入Get-Member
以获取管道对象的属性/方法的列表,管道进入Format-List *
以获取管道对象的值列表。