我想在where.exe
给我的PowerShell中提供相同的功能。
我试图找到一个替代标准的cmdlet,其中可执行但无法找到任何内容。
因此,默认情况下,我尝试在PowerShell中执行where命令,但是有一个Alias映射到该命令。
PS C:\> Get-Command where CommandType Name Version Source ----------- ---- ------- ------ Alias where -> Where-Object
有没有办法在PowerShell中执行where
,还是有更好的方法来实现相同的结果?
答案 0 :(得分:2)
我不会删除现有的where
别名,因为这会导致您可能使用的脚本失败。相反,您可以为它定义一个新别名:
Set-Alias -Name "wherecli" -Value "where.exe"
然后你可以使用wherecli
。
答案 1 :(得分:2)
我发现只有Get-ChildItem
和Where-Object
的解决方法,但这似乎比where.exe
慢,但我认为我会根据您的搜索结果将其列为可能的是有用的。
PS C:\> Get-ChildItem -Path "c:\Windows\" -Recurse -File | Where-Object {$_.Name -eq "notepad.exe"}
答案 2 :(得分:1)
当然,如果您不想删除指向where
的{{1}}别名,则可以键入Where-Object
(键入.exe
,然后输入TAB键即可足够),如:
.
否则,您是否尝试使用where.exe notepad
参数{PowerShell 3及更高版本] Get-Command
(别名gcm
)?例如:
-All
在我的机器上,给出:
CommandType Name Version Source ----------- ---- ------- ------ Application notepad.exe 10.0.10... C:\Windows\system32\notepad.exe Application notepad.exe 10.0.10... C:\Windows\notepad.exe
它也会找到PowerShell的内容,如示例gcm notepad -All
所示:
CommandType Name Version Source ----------- ---- ------- ------ Alias where -> Where-Object Application where.exe 10.0.10... C:\Windows\system32\where.exe
如果你做想要删除"标准"别名,使用gcm where -All
(如果您希望在每次启动PowerShell时都将其放入配置文件中,可以使用{。}}。