我如何询问PowerShell的位置?
例如,"notepad",它根据当前路径返回运行notepad.exe的目录.
一旦我开始在PowerShell中自定义我的配置文件,我创建的第一个别名是'which'.
New-Alias which get-command
要将此添加到您的个人资料,请输入以下内容
"`nNew-Alias which get-command" | add-content $profile
最后一行开头的`n是确保它将作为新行开始.
这是一个实际的*nix等价物,即它给出了*nix风格的输出.
Get-Command| Select-Object -ExpandProperty Definition
只需替换你想要的任何东西.
PS C:\> Get-Command notepad.exe | Select-Object -ExpandProperty Definition C:\Windows\system32\notepad.exe
将其添加到配置文件时,您将需要使用函数而不是别名,因为您不能对管道使用别名:
function which($name) { Get-Command $name | Select-Object -ExpandProperty Definition }
现在,当您重新加载配置文件时,您可以执行以下操作:
PS C:\> which notepad C:\Windows\system32\notepad.exe
我通常只输入:
gcm notepad
要么
gcm note*
gcm是Get-Command的默认别名.
在我的系统上,gcm note*输出:
[27] » gcm note* CommandType Name Definition ----------- ---- ---------- Application notepad.exe C:\WINDOWS\notepad.exe Application notepad.exe C:\WINDOWS\system32\notepad.exe Application Notepad2.exe C:\Utils\Notepad2.exe Application Notepad2.ini C:\Utils\Notepad2.ini
您将获得与您要查找的目录和命令相匹配的目录和命令.
试试这个例子:
(Get-Command notepad.exe).Path
我对Who函数的主张:
function which($cmd) { get-command $cmd | % { $_.Path } } PS C:\> which devcon C:\local\code\bin\devcon.exe