Как создать ярлык с помощью PowerShell - PullRequest
74 голосов
/ 14 марта 2012

Я хочу создать ярлык с PowerShell для этого исполняемого файла:

C:\Program Files (x86)\ColorPix\ColorPix.exe

Как это можно сделать?

Ответы [ 2 ]

115 голосов
/ 14 марта 2012

Я не знаю ни одного собственного командлета в powershell, но вместо этого вы можете использовать com-объект:

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()

вы можете создать скрипт powershell, сохраненный как set-shortcut.ps1 в вашем $ pwd

param ( [string]$SourceExe, [string]$DestinationPath )

$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()

и назовите это так

Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"

Если вы хотите передать аргументы целевому exe-файлу, это можно сделать:

'Set the additional parameters for the shortcut  
$Shortcut.Arguments = "/argument=value"  

до $ Shortcut.Save ().

Для удобства приведена модифицированная версия set-shortcut.ps1. Он принимает аргументы в качестве второго параметра.

param ( [string]$SourceExe, [string]$ArgumentsToSourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $ArgumentsToSourceExe
$Shortcut.Save()
32 голосов
/ 12 марта 2015

Начиная с версии PowerShell 5.0 New-Item, Remove-Item и Get-ChildItem были усовершенствованы для поддержки создания и управления символическими ссылками. Параметр ItemType для New-Item принимает новое значение SymbolicLink. Теперь вы можете создавать символические ссылки в одной строке, выполнив командлет New-Item.

New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"

Будьте осторожны a SymbolicLink отличается от ярлыка , ярлыки - это просто файл. У них есть размер (маленький, который просто указывает, куда они указывают), и они требуют, чтобы приложение поддерживало этот тип файла для использования. Символическая ссылка - это уровень файловой системы, и все видят ее как исходный файл. Приложение не нуждается в специальной поддержке для использования символической ссылки.

В любом случае, если вы хотите создать Запуск от имени администратора ярлык с помощью Powershell, вы можете использовать

$file="c:\temp\calc.lnk"
$bytes = [System.IO.File]::ReadAllBytes($file)
$bytes[0x15] = $bytes[0x15] -bor 0x20 #set byte 21 (0x15) bit 6 (0x20) ON (Use –bor to set RunAsAdministrator option and –bxor to unset)
[System.IO.File]::WriteAllBytes($file, $bytes)

Если кто-то захочет что-то изменить в файле .LNK, вы можете обратиться к официальной документации Microsoft .

...