
Vous avez créé votre fichier batch qui intègre et lance un script PowerShell.
Selon les cas, il est parfois nécessaire de vérifier que le script s'exécute avec les bons privilèges.
Comment faire pour vérifier si le script s'exécute avec une élévation de privilèges.
Pour vérifier si le script s'exécute avec les droits d'administrateur (droits étendus), vous pouvez ajouter une vérification au début de votre fichier batch. Si les droits administratifs ne sont pas disponibles, le script affichera un message et demandera à être relancé avec les privilèges requis.
Voici comment vous pouvez modifier le fichier batch pour inclure cette vérification :
- Étape 1 : Ajouter la vérification des droits d'administrateur
Ajoutez le bloc suivant au début de votre fichier batch pour vérifier si le script est exécuté avec des privilèges administratifs.
Si ce n'est pas le cas, il redémarrera le script avec les privilèges nécessaires.
Code : Tout sélectionner
@echo off :: Vérifier les droits d'administrateur openfiles >nul 2>&1 if '%errorlevel%' NEQ '0' ( echo Le script doit être exécuté en tant qu'administrateur. echo Tentative de relancement avec les privilèges d'administrateur... powershell -Command "Start-Process -Verb RunAs -FilePath '%~f0'" exit /b ) :: Lancer le script PowerShell intégré powershell -NoProfile -ExecutionPolicy Bypass -Command ^ "$ErrorActionPreference = 'Stop';" ^ "param([string]$nom = 'Utilisateur');" ^ "Write-Host ('Bonjour, ' + $nom);" ^ "Start-Sleep -Seconds 2;" ^ "Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 | Format-Table -AutoSize;" :: Fin du fichier batch pause
- Explication des modifications
- Vérification des droits d'administrateur :
- La commande openfiles nécessite des privilèges d'administrateur. Si le script est exécuté sans privilèges administratifs, elle renverra une erreur.
- Nous redirigeons sa sortie d'erreur vers nul avec >nul 2>&1 pour ne pas afficher de messages d'erreur inutiles.
- Ensuite, nous vérifions la valeur de %errorlevel%.
- Si elle n'est pas égale à 0, le script redémarre avec les droits d'administrateur en utilisant Start-Process de PowerShell avec l'option -Verb RunAs.
- La commande openfiles nécessite des privilèges d'administrateur. Si le script est exécuté sans privilèges administratifs, elle renverra une erreur.
- Relancer le script avec les privilèges d'administrateur :
La commande powershell -Command "Start-Process -Verb RunAs -FilePath '%~f0'" relance le fichier batch actuel (%~f0 représente le chemin complet du fichier batch actuel) avec des droits d'administrateur. - Script PowerShell intégré :
Cette partie reste inchangée et contient le code PowerShell que vous souhaitez exécuter.
- Vérification des droits d'administrateur :
- Explication des modifications
- Étape 2 : Enregistrer et tester
- Enregistrez le fichier batch modifié.
- Double-cliquez sur le fichier .bat pour l'exécuter.
Code : Tout sélectionner
@echo off
REM Vérification des droits d'administrateur
:: Essaye d'exécuter la commande 'openfiles' qui nécessite des privilèges administratifs.
:: Si l'utilisateur n'a pas les droits d'administrateur, la commande renverra une erreur.
openfiles >nul 2>&1
:: Vérifie si la commande précédente a échoué (si l'utilisateur n'est pas administrateur).
if '%errorlevel%' NEQ '0' (
echo Le script doit être exécuté en tant qu'administrateur.
echo Tentative de relancement avec les privilèges d'administrateur...
:: Utilise PowerShell pour redémarrer le script batch avec des droits administratifs.
powershell -Command "Start-Process -Verb RunAs -FilePath '%~f0'"
:: Quitte le script actuel puisque le nouveau processus sera lancé avec les droits nécessaires.
exit /b
)
REM À partir de ce point, le script a les droits d'administrateur.
:: Exécution du script PowerShell intégré.
:: Vous pouvez insérer votre code PowerShell ici.
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$ErrorActionPreference = 'Stop';" ^ REM Arrête le script PowerShell s'il y a une erreur
"param([string]$nom = 'Utilisateur');" ^ REM Déclare un paramètre appelé 'nom' avec une valeur par défaut de 'Utilisateur'
"Write-Host ('Bonjour, ' + $nom);" ^ REM Affiche un message de bienvenue avec le nom de l'utilisateur
"Start-Sleep -Seconds 2;" ^ REM Attend 2 secondes
REM Fin du fichier batch
pause