15

示例:您在当前目录中有一个快捷s方式。SomeProgram

cmd.exe中,您可以键入s,它将启动程序。

在 PowerShell 中,键入s会给出:

The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

如果你输入s.lnkor SomeProgram,它运行程序就好了。

如何配置 PowerShell 以像程序一样执行快捷方式?

4

6 回答 6

18

您还可以使用“invoke-item”cmdlet 调用快捷方式。因此,例如,如果您想启动“internet explorer.lnk”,您可以输入以下命令:

invoke-item 'Internet Explorer.lnk'

或者您也可以使用别名

ii 'internet explorer.lnk'

另一个很酷的事情是您可以执行“invoke-item t.txt”,它会自动打开 *.txt 文件的默认处理程序,例如记事本。

注意如果要在当前目录中执行应用程序 app.exe,则必须实际指定要执行的相对路径或绝对路径。".\app.exe" 是您执行应用程序所需键入的内容。

于 2008-09-15T19:10:15.210 回答
9

在我的 Vista 系统上键入 S 不会启动 lnk 文件,除非我在列表中使用 .lnk 设置了环境变量 PATHEXT。当我做。S 将在 cmd.exe 中工作,我必须在 powershell 中执行 .\S。

于 2008-08-22T17:42:52.500 回答
5

添加;.LNK到我的PATHEXT环境变量的末尾后,即使没有前面的./符号,我现在也可以执行快捷方式。(感谢 bruceatk!)

我也受到 Steven 的建议的启发,即创建一个小脚本,自动为我的所有快捷方式设置别名PATH(尽管我打算坚持使用更简单的解决方案;)。

$env:path.Split( ';' ) | 
  Get-ChildItem -filter *.lnk | 
  select @{ Name='Path'; Expression={ $_.FullName } }, 
         @{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension( $_.Name ) } } | 
  where { -not (Get-Alias $_.Name -ea 0) } | 
  foreach { Set-Alias $_.Name $_.Path }
于 2008-08-22T22:48:05.403 回答
2

我不相信你可以。您最好对从配置文件脚本调用的脚本中的常用命令进行别名处理。

例子 -

设置别名 np c:\windows\notepad.exe

然后,您可以从命令行获得简短、易于键入的名称。

于 2008-08-22T17:19:16.067 回答
2

一方面,快捷方式不是“s”而是“s.lnk”。例如,当名称为“t.txt”时,您无法通过键入“t”来打开文本文件(例如用记事本):) Technet 说

PATHEXT 环境变量定义了 Windows NT 在搜索可执行文件时检查的文件扩展名列表。PATHEXT 的默认值为 .COM;.EXE;.BAT;.CMD

您可以按照此处其他人的描述进行点源,也可以使用调用字符“&”。这意味着 PS 将您的字符串视为要执行的内容,而不仅仅是文本。不过,这在脚本中可能更重要。

我要补充一点,您应该在引号之外传递任何参数(这是我之前的一点)注意“-r”不在引号字符串中,只有exe。

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null
于 2008-08-22T22:43:10.610 回答
0

您始终可以使用制表符完成来键入“s[TAB]”并按 ENTER 并执行它。

于 2008-08-22T17:27:26.797 回答