例如:你有一个快捷方式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.lnk
或SomeProgram
,它运行程序就好了.
如何将PowerShell配置为像程序一样执行快捷方式?
您还可以使用"invoke-item"cmdlet调用快捷方式.因此,例如,如果您要启动"Internet explorer.lnk",则可以键入以下命令:
invoke-item 'Internet Explorer.lnk'
或者您也可以使用别名
ii 'internet explorer.lnk'
另一个很酷的事情是,您可以执行"invoke-item t.txt",它会自动打开*.txt文件的默认处理程序,例如记事本.
注意如果要在当前目录中执行应用程序app.exe,则必须实际指定要执行的路径(相对或绝对路径).".\ app.exe"是您执行应用程序时需要输入的内容.
在我的Vista系统上输入S将不会启动lnk文件,除非我在列表中设置了.lnk的环境变量PATHEXT.当我做.S将在cmd.exe中工作,我必须这样做.\ S在powershell中.
添加;.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 }