PowerShell 可以知道开始菜单中的所有应用程序吗?

Can PowerShell know all apps in the start menu?

当我单击 Windows 按钮时,我可以键入应用程序的名称并在菜单中完成以快速找到应用程序并 运行 它。

但是对于 PowerShell,我必须将应用程序的路径添加到 $ENV:Path,这对于每个应用程序来说非常麻烦。有没有更好的办法?

有点,但不是真的。 PowerShell 的 Tab 完成功能搜索当前文件夹、已知的 cmdlet 名称以及用户和系统路径中的文件夹。除非您想自己重写制表符完成功能(这是可能的,请参阅 PowerTab),否则您将无法使用该功能。

您应该可以使用 Start-Process(别名 startsaps),它确实使用了一些类似于“开始”菜单的文件关联信息。但是,您需要知道应用程序可执行文件的名称,而不是您在“开始”菜单上看到的友好名称。您不能键入 Start-Process word。你必须说 Start-Process winword,因为可执行文件是 winword.exe.

PowerShell 是一个现代命令行,但它仍然是一个命令行。它不会像 Windows 搜索那样帮助用户,因为它没有做出相同的假设。 PowerShell 假定您主要希望使用 cmdlet,而这正是大多数人使用它的方式,IMX。除非您正在管理服务器,否则它并不意味着要取代 GUI。

您可以对文件夹名称和调用运算符使用制表符补全,因此您可以键入 C:\Pro 并按制表符,它会扩展为(例如)& 'C:\Program Files\'。请注意,它会在此处自动为您包含呼叫操作员 (&),因为文件系统提供商假定您需要它。

我使用的一个技巧是为我在命令行中经常使用的东西创建一个批处理文件,并将其放在我的系统路径中的 c:\tools 文件夹中。 这样你就不必将每个可执行文件都添加到你的路径中,这样它就可以通过自动完成找到它。