无法在 cmd 中通过管道传输 cmdlet 对象

ani*_*991 2 windows powershell cmd batch-file

我正在使用这个 powershell 命令来获取特定的用户配置文件

“获取 WmiObject -Class Win32_UserProfile |Where-Object {$_.LocalPath -eq 'C:\Users\Pela'}”

但是,当我通过调用 powershell 在 cmd 中使用相同的命令时,我收到“Where-Object 未被识别为内部或外部命令、可操作程序或批处理文件”

我在cmd中运行的命令如下:-“powershell Get-WmiObject -Class Win32_UserProfile |Where-Object {$_.LocalPath -eq 'C:\Users\Pela'}”

我只需要从 cmd 运行此命令,我没有任何其他选项。所以请给我一个“Where-Object”的替代方案

Dav*_*ill 5

所以请给我一个“Where-Object”的替代方案

powershell Get-WmiObject -Class Win32_UserProfile | Where-Object {$_.LocalPath -eq 'C:\Users\Pela
Run Code Online (Sandbox Code Playgroud)

你不需要其他选择。上面的命令失败是因为管道|是由 shell 解释的cmd,而不是由PowerShell.

如果您转义管道^|,则管道将按预期由 PowerShell 命令完成:

powershell Get-WmiObject -Class Win32_UserProfile ^| Where-Object {$_.LocalPath -eq 'C:\Users\Pela
Run Code Online (Sandbox Code Playgroud)

例子:

F:\test>powershell Get-WmiObject -Class Win32_UserProfile ^| Where-Object {$_.LocalPath -eq 'C:\Users\DavidPostill'}

__GENUS           : 2
__CLASS           : Win32_UserProfile
__SUPERCLASS      :
__DYNASTY         : Win32_UserProfile
__RELPATH         : Win32_UserProfile.SID="S-1-5-21-1699878757-1063190524-3119395976-1000"
__PROPERTY_COUNT  : 12
__DERIVATION      : {}
__SERVER          : HAL
__NAMESPACE       : root\cimv2
__PATH            : \\HAL\root\cimv2:Win32_UserProfile.SID="S-1-5-21-1699878757-1063190524-3119395976-1000"
LastDownloadTime  :
LastUploadTime    :
LastUseTime       : 20160822200129.697000+000
Loaded            : True
LocalPath         : C:\Users\DavidPostill
RefCount          : 146
RoamingConfigured : False
RoamingPath       :
RoamingPreference :
SID               : S-1-5-21-1699878757-1063190524-3119395976-1000
Special           : False
Status            : 0
PSComputerName    : HAL
Run Code Online (Sandbox Code Playgroud)

进一步阅读