2008-08-22 107 views
12

例如:在當前目錄中有一個快捷方式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配置爲像程序一樣執行快捷方式?

回答

7

在我的Vista系統上鍵入S將不會啓動lnk文件,除非我在列表中設置了帶有.lnk的環境變量PATHEXT。當我做。 S將在cmd.exe中工作,我必須在PowerShell中執行\ S。

+1

cmd自動添加當前目錄「。」。到你的PATH環境變量。 PowerShell認爲這是一種安全風險,並強制您明確鍵入。\路徑。 在linux中,你可以添加「。」到你的PATH環境變量來恢復「危險的」行爲... – Jaykul 2008-09-16 01:41:22

+0

我想你也必須輸入完整的文件名s.lnk,因爲slipsec說 – Jaykul 2008-09-16 01:47:51

2

我不相信你可以。您可能會更好地使用您從配置文件腳本調用的腳本中的常用命令進行別名。

示例 -

設置鋸齒NP C:\ WINDOWS \ NOTEPAD.EXE

然後你可以在命令行你的短,容易分型的名字。

0

您可以隨時使用製表符完成鍵入「s [TAB]」,然後按ENTER鍵並執行它。

2

首先,快捷鍵不是「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

加入;.LNKPATHEXT環境變量結束後,我現在可以執行快捷鍵,即使沒有前面的./符號。 (謝謝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 } 
13

您還可以使用「invoke-item」cmdlet調用快捷方式。因此,舉例來說,如果你想推出「互聯網explorer.lnk」,您可以鍵入以下命令:

invoke-item 'Internet Explorer.lnk' 

或者你也可以使用別名

ii 'internet explorer.lnk' 

另一個很酷的事情是,你可以做「invoke-item t.txt」,它會自動打開* .txt文件的默認處理程序,例如記事本。

注意如果要在當前目錄中執行應用程序app.exe,則必須實際指定要執行的相對路徑或絕對路徑。 「。\ app.exe」是您需要鍵入以執行應用程序的內容。