Powershell 要选择字符串的管道对象显示为空

Powershell 要选择字符串的管道对象显示为空,powershell,select-string,Powershell,Select String,为什么这是空的?我正在寻找与主目录相关的变量。在这些情况下,我必须求助于findstr吗?我意识到我在一个物体上吹管道。我希望能够搜索所有属性-InputObject是PSObject类型 dir variable: | select-string users 预期产出: $ users HOME C:\Users\js PROFILE C

为什么这是空的?我正在寻找与主目录相关的变量。在这些情况下,我必须求助于findstr吗?我意识到我在一个物体上吹管道。我希望能够搜索所有属性-InputObject是PSObject类型

dir variable: | select-string users
预期产出:

$                              users
HOME                           C:\Users\js
PROFILE                        C:\Users\js\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
PWD                            C:\Users\js
编辑:

这里有一个半奇怪的答案,但我必须输入我想要的属性

dir variable: | select name,value | select-string users

@{Name=HOME; Value=C:\Users\js}
@{Name=PROFILE; Value=C:\Users\js\Documents\PowerShell\Microsoft.PowerShell_profile.ps1}
@{Name=PWD; Value=C:\Users\js}

如果您希望它像linux shell一样工作,我将使用以下方法:

    dir variable:  |Out-String -Stream  |Select-String "users"
Out string将对象转换为字符串。(-流:逐行)

因此,选择字符串的工作方式与预期相同

或者如果我们想要对象,而不是字符串作为结果:

dir variable:  |where {$_.value -match "users" -or $_.name -match "users"}

恐怕您对
Select String
的功能有误解。请尝试
Get ChildItem变量:|其中对象{$\u.Value-match'users}
Get ChildItem不显示$。这是:
dir变量:| where{$\u.Value-match“users”}
@sunilvijendra“不显示$”是什么意思?你试过密码了吗?顺便说一句:
dir
只是
Get ChildItem
的别名。。。你知道的,对吧?;-)好的一点,@Olaf,尽管有时在显示输出中搜索输入对象的表示形式是一种方便的快捷方式,不需要知道对象的结构-请参阅。$只是最后一个命令参数。没那么重要。我认为这是个糟糕的解决方案。即使它可能会提供所需的输出,它也会将强大的对象变成愚蠢的字符串。我认为这没关系。