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.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian has 1666 posts and counting.See all posts by florian

Une pensée 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 de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *