Implemantation Lenovo Bios Password non crypte
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# ConfigureBIOSLenovo_TSIntegration.ps1
|
||||
# Applique les paramètres BIOS Lenovo via le module SetBIOS
|
||||
# Mode ZÉRO TOUCH - Pas d'interaction utilisateur
|
||||
# Utilise une variable MDT BIOSPassword pour authentification automatique
|
||||
|
||||
Write-Output "[INFO] ========== Démarrage de la configuration BIOS Lenovo (Zéro Touch) =========="
|
||||
|
||||
# Déterminer le modèle Lenovo et sélectionner le fichier CSV approprié
|
||||
$LenovoModel = $env:LenovoModel
|
||||
|
||||
if ([string]::IsNullOrEmpty($LenovoModel)) {
|
||||
try {
|
||||
$LenovoModel = (Get-WmiObject Win32_ComputerSystemProduct -ErrorAction Stop).Name
|
||||
Write-Output "[INFO] LenovoModel obtenu via WMI: $LenovoModel"
|
||||
}
|
||||
catch {
|
||||
Write-Output "[WARN] Impossible de déterminer le modèle Lenovo - utilisation de la valeur par défaut Gen 3"
|
||||
$LenovoModel = "Gen 3"
|
||||
}
|
||||
}
|
||||
|
||||
# Déterminer le fichier CSV selon la génération
|
||||
if ($LenovoModel -like "*Gen 5*" -or $LenovoModel -like "*Gen5*" -or $LenovoModel -like "*gen 5*" -or $LenovoModel -like "*gen5*") {
|
||||
Write-Output "[INFO] Détection ThinkCentre neo 50s Gen 5 ($LenovoModel)"
|
||||
$CSVFile = "%DEPLOYROOT%\Scripts\SupportHDF\CSV\ConfigBIOSLenovo_Gen5.csv"
|
||||
} elseif ($LenovoModel -like "*Gen 4*" -or $LenovoModel -like "*Gen4*" -or $LenovoModel -like "*gen 4*" -or $LenovoModel -like "*gen4*") {
|
||||
Write-Output "[INFO] Détection ThinkCentre neo 50s Gen 4 ($LenovoModel)"
|
||||
$CSVFile = "%DEPLOYROOT%\Scripts\SupportHDF\CSV\ConfigBIOSLenovo_Gen4.csv"
|
||||
} else {
|
||||
Write-Output "[INFO] Détection ThinkCentre neo 50s Gen 3 ou antérieur ($LenovoModel)"
|
||||
$CSVFile = "%DEPLOYROOT%\Scripts\SupportHDF\CSV\ConfigBIOSLenovo_Gen3.csv"
|
||||
}
|
||||
|
||||
# Remplacer %DEPLOYROOT% par la vraie valeur
|
||||
$CSVFile = $CSVFile -replace "%DEPLOYROOT%", $env:DEPLOYROOT
|
||||
|
||||
# Vérifier que le fichier CSV existe
|
||||
if (!(Test-Path $CSVFile)) {
|
||||
Write-Output "[ERROR] Fichier CSV non trouvé: $CSVFile"
|
||||
exit 1
|
||||
}
|
||||
|
||||
Write-Output "[INFO] Utilisation du fichier CSV: $CSVFile"
|
||||
|
||||
# Charger le module SetBIOS
|
||||
$SetBIOSModule = Join-Path $env:DEPLOYROOT "Tools\Modules\SetBIOS\1.0\SetBIOS.psm1"
|
||||
if (!(Test-Path $SetBIOSModule)) {
|
||||
Write-Output "[ERROR] Module SetBIOS non trouvé: $SetBIOSModule"
|
||||
exit 1
|
||||
}
|
||||
|
||||
try {
|
||||
Import-Module $SetBIOSModule -ErrorAction Stop -Force
|
||||
Write-Output "[INFO] Module SetBIOS importé avec succès"
|
||||
} catch {
|
||||
Write-Output "[ERROR] Impossible d'importer le module SetBIOS: $_"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Récupérer le mot de passe BIOS depuis les variables MDT
|
||||
$BIOSPassword = $env:BIOSPassword
|
||||
if ([string]::IsNullOrEmpty($BIOSPassword)) {
|
||||
Write-Output "[WARN] Variable MDT BIOSPassword non trouvée"
|
||||
}
|
||||
|
||||
# Vérifier si un mot de passe BIOS est configuré sur le système
|
||||
Write-Output "[INFO] Vérification de l'état du mot de passe BIOS..."
|
||||
try {
|
||||
$BIOSPasswordSettings = Get-WmiObject -Class Lenovo_BiosPasswordSettings -Namespace root\wmi -ErrorAction Stop
|
||||
$PasswordState = $BIOSPasswordSettings.PasswordState
|
||||
Write-Output "[INFO] État du mot de passe BIOS: $PasswordState (0=Pas de mot de passe, 1=Admin, 2=Système, 3=Utilisateur)"
|
||||
|
||||
$IsPasswordSet = ($PasswordState -eq 2 -or $PasswordState -eq 1 -or $PasswordState -eq 3)
|
||||
} catch {
|
||||
Write-Output "[WARN] Impossible de vérifier l'état du mot de passe BIOS via WMI: $_"
|
||||
$IsPasswordSet = $false
|
||||
}
|
||||
|
||||
# Vérifier cohérence mot de passe
|
||||
if ($IsPasswordSet -and [string]::IsNullOrEmpty($BIOSPassword)) {
|
||||
Write-Output "[ERROR] Un mot de passe BIOS est configuré mais la variable MDT BIOSPassword est vide"
|
||||
Write-Output "[ERROR] Ajoutez 'BIOSPassword=VOTRE_MOT_DE_PASSE' dans CustomSettings.ini"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Exécuter Set-BIOS avec le fichier CSV - Zéro Touch
|
||||
try {
|
||||
Write-Output "[INFO] Application des paramètres BIOS Lenovo..."
|
||||
|
||||
if ($IsPasswordSet -and -not [string]::IsNullOrEmpty($BIOSPassword)) {
|
||||
Write-Output "[INFO] Application des paramètres avec authentification BIOS..."
|
||||
Set-Bios -CSV $CSVFile -PasswordValue $BIOSPassword -ErrorAction Stop
|
||||
} else {
|
||||
Write-Output "[INFO] Application des paramètres BIOS sans authentification..."
|
||||
Set-Bios -CSV $CSVFile -ErrorAction Stop
|
||||
}
|
||||
|
||||
Write-Output "[INFO] ========== Paramètres BIOS appliqués avec succès (Zéro Touch) =========="
|
||||
exit 0
|
||||
} catch {
|
||||
Write-Output "[ERROR] Erreur lors de l'application des paramètres BIOS: $_"
|
||||
Write-Output "[ERROR] ========== Configuration BIOS échouée =========="
|
||||
exit 1
|
||||
}
|
||||
Reference in New Issue
Block a user