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.
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