这是一件非常烦人的事情,为了在 Powershell 中运行.exe
当前目录内的任何内容,我都需要使用.\
ahead。
例如,如果我将程序fastboot.exe
放在当前文件夹中,则不能fastboot
像在里面那样简单地键入cmd
。我被迫输入:
.\fastboot
如果我只是输入fastboot
(没有.\
我得到一些错误,如:
术语“fastboot”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
+ fastboot + ~~~~~~~~ + CategoryInfo:ObjectNotFound:(fastboot:String)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException
如何避免这种情况?
答案1
如果你不喜欢打字.\command.ps1
,你可以直接输入command
并点击 Tab。如果当前目录中有一个 command.ps1 文件,它将自动完成。
我认为这足够符合人体工程学,可以保持默认行为的安全优势。
答案2
Powershell 默认不会从当前位置加载命令。
建议 [3,General]:未找到命令 xxx.exe,但该命令确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果您信任此命令,请改为键入“.\xxx.exe”。有关更多详细信息,请参阅“get-help about_Command_Precedence”。
所以你剩下两个选择
通过将当前目录添加到路径来降低安全屏障
$env:path ="$($env:path);."
养成在命令前加上前缀的习惯
.\