Я хочу створити ярлик із 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
). Що ти очікуєш ?