Это та вещь, что 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 не может манипулировать, например, «запустить как администратор ". Они доступны только через интерфейс Win32 IShellLinkDataList
, который является реальной болью для использования, но это можно сделать.
Пожалуйста, не думайте, что Файлы программы находятся в папке «C: \ Program Files». (% PROGRAMFILES% может работать, хотя).Точно так же не предполагайте, что домашний каталог пользователя находится в «C: \ Documents and Settings \% USERNAME%» (% HOMEDIR%). И Desktop не может называться Desktop. – 2009-02-12 17:26:43
Есть ли решение для создания ярлыков в Windows 7? – JoeYo 2013-01-03 08:05:35
@JayBazuzi это `% HomePath%` на Windows 7, 8 и Server 2012. :) – wasatchwizard 2013-10-28 18:02:02