17/11/2024

PowerShell

PowerShell : Comment modifier un raccourci existant ?

I. Présentation

Après avoir vu dans un précédent tutoriel comment créer un raccourci en PowerShell, nous allons voir maintenant comment modifier un raccourci existant. Imaginez, un raccourci présent sur le bureau des sessions de vos collaborateurs doit être modifié, car l'URL change suite à un changement de version... Avec un script vous pourrez automatiser facilement ce changement.

II. Le code PowerShell

La fonction s'appellera cette fois-ci "Edit-ShortcutTarget" et elle contiendra 3 paramètres :

  • ShortcutName : Le nom du raccourci
  • ShortcutFolder : Le dossier dans lequel se situe le raccourci
  • ShortcutTargetDestination : la nouvelle cible du raccourci

En fait, on va récupérer les propriétés du raccourci actuel, notamment sa cible actuelle que l'on va stocker dans une variable. Ensuite, par l'intermédiaire de la méthode replace(), on va venir remplacer la cible actuelle par la nouvelle (passée en paramètre).

Function Edit-ShortcutTarget{
 
# Paramètres
param(
[parameter(Mandatory=$true)][string]$ShortcutName,
[parameter(Mandatory=$true)][string]$ShortcutFolder,
[parameter(Mandatory=$true)][string]$ShortcutTargetDestination
)

# Chemin complet vers le raccourci .lnk
$ShortcutFullName = Get-ChildItem -Path $ShortcutFolder -Filter $ShortcutName -Recurse | Where-Object { $_.Attributes -ne "Directory"} | select -ExpandProperty FullName
 
# Récupérer la target actuelle
$ObjGetTheTarget = New-Object -ComObject WScript.Shell
$ShortcutTargetSource = $ObjGetTheTarget.CreateShortcut($ShortcutFullName).TargetPath

# Modifier la cible du raccourci
$Shortcut = New-Object -ComObject WScript.Shell
$Link = $Shortcut.CreateShortcut($ShortcutFullName)
[string]$Path = $Link.TargetPath
[string]$Path = [string]$Path.Replace($ShortcutTargetSource.tostring(),$ShortcutTargetDestination.ToString())
$Link.TargetPath = [string]$Path
$Link.Save()

} # Function Edit-ShortcutTarget

Par exemple, si l'on souhaite modifier la cible d'un raccourci nommé "IT-Connect.lnk" étant actuellement dans le répertoire "C:\Users\Florian\Desktop\" afin de lui indiquer comme cible "https://www.it-connect.fr", voici la commande à exécuter :

Edit-ShortcutTarget -ShortcutName "IT-Connect.lnk" -ShortcutFolder "C:\Users\Florian\Desktop\" -ShortcutTargetDestination "https://www.it-connect.fr"

Ce code de base doit être optimisé pour gérer les erreurs notamment, mais il fonctionne très bien.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

1 commentaire sur “PowerShell : Comment modifier un raccourci existant ?

  • Est-ce qu’on peut ajouter des arguments après le raccourcis ? Et comment ?
    de Type -UTIL=TOTO après le chemin de la cible ?
    c:\mon-chemin\monappli.exe -Util=TOTO

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.