web-dev-qa-db-fra.com

Comment créer un raccourci à l'aide de PowerShell

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?

77
cethint

Je ne connais aucune applet de commande 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 enregistrer en tant que 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'appelle comme ça

Set-ShortCut "C:\Program Files (x86)\ColorPix\ColorPix.exe" "$Home\Desktop\ColorPix.lnk"

Si vous voulez passer des arguments à l'exe cible, vous pouvez le faire en:

'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()
117
CB.

Début 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 de 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 l'applet de commande 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 ne sont qu’un fichier. Ils ont une taille (une petite taille, qui fait simplement référence à l'endroit où ils pointent) et ils ont besoin d'une application prenant en charge ce type de fichier pour pouvoir être utilisée. Un lien symbolique correspond au niveau du système de fichiers et tout le voit comme le fichier d'origine. Une application n'a besoin d'aucun support particulier pour utiliser un lien symbolique.

Quoi qu’il en soit, si vous souhaitez créer un raccourci sous 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 souhaite modifier quelque chose d'autre dans un fichier .LNK, vous pouvez vous référer à documentation officielle de Microsoft .

32
JPBlanc