# Vérifier l'exécution en mode administrateur (élevé) if (-not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole(` [Security.Principal.WindowsBuiltInRole] "Administrator")) { Write-Error "ERREUR : Ce script doit être exécuté en tant qu'administrateur." exit 1 } try { Write-Output "Identification du disque système contenant C:..." $systemPartition = Get-Partition -DriveLetter C if (-not $systemPartition) { throw "Impossible d'identifier la partition C:. Abandon." } $diskNumber = $systemPartition.DiskNumber Write-Output "Disque système détecté : Disk $diskNumber (contenant C:)." # Récupérer la 5e partition du disque système, si elle existe $partition5 = Get-Partition -DiskNumber $diskNumber | Where-Object { $_.PartitionNumber -eq 5 } if ($partition5) { $part5SizeGB = [math]::Round($partition5.Size / 1GB, 3) # taille en Go arrondie à 3 décimales Write-Output "Partition 5 trouvée (taille = $part5SizeGB Go). Vérification de la taille (<1 Go)..." if ($partition5.Size -lt 1GB) { Write-Output "La partition 5 fait moins de 1 Go ($part5SizeGB Go) : suppression en cours..." try { # Supprimer la partition 5 (forcé, sans confirmation) Remove-Partition -DiskNumber $diskNumber -PartitionNumber 5 -Confirm:$false Write-Output "=> Partition 5 supprimée avec succès." } catch { throw "Échec lors de la suppression de la partition 5 : $($_.Exception.Message)" } # Après suppression, étendre la partition C: pour occuper l'espace libéré Write-Output "Extension de la partition C: pour utiliser l'espace désormais libre..." try { # Calculer la taille maximale supportée pour C: puis étendre $sizeRange = Get-PartitionSupportedSize -DriveLetter C $maxSize = $sizeRange.SizeMax Resize-Partition -DriveLetter C -Size $maxSize Write-Output "=> Partition C: étendue avec succès à la taille maximale disponible." } catch { throw "Échec lors de l'extension de la partition C: $($_.Exception.Message)" } } else { Write-Output "La partition 5 fait $part5SizeGB Go (>= 1 Go) : aucune suppression n'est effectuée." Write-Output "Aucune extension du lecteur C: n'est nécessaire." } } else { Write-Output "Aucune 5e partition n'a été trouvée sur le disque $diskNumber. Aucune suppression n'est nécessaire." Write-Output "Aucune extension du lecteur C: n'est nécessaire." } } catch { Write-Error "Une erreur inattendue s'est produite : $_" exit 2 } # Script PowerShell pour changer le nom du PC par le numéro de série (avec nettoyage) # Récupérer le numéro de série du PC $SerialNumber = (Get-WmiObject -Class Win32_BIOS).SerialNumber # Vérification pour s'assurer que le numéro de série est valide if (-not $SerialNumber -or $SerialNumber -match "^[ ]*$") { Write-Host "Erreur : Impossible de récupérer un numéro de série valide." -ForegroundColor Red exit 1 } # Nettoyage du numéro de série (supprime les caractères non valides pour un nom d'ordinateur) $CleanedSerialNumber = $SerialNumber -replace '[^a-zA-Z0-9\-]', '' # Vérification après nettoyage if ($CleanedSerialNumber.Length -eq 0) { Write-Host "Erreur : Le numéro de série est invalide après nettoyage." -ForegroundColor Red exit 1 } # Limiter à 15 caractères (limite de Windows pour les noms NetBIOS) $CleanedSerialNumber = $CleanedSerialNumber.Substring(0, [Math]::Min($CleanedSerialNumber.Length, 15)) # Affichage du numéro de série nettoyé Write-Host "Numéro de série nettoyé et utilisé comme nom du PC : $CleanedSerialNumber" -ForegroundColor Green # Changer le nom du PC try { Rename-Computer -NewName $CleanedSerialNumber -Force -Restart Write-Host "Le nom du PC a été changé avec succès en : $CleanedSerialNumber. Le PC va redémarrer." -ForegroundColor Cyan } catch { Write-Host "Erreur lors du changement de nom du PC : $_" -ForegroundColor Red }