【问题标题】:Execute shortcuts like programs执行程序之类的快捷方式
【发布时间】:2010-09-06 13:21:20
【问题描述】:

示例:您在当前目录中有 sSomeProgram 的快捷方式。

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.lnkSomeProgram,程序就可以正常运行。

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

【问题讨论】:

    标签: powershell


    【解决方案1】:

    我不相信你可以。您最好在从配置文件脚本调用的脚本中为常用命令起别名。

    例子-

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • cmd自动添加当前目录“.”到您的 PATH 环境变量。 PowerShell 认为这是一种安全风险,并强制您显式键入 .\ 路径。与在 linux 中一样,您可以添加“.”。到您的 PATH 环境变量以恢复“危险”行为...
        • 我认为您还必须输入完整的文件名 s.lnk,正如 slipsec 所说的
        • Jaykul/slipsec,我给出的答案是解释你可以将 .lnk 添加到 PATHEXT 环境变量中,然后你可以从命令行启动快捷方式而不添加 .lnk。
        【解决方案4】:

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

        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
        

        【讨论】:

          【解决方案5】:

          在我的PATHEXT 环境变量的末尾添加;.LNK 后,即使没有前面的./ 符号,我现在也可以执行快捷方式。 (感谢 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 }
          

          【讨论】:

            【解决方案6】:

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

            invoke-item 'Internet Explorer.lnk'
            

            或者你也可以使用别名

            ii 'internet explorer.lnk'
            

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

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

            【讨论】:

            • 我尝试过 Remote Power Shell 会话。问题是它不启动 UI。瞬间,我尝试启动 Visual Studio。我可以看到它的过程,但当我使用 RDP 连接到计算机时没有显示 UI。有什么想法吗?
            • Royi,这是因为它在不同的范围/会话中运行,而不是您 RDP 到的那个。此外,上述答案不适用于使用或不使用参数执行 exe,Start-Process 也不起作用。请告知我是否遗漏了什么,谢谢。
            猜你喜欢
            • 1970-01-01
            • 2011-01-23
            • 1970-01-01
            • 2012-11-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-12
            相关资源
            最近更新 更多