Я хочу створити ярлик із 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-Itemin "${env:AppData}\Microsoft\Windows\SendTo", не відображатиметься в меню Надіслати провіднику, наприклад, і не дозволяє налаштовувати властивості ярликів, такі як значок або робочий каталог.
New-Item -ItemType SymbolicLink -RunAsAdmin ....
& C:\temp\calc.lnk). Що ти очікуєш ?