這是PowerShell真正擅長的事情,因此是避免批處理文件並使其成爲PowerShell的原因。
PowerShell可以與.NET對話。例如,你可以在桌面的位置是這樣的:
[Environment]::GetFolderPath("Desktop")
的PowerShell可以跟COM對象,包括WScript.Shell
,它可以創建快捷方式:
New-Object -ComObject WScript.Shell).CreateShortcut(...)
所以,你的腳本可能看起來像:
$linkPath = Join-Path ([Environment]::GetFolderPath("Desktop")) "MyShortcut.lnk"
$targetPath = Join-Path ([Environment]::GetFolderPath("ProgramFiles")) "MyCompany\MyProgram.exe"
$link = (New-Object -ComObject WScript.Shell).CreateShortcut($linkpath)
$link.TargetPath = $targetPath
$link.Save()
快捷方式有很多設置,WScript.Shell不能操縱,像「運行方式ADMINI選擇器「選項。這些只能通過Win32界面IShellLinkDataList
訪問,這是一個真正的痛苦使用,但它可以完成。
請不要假定Program Files位於「C:\ Program Files」中。(%PROGRAMFILES%可以工作,但)。同樣,不要假定用戶的主目錄位於「C:\ Documents and Settings \%USERNAME%」(它是%HOMEDIR%)。和桌面可能不稱爲桌面。 – 2009-02-12 17:26:43
是否有可用於在Windows 7上創建快捷方式的解決方案? – JoeYo 2013-01-03 08:05:35
@JayBazuzi它在Windows 7,8和Server 2012上是`%HomePath%`。:) – wasatchwizard 2013-10-28 18:02:02