Je souhaite créer un raccourci avec PowerShell pour cet exécutable:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Comment cela peut-il être fait?
Je souhaite créer un raccourci avec PowerShell pour cet exécutable:
C:\Program Files (x86)\ColorPix\ColorPix.exe
Comment cela peut-il être fait?
Réponses:
Je ne connais aucune applet de commande native dans PowerShell, mais vous pouvez utiliser un objet com à la place:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\ColorPix.lnk")
$Shortcut.TargetPath = "C:\Program Files (x86)\ColorPix\ColorPix.exe"
$Shortcut.Save()
vous pouvez créer un script PowerShell sauvegardé sous set-shortcut.ps1 dans votre $ pwd
param ( [string]$SourceExe, [string]$DestinationPath )
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($DestinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Save()
et appelle ça comme ça
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Si vous souhaitez passer des arguments à l'exe cible, cela peut être fait par:
#Set the additional parameters for the shortcut
$Shortcut.Arguments = "/argument=value"
avant $ Shortcut.Save ().
Pour plus de commodité, voici une version modifiée de set-shortcut.ps1. Il accepte les arguments comme deuxième paramètre.
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
plutôt la syntaxe de l' applet de commande MKLINK
, ou Set-Alias
où l'alias ou le lien vient en premier argument, puis la cible. param ( [string]$LinkPath, [string]$TargetPath )
cmd /c mklink
solutions de contournement est un jeu de caractères très limité pour nommer le fichier .lnk. Un nom contenant un → échouera, par exemple. Une façon de contourner ce problème , si vous avez besoin d'une meilleure prise en charge des caractères, consiste à [Web.HttpUtility]::UrlEncode()
(après Add-Type -AN System.Web
) le nom de fichier lors de la création du fichier .lnk, puis à le renommer en nom UrlDecoded en utilisant Rename-Item.
SpecialFolders
méthode d'un objet WScript peut être utile: $WshShell.SpecialFolders("Desktop")
vous donnera le vrai chemin vers le dossier du bureau, que vous pourrez utiliser ultérieurement lors de l'appel CreateShortcut
.
PS C:\Users\${myUser} $Shortcut = $WshShell.CreateShortcut("$C:\Users\${myUser}\home.lnk")
. Il a créé un raccourci qui peut être vu depuis l'explorateur Windows, mais quand j'ai tapé cd home
dans le PS lui-même, j'obtiens une erreurcd : Cannot find path 'C:\Users\carpb\home' because it does not exist.
À partir de PowerShell 5.0 New-Item
, Remove-Item
et Get-ChildItem
ont été améliorés pour prendre en charge la création et la gestion des liens symboliques. Le paramètre ItemType pour New-Item
accepte une nouvelle valeur, SymbolicLink. Vous pouvez désormais créer des liens symboliques sur une seule ligne en exécutant la cmdlet New-Item.
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Attention, un SymbolicLink est différent d'un raccourci , les raccourcis ne sont qu'un fichier. Ils ont une taille (petite, qui fait simplement référence à l'endroit où ils pointent) et ils nécessitent une application pour prendre en charge ce type de fichier pour être utilisés. Un lien symbolique est au niveau du système de fichiers, et tout le voit comme le fichier d'origine. Une application n'a pas besoin de support particulier pour utiliser un lien symbolique.
Quoi qu'il en soit, si vous souhaitez créer un raccourci Exécuter en tant qu'administrateur à l' aide de Powershell, vous pouvez utiliser
$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)
Si quelqu'un veut changer quelque chose d'autre dans un fichier .LNK, vous pouvez vous référer à la documentation officielle de Microsoft .
New-Item
in "${env:AppData}\Microsoft\Windows\SendTo"
n'apparaîtra pas dans le menu Envoyer vers de l'explorateur, par exemple, et ne permet pas de personnaliser les propriétés du raccourci comme l'icône ou le répertoire de travail.
New-Item -ItemType SymbolicLink -RunAsAdmin ...
.
& C:\temp\calc.lnk
). Qu'attendez-vous ?