PowerShell/Menu interactif
Un menu interactif pour accéder rapidement aux outils récurrents.
Menu interactif, exemple 1
<#
Nom : PSHMNU001
Description : création d'un menu interactif pour l'accès à des outils
Usage : exercice en PowerShell
Particularité : néant
Auteur : fylip22
Version : 1.0
Révisions :
- 1.0 (05/09/2026) : création du script
#>
Set-Location "C:\Support\"
$continuer = $true
while ($continuer) {
Clear-Host
Write-Host "==== MENU PRINCIPAL ====" -ForegroundColor Cyan
Write-Host "0. Répertoire courant"
Write-Host "1. Accès AD"
Write-Host "2. DHCP"
Write-Host "3. Bureau distant"
Write-Host "8. Calculatrice"
Write-Host "Q. Quitter"
$choix = Read-Host "Faites votre choix (1-9 ; Q)"
switch ($choix) {
'0' { Write-Host "Contenu du répertoire courant" -ForegroundColor Green
Invoke-Command -ScriptBlock {Get-ChildItem} ; Pause }
'1' { Write-Host "Exécution du script A..." -ForegroundColor Green
& ".\PSHTAC001.ps1"
Pause }
'2' { Write-Host "Exécution du script B..." -ForegroundColor Green
#& "C:\Chemin\Vers\ScriptB.ps1"
Pause }
'3' { Write-Host "Exécution du script C..." -ForegroundColor Green
#& "C:\Chemin\Vers\ScriptC.ps1"
Pause }
'8' { Write-Host "Calculatrice" -ForegroundColor Green
Start-Process calc.exe
Pause }
'Q' { Write-Host `r"Fermeture du menu..." -ForegroundColor Yellow ; $continuer = $false }
default { Write-Host "Choix invalide, veuillez réessayer." -ForegroundColor Red ; Start-Sleep -Seconds 1 }
}
}
<#
Nom : PSHTAC001
Description : liste des tâches planifiées avec indication du compte d'exécution
Usage : exercice en PowerShell
Particularité : en modifiant le filtre, il est possible de n'afficher que certaines tâches.
Exemple :
* Where {$_.TaskName -like "*"} : pour afficher toutes les tâches
* Where {$_.TaskName -like "Opti*"} : pour n'afficher que les tâches dont le nom commence par "Opti"
Auteur : fylip22
Version : 1.0
Révisions :
- 1.0 (31/10/2024) : fylip22, création du script
#>
Clear-Host
Write-Host "Liste des tâches planifiées avec indication du compte d'exécution"
Write-Host "================================================================="
$TacheListe =
@(Get-ScheduledTask -TaskPath \ | Where {$_.TaskName -like "*"}) |
ForEach-Object {
[pscustomobject]@{
Tache = $_.taskname;
CompteExecution = $_.CimInstanceProperties.Value.userid[1]
}
}
# Affichage du résultat
$TacheListe
Menu interactif, exemple 2
function Show-Menu {
param (
[string]$Titre = "Menu d'administration"
)
Clear-Host
Write-Host "============ $titre ============"
Write-Host "1 : Répertoire courant, contenu"
Write-Host "2 : AD"
Write-Host "3 : DHCP"
Write-Host "4 : Autre"
Write-Host "5 : Calculatrice"
Write-Host "Q : Quitter"
}
do {
Show-Menu
$Touche = Read-Host "Votre sélection"
Switch ($Touche) {
'1' { Get-ChildItem }
'2' {"Choix numéro 2"}
'3' {"Choix numéro 3"}
'4' {"Choix numéro 4"}
'5' {"Choix numéro 5"}
}
Pause
}
until ($Touche -eq "q")