Question
Création de raccourcis
- Alexandre
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 3
- Remerciements reçus 0
J'essais de créer un script PowerShell qui me permettra de créer un raccourcis sur le bureau afin d'ouvrir une adresse web dans un navigateur précis.
Mon script est conçu ainsi :
#$Shell = New-Object -ComObject Wscript.Shell
#$Shortcut = $Shell.CreateShortcut($env:USERPROFILE + "\Desktop\App.lnk")
# Cible du raccourci
#$Shortcut.TargetPath = ""C:\Program Files\Google\Chrome\Application\chrome.exe" http://url.domain"
# Paramètres optionnels de ligne de commande
#$Shortcut.Arguments = "-arguments –si -necessaire"
# Dossier cible
#$Shortcut.WorkingDirectory = "%userprofile%\Desktop";
# Taille de la fenêtre d'exécution (normale, réduite ou agrandie)
#$Shortcut.WindowStyle = 1;
# Raccourci clavier
#$Shortcut.Hotkey = "CTRL+SHIFT+F";
# Chemin vers l'icône du raccourci
#$Shortcut.IconLocation = "%SystemRoot%\System32\SHELL32.dll, 265";
Function New-Shortcut{
$Shell = New-Object -ComObject Wscript.Shell
$Shortcut = $Shell.CreateShortcut($env:USERPROFILE + "\Desktop\App.lnk")
$Shortcut.TargetPath = ""C:\Program Files\Google\Chrome\Application\chrome.exe" http://url.domain";
$Shortcut.IconLocation = "%SystemRoot%\System32\SHELL32.dll, 265";
$Shortcut.Save()
}
New-Shortcut
J'obtiens ceci :
PS C:\WINDOWS\system32> C:\Users\alexandre.jacques.LSP\Downloads\flexio.ps1
Au caractère C:\Users\%USERPROFIL%\Downloads\script01.ps1:21 : 30
+ $Shortcut.TargetPath = ""C:\Program Files\Google\Chrome\Applicati ...
+ ~~~~~~~~~~
Jeton inattendu « C:\Program » dans l’expression ou l’instruction.
+ CategoryInfo : ParserError: ( : ) , ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Tu y étais presque ! Il fallait juste ne pas tenter de passer tes arguments dans la propriété TargetPath. Il existe une autre propriété pour cela, la propriété Arguments..
Voici un code qui fonctionne :
$Shell = New-Object -ComObject Wscript.Shell
$Shortcut = $Shell.CreateShortcut($env:USERPROFILE + "\Desktop\App.lnk")
$Shortcut.TargetPath = 'C:\Program Files\Google\Chrome\Application\chrome.exe'
$Shortcut.Arguments =' https://start-scripting.io'
$Shortcut.IconLocation = "%SystemRoot%\System32\SHELL32.dll, 265"
$Shortcut.Save()
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Alexandre
- Auteur du sujet
- Hors Ligne
- Nouveau membre
- Messages : 3
- Remerciements reçus 0
Je pensais pas avoir besoin de la variable $Shortcut.Arguments. En ajoutant cette ligne et en modifiant l'autre pour enlever le paramètres qui était en fait une argument, j'ai découvert une nouvelle erreur que j'ai sue corrigé. Je laisse en exemple ma solution qui corrigé la problématique par le fait que j'ai certains usager qui synchronise leur bureau dans OneDrive
Function New-Shortcut{
try{
$Shell = New-Object -ComObject Wscript.Shell
$Shortcut = $Shell.CreateShortcut($env:USERPROFILE + "\Desktop\App.lnk")
$Shortcut.TargetPath = "C:\Program Files\Google\Chrome\Application\chrome.exe";
$Shortcut.Arguments = "app.domain";
$Shortcut.IconLocation = "%SystemRoot%\System32\SHELL32.dll, 265";
$Shortcut.Save()
}
catch{
$Shell = New-Object -ComObject Wscript.Shell
$Shortcut = $Shell.CreateShortcut($env:USERPROFILE + "\OneDrive - ENTREPRISE\Bureau\App.lnk")
$Shortcut.TargetPath = "C:\Program Files\Google\Chrome\Application\chrome.exe";
$Shortcut.Arguments = "app.domain";
$Shortcut.IconLocation = "%SystemRoot%\System32\SHELL32.dll, 265";
$Shortcut.Save()
}
}
New-Shortcut
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
Je suis content d'avoir pu résoudre ton problème.
Par contre attention avec le Try/Catch. Parfois ça ne donne pas le résultat escompté . C'est assez piégeux comme mécanisme.
Moi j'aurais adopté une autre approche. Car là, tu assumes qu'il y aurait qu'un seul type d'erreur mais en réalité on ne peut jamais savoir à l'avance...
En conclusion, je n'aurais pas utilisé de try/catch pour le cas présent mais j'aurais simplement fait un "if"... pour tester le chemin et choisir la bonne commande derrière.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Création de raccourcis