在 Windows 中我们访问Run box with Windows Key + R
。然后我们可以按名称运行程序(例如 firefox、snippingtool)。有没有办法从 PowerShell 中按名称运行程序?
> run firefox
> run snippingtool
我已经尝试过了Start-Process firefox
但它不起作用。
Edit
奇怪的是,从 PowerShell 和运行框中,只需键入notepad
打开记事本。但是,输入firefox
or snippingtool
仅适用于“运行”框,不适用于 PowerShell。
正如@briantist 在他的回答(+1)中提到的:“运行”对话框(其中可能会调用ShellExecuteEx功能)检查子项App Paths
除了路径中的注册表项$env:PATH
环境变量。
但是,为了模拟“运行”对话框的行为,我会将文件夹添加到$env:PATH
而不是为每个可执行文件创建别名:
$regkey = 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths'
$appPaths = Get-ChildItem $regkey |
Get-ItemProperty |
? { $_.'(default)' } |
select -Expand '(default)' |
Split-Path -Parent |
% { [Environment]::ExpandEnvironmentVariables($_.TrimStart('"')) } |
select -Unique
$env:PATH += ';' + ($appPaths -join ';')
通过将其添加到PowerShell 简介(例如您的个人资料%UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
),变量$env:PATH
您启动的每个 PowerShell 实例的目录都会使用注册表中的其他路径进行更新。但请注意,如果添加太多文件夹,您可能会遇到问题长度限制.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)