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

Un des menus

<#
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")

Voir aussi

  •