Ce script PowerShell, nommé GestionSuperAdmin_AAZ.ps1, permet de gérer le compte Administrateur intégré de Windows. Il propose des options pour l'activer ou le désactiver, ainsi que pour définir un mot de passe.
Ce script est conçu pour être interactif, sécurisé et fiable, tout en offrant une gestion détaillée et contrôlée de ce compte Administrateur sur un système Windows.
Le code commenté
Code : Tout sélectionner
<#
Nom du script : GestionSuperAdmin_AAZ.ps1
Créateur : PiB pour TEAM-AAZ
Version : 1.0.0.1.e
Date : Janvier 2025
Objet : Ce script permet de gérer le compte Administrateur intégré de Windows en offrant
des options pour l'activer ou le désactiver, ainsi que pour définir un mot de passe.
#>
# Chemin du fichier log
$LogFile = "GestionSuperAdmin_AAZ.log"
# Fonction pour écrire dans le log
function Write-Log {
param (
[string]$Message,
[string]$Type = "INFO"
)
$TimeStamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
$LogMessage = "[$TimeStamp] [$Type] $Message"
Add-Content -Path $LogFile -Value $LogMessage
Write-Host $LogMessage -ForegroundColor Gray
}
# Vérifier si le script est exécuté avec des privilèges administratifs
function Check-AdminPrivileges {
Write-Log "Vérification des privilèges administratifs..."
if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Log "Le script n'est pas exécuté avec des privilèges administratifs." "WARNING"
Write-Host "Attention : Ce script n'est pas exécuté avec des privilèges administratifs." -ForegroundColor Red
$choice = Read-Host "Voulez-vous relancer ce script en mode Administrateur ? (O/N)"
if ($choice -eq "O" -or $choice -eq "o") {
try {
$scriptPath = $MyInvocation.MyCommand.Definition
Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`"" -Verb RunAs
Write-Log "Relance en mode Administrateur demandée."
exit
} catch {
Write-Log "Erreur lors de la tentative de relance : $($_.Exception.Message)" "ERROR"
Write-Host "Impossible de relancer le script en mode Administrateur : $($_.Exception.Message)" -ForegroundColor Yellow
}
} else {
Write-Log "L'utilisateur a choisi de continuer sans privilèges administratifs." "WARNING"
Write-Host "Le script continue, mais certaines actions nécessiteront des droits administratifs." -ForegroundColor Yellow
}
} else {
Write-Log "Le script est exécuté avec des privilèges administratifs."
}
}
# Fonction pour activer le compte Administrateur intégré
function Enable-SuperAdmin {
Write-Log "Tentative d'activation du compte Administrateur intégré..."
Write-Host "Activation du compte Administrateur intégré..." -ForegroundColor Green
try {
Enable-LocalUser -Name "Administrator"
Write-Log "Le compte Administrateur intégré a été activé avec succès."
Write-Host "Le compte Administrateur intégré a été activé avec succès." -ForegroundColor Yellow
# Demande de double saisie du mot de passe
while ($true) {
$password1 = Read-Host "Entrez un mot de passe pour le compte Administrateur" -AsSecureString
$password2 = Read-Host "Confirmez le mot de passe pour le compte Administrateur" -AsSecureString
if ([System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password1)) -eq `
[System.Runtime.InteropServices.Marshal]::PtrToStringAuto([System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($password2))) {
Write-Log "Les mots de passe correspondent."
Write-Host "Les mots de passe correspondent. Le mot de passe sera appliqué." -ForegroundColor Green
# Pause pour confirmer avant d'appliquer le mot de passe
Read-Host "Appuyez sur Entrée pour appliquer le mot de passe..."
break
} else {
Write-Log "Les mots de passe ne correspondent pas." "WARNING"
Write-Host "Les mots de passe ne correspondent pas. Veuillez réessayer." -ForegroundColor Red
}
}
# Appliquer le mot de passe
Set-LocalUser -Name "Administrator" -Password $password1
Write-Log "Mot de passe défini pour le compte Administrateur."
Write-Host "Le mot de passe a été défini avec succès." -ForegroundColor Yellow
} catch {
Write-Log "Erreur lors de l'activation du compte Administrateur : $($_.Exception.Message)" "ERROR"
Write-Host "Une erreur est survenue : $($_.Exception.Message)" -ForegroundColor Red
}
}
# Fonction pour désactiver le compte Administrateur intégré
function Disable-SuperAdmin {
Write-Log "Tentative de désactivation du compte Administrateur intégré..."
Write-Host "Désactivation du compte Administrateur intégré..." -ForegroundColor Green
try {
Disable-LocalUser -Name "Administrator"
Write-Log "Le compte Administrateur intégré a été désactivé avec succès."
Write-Host "Le compte Administrateur intégré a été désactivé avec succès." -ForegroundColor Yellow
} catch {
Write-Log "Erreur lors de la désactivation du compte Administrateur : $($_.Exception.Message)" "ERROR"
Write-Host "Une erreur est survenue lors de la désactivation : $($_.Exception.Message)" -ForegroundColor Red
}
Read-Host "Appuyez sur Entrée pour continuer..."
}
# Menu principal
function Show-Menu {
Clear-Host
Write-Host "======================================" -ForegroundColor Cyan
Write-Host "Gestion du compte Super Administrateur" -ForegroundColor Cyan
Write-Host "======================================" -ForegroundColor Cyan
Write-Host "Nom du script : GestionSuperAdmin_AAZ" -ForegroundColor White
Write-Host "Créateur : PiB pour TEAM-AAZ" -ForegroundColor White
Write-Host "Version : 1.0.0.1.e" -ForegroundColor White
Write-Host "Date : Janvier 2025" -ForegroundColor White
Write-Host "======================================" -ForegroundColor Cyan
Write-Host "1. Activer le compte Administrateur intégré"
Write-Host "2. Désactiver le compte Administrateur intégré"
Write-Host "3. Quitter"
Write-Host ""
$choice = Read-Host "Entrez votre choix"
Write-Log "Choix utilisateur : $choice"
return $choice
}
# Boucle principale
do {
$userChoice = Show-Menu
switch ($userChoice) {
"1" { Enable-SuperAdmin }
"2" { Disable-SuperAdmin }
"3" { Write-Log "L'utilisateur a quitté le script."; Write-Host "Au revoir !" -ForegroundColor Yellow }
default { Write-Log "Choix invalide : $userChoice" "WARNING"; Write-Host "Choix invalide, veuillez réessayer." -ForegroundColor Red }
}
} while ($userChoice -ne "3")
# Pause pour éviter la fermeture immédiate de la fenêtre
Write-Log "Fin de l'exécution du script."
Write-Host "Le script est terminé."
Read-Host "Appuyez sur Entrée pour fermer cette fenêtre."
- Vérification des privilèges administratifs :
- Le script vérifie si l'utilisateur dispose des droits administratifs nécessaires.
Si ce n'est pas le cas, il propose de relancer le script avec des privilèges administratifs via une élévation automatique.
- Le script vérifie si l'utilisateur dispose des droits administratifs nécessaires.
- Menu principal interactif :
- Affiche un menu pour gérer le compte Administrateur intégré.
Les options incluent :- Activer le compte Administrateur intégré.
- Désactiver le compte Administrateur intégré.
- Quitter le script.
- Affiche un menu pour gérer le compte Administrateur intégré.
- Activation du compte Administrateur intégré :
- Active le compte Administrateur intégré si celui-ci est désactivé.
- Demande un mot de passe pour ce compte avec une double saisie pour validation :
- Compare les deux saisies pour s'assurer qu'elles correspondent.
- Affiche un message de succès si les mots de passe sont identiques.
- Ajoute une pause pour permettre à l'utilisateur de confirmer avant de définir le mot de passe.
- Définit le mot de passe pour le compte Administrateur.
- Journalise toutes les étapes, y compris les erreurs éventuelles.
- Désactivation du compte Administrateur intégré :
- Désactive le compte Administrateur intégré.
- Affiche un message indiquant si l'action a réussi ou échoué.
- Ajoute une pause après l'exécution pour permettre de lire le résultat.
- Journalise les étapes, y compris les erreurs éventuelles.
- Journalisation complète :
- Toutes les actions du script sont consignées dans un fichier log nommé GestionSuperAdmin_AAZ.log stocké au même endroit que le script
- Les messages incluent :
- Les étapes exécutées avec succès.
- Les erreurs rencontrées.
- Les avertissements, comme des mots de passe non identiques.
- Gestion des erreurs :
- Affiche les erreurs de manière explicite dans la console et les consigne dans le log.
- Gère les cas où le script est relancé sans privilèges administratifs ou si des étapes échouent.
- Sécurité :
- Utilise des objets SecureString pour la gestion des mots de passe, minimisant l'exposition de données sensibles.
- Option pour quitter proprement :
- Permet à l'utilisateur de quitter le script via le menu principal.
- Ajoute une pause finale pour éviter la fermeture immédiate de la fenêtre
- Enregistrer le code dans un fichier txt avec l'extension .ps1 par exemple GestionSuperAdmin_AAZ.ps1
- Clic droit sur l'icône du fichier et commande Exécuter avec PowerShell
- Des messages de confirmation apparaissent au fur et à mesure de l'exécution du script.