在PowerShell

时间:2017-10-09 08:55:17

标签: powershell

我想在where.exe给我的PowerShell中提供相同的功能。

我试图找到一个替代标准的cmdlet,其中可执行但无法找到任何内容。

因此,默认情况下,我尝试在PowerShell中执行where命令,但是有一个Alias映射到该命令。

PS C:\> Get-Command where

CommandType     Name                                           Version    Source
-----------     ----                                           -------    ------
Alias           where -> Where-Object

有没有办法在PowerShell中执行where,还是有更好的方法来实现相同的结果?

3 个答案:

答案 0 :(得分:2)

我不会删除现有的where别名,因为这会导致您可能使用的脚本失败。相反,您可以为它定义一个新别名:

Set-Alias -Name "wherecli" -Value "where.exe"

然后你可以使用wherecli

答案 1 :(得分:2)

我发现只有Get-ChildItemWhere-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时都将其放入配置文件中,可以使用{。}}。