Это то, в чем 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, использовать который очень сложно, но можно.
person
Jay Bazuzi
schedule
12.02.2009
%HomePath%в Windows 7, 8 и Server 2012. :) - person kodybrown   schedule 28.10.2013