Je veux créer un raccourci avec PowerShell pour cet exécutable :
C:\Program Files (x86)\ColorPix\ColorPix.exe
Comment cela peut-il être fait ?
Je veux créer un raccourci avec PowerShell pour cet exécutable :
C:\Program Files (x86)\ColorPix\ColorPix.exe
Comment cela peut-il être fait ?
Je ne connais pas de cmdlet native dans powershell mais vous pouvez utiliser l'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 sauvegarder comme 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 l'appeler comme ceci
Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"
Si vous voulez 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. Elle accepte des arguments comme second 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()
C'est un point très mineur, mais par souci de cohérence, j'aurais la syntaxe suivante Set-ShortCut
pour qu'elle ressemble davantage à MKLINK
o Set-Alias
où l'alias ou le lien vient comme premier argument et ensuite la cible. param ( [string]$LinkPath, [string]$TargetPath )
L'une des limitations du composant COM WshShell ou de l'outil cmd /c mklink
Les solutions de contournement sont un jeu de caractères très limité pour nommer le fichier .lnk. Un nom contenant un a échouera, par exemple. Une façon de contourner ce problème, si vous avez besoin d'un meilleur support de caractères, est de [Web.HttpUtility]::UrlEncode()
(après Add-Type -AN System.Web
) le nom du fichier lors de la création du fichier .lnk, puis le renommer au nom UrlDecoded en utilisant Rename-Item.
Lors de la création d'un raccourci sur vrai (par opposition à l'hypothèse d'un chemin codé en dur qui peut ou non être vrai, une mauvaise pratique que j'ai observée à de nombreuses reprises), l'option SpecialFolders
d'un objet WScript peut s'avérer utile : $WshShell.SpecialFolders("Desktop")
vous donnera le véritable chemin d'accès au dossier du bureau, que vous pourrez utiliser ultérieurement lors de l'appel à CreateShortcut
.
Débutant PowerShell 5.0 New-Item
, Remove-Item
y Get-ChildItem
ont été améliorés pour prendre en charge la création et la gestion des liens symboliques. Le site ItemType pour New-Item
accepte une nouvelle valeur, SymbolicLink. Vous pouvez désormais créer des liens symboliques en une seule ligne en exécutant le cmdlet New-Item.
New-Item -ItemType SymbolicLink -Path "C:\temp" -Name "calc.lnk" -Value "c:\windows\system32\calc.exe"
Soyez prudent a SymbolicLink est différent d'un Raccourci les raccourcis sont juste un fichier. Ils ont une taille (une petite taille, qui fait juste référence à l'endroit où ils pointent) et ils nécessitent qu'une application supporte ce type de fichier pour être utilisés. Un lien symbolique est au niveau du système de fichiers, et tout le monde le voit comme le fichier original. Une application n'a besoin d'aucun support particulier pour utiliser un lien symbolique.
De toute façon, si vous voulez créer un Exécuter en tant qu'administrateur en utilisant 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 modifier quelque chose d'autre dans un fichier .LNK, vous pouvez vous référer à la documentation officielle de Microsoft .
Un lien symbolique est très différent d'un raccourci, cependant. Un lien symbolique créé à l'aide de New-Item
en "${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.
Si je comprends bien, si vous définissez un lien symbolique, le raccourci peut être utilisé à partir de n'importe quel shell, et de n'importe quel répertoire. C'est un peu comme définir une variable système. Est-ce correct ? Peut-on également l'utiliser pour les répertoires ?
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Si vous souhaitez exécuter un raccourci en tant qu'administrateur, vous pouvez utiliser la commande suivante cette réponse .
0 votes
Vous devriez sérieusement envisager d'accepter la réponse de @JPBlanc. C'est une réponse en une phrase
1 votes
@KolobCanyon Attention, ma réponse est un lien symbolique, pas un raccourci.