Я хочу создать ярлык с помощью PowerShell для этого исполняемого файла:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Как это может быть сделано?
Я хочу создать ярлык с помощью PowerShell для этого исполняемого файла:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Как это может быть сделано?
Ответы:
Я не знаю ни одного собственного командлета в 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()
источник
Set-ShortCut
командлета был больше похож на тоMKLINK
,Set-Alias
где псевдоним или ссылка являются первым аргументом, а затем целью.param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
обходных путей является очень ограниченный набор символов для именования файла .lnk. Например, имя, содержащее →, не сработает. Один из способов обойти это, если вам нужна лучшая поддержка символов, - это[Web.HttpUtility]::UrlEncode()
(послеAdd-Type -AN System.Web
) имени файла при создании файла .lnk, а затем переименование его в имя UrlDecoded с помощью Rename-Item.SpecialFolders
метод объекта WScript может оказаться полезным:$WshShell.SpecialFolders("Desktop")
даст вам истинный путь к папка на рабочем столе, которую вы можете использовать впоследствии при звонкеCreateShortcut
.PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Он создал ярлык, который можно увидеть из проводника Windows, но когда я ввелcd home
сам PS, я получил сообщение об ошибкеcd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
Начиная с 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"
Будьте Осторожен 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 .
источник
New-Item
in"${env:AppData}\Microsoft\Windows\SendTo"
, не будет отображаться, например, в меню «Отправить» проводника и не позволяет настраивать свойства ярлыка, такие как значок или рабочий каталог.New-Item -ItemType SymbolicLink -RunAsAdmin ...
.& C:\temp\calc.lnk
). Что вы ожидаете ?