1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| <#
Description du Script PowerShell de Gestion des Raccourcis :
Ce script PowerShell permet d'analyser et de gérer les raccourcis présents dans un répertoire spécifique, tel que le bureau de l'utilisateur et tous les utilisateurs aussi.
Il affiche une interface utilisateur conviviale pour visualiser les différents types de raccourcis (dossiers, fichiers ou liens Internet) ainsi que leurs cibles.
Fonctionnalités principales :
1-Analyse Automatique : Le script explore le répertoire spécifié pour repérer les fichiers de type raccourci (.lnk) et liens Internet (.url).
2-Affichage dans une Grille : Une interface graphique est générée à l'aide de la commande Out-GridView, permettant à l'utilisateur de voir tous les raccourcis disponibles, leurs types et leurs cibles.
3-Actions sur les Raccourcis : L'utilisateur peut sélectionner un raccourci dans la grille et effectuer des actions correspondantes :
-Ouvrir un dossier cible dans l'explorateur de fichiers.
-Exécuter un fichier cible.
-Ouvrir un lien Internet dans le navigateur par défaut.
4-Boucle de Répétition : Une boucle est intégrée pour permettre à l'utilisateur de parcourir plusieurs fois la liste des raccourcis sans avoir à redémarrer le script.
Ce script offre une solution simple et efficace pour explorer et interagir avec les raccourcis présents dans un répertoire donné, ce qui peut être utile pour gérer les raccourcis sur le bureau ou dans d'autres emplacements système.
#>
function Afficher-Grille {
param (
[Parameter(Mandatory=$true)]
[System.Collections.ArrayList]$listeRaccourcis
)
$selectedItem = $listeRaccourcis | Out-GridView -Title "Gestion de types de Raccourcis et leurs Cibles" -PassThru
return $selectedItem
}
do {
Clear-Host
# Spécifiez le chemin du répertoire à examiner : exemple le bureau de l'utilisateur courant et aussi le bureau partagé
$chemin = @([Environment]::GetFolderPath("CommonDesktopDirectory"),[Environment]::GetFolderPath("Desktop"))
# Obtenez la liste de tous les fichiers dans le répertoire spécifié
$fichiers = Get-ChildItem -Path $chemin -Recurse
# Créez une liste pour stocker les informations sur les raccourcis
$listeRaccourcis = @()
# Parcourez chaque fichier pour identifier s'il s'agit d'un raccourci de dossier, de fichier, ou Internet
foreach ($fichier in $fichiers) {
# Vérifiez si le fichier est un raccourci ou un raccourci internet
if ($fichier.Extension -eq ".lnk" -or $fichier.Extension -eq ".url") {
# Utilisez la commande CreateShortcut pour accéder aux informations sur le raccourci
$shell = New-Object -ComObject WScript.Shell
$link = $shell.CreateShortcut($fichier.FullName)
# Initialisez la variable pour stocker les arguments
$arguments = $link.Arguments
# Initialisez la variable pour stocker les descriptions
$Desciption = $link.Description
# Initialisez la variable pour stocker les dossiers de travail
$WorkingDirectory = $link.WorkingDirectory
# Initialisez la variable pour stocker les icons
$Icon = $link.IconLocation
# Initialisez la variable pour stocker les touches de raccourci
$HotKey = $link.Hotkey
# Vérifiez si le chemin de la cible est un dossier
if (Test-Path $link.TargetPath -PathType Container) {
$type = 'Raccourci de dossier'
} else {
# Vérifiez si le fichier est un raccourci internet
if ($fichier.Extension -eq ".url") {
$type = 'Raccourci Internet'
} else {
$type = 'Raccourci de fichier'
}
}
# Vérifiez s'il y a des arguments et concaténez-les avec le chemin de la cible
if ($arguments -ne $null -and $arguments -ne '') {
$targetPath = "$($link.TargetPath) $arguments"
} else {
$targetPath = "$($link.TargetPath)"
}
# Ajoutez les informations sur le raccourci à la liste
$listeRaccourcis += [PSCustomObject]@{
'Type de Raccourci' = $type
'Nom de Raccourci' = $fichier.Name
'Chemin de la cible' = $targetPath
'Dossier de Travail' = $WorkingDirectory
'Arguments' = $arguments
'Description' = $Desciption
'Icon' = $Icon
'Touches de Raccourci' = $HotKey
}
}
}
# Affichez la liste dans Out-GridView
$selectedItem = Afficher-Grille -listeRaccourcis $listeRaccourcis
# Vérifiez si un élément a été sélectionné dans la grille
if ($selectedItem) {
# Vérifiez si le raccourci sélectionné est un raccourci Internet
if ($selectedItem.'Type de Raccourci' -eq 'Raccourci Internet') {
try {
# Lancez l'URL dans le navigateur par défaut
Start-Process $selectedItem.'Chemin de la cible'
Sleep 5
} catch {
Write-Host "Une erreur s'est produite lors de l'ouverture de l'URL."
}
} else {
# Ouvrez la cible du raccourci sélectionné
$shell = New-Object -ComObject WScript.Shell
$shortcutPath = $selectedItem.'Chemin de la cible'
# Vérifie si le raccourci est un dossier
if ($selectedItem.'Type de Raccourci' -eq 'Raccourci de dossier') {
$Exec = $shell.Run("explorer `"$shortcutPath`"", 1, $false)
Sleep 5
} else {
$Exec = $shell.Run("cmd /c `"$shortcutPath`"", 0, $false)
Sleep 5
}
}
} else {
# L'utilisateur a fermé la grille, sortir de la boucle
break
}
} while ($selectedItem) |
Partager