labo_ad.ps1

Note de lecture générée automatiquement

Le vrai fichier est scripts/windows/labo_ad.ps1 (Obsidian n’affiche pas les scripts eux-mêmes). Ne modifie pas cette note : modifie le script, puis relance python3 generer_vues_obsidian.py dans le dossier scripts.

Code

# =============================================================================
# labo_ad.ps1 — Monte un contrôleur de domaine de LABO sur Windows Server 2022/2025
#   ÉTAPE 1 (avant AD)  : .\labo_ad.ps1 -Etape 1   → IP fixe, nom, redémarrage
#   ÉTAPE 2             : .\labo_ad.ps1 -Etape 2   → AD DS + DNS, nouvelle forêt (redémarre)
#   ÉTAPE 3 (après AD)  : .\labo_ad.ps1 -Etape 3   → OU, groupes, utilisateurs, DHCP
#
# À lancer dans PowerShell EN ADMINISTRATEUR. Adapte les variables ci-dessous.
# ⚠ Labo uniquement : mots de passe saisis au clavier, jamais écrits dans le script.
# =============================================================================
param([Parameter(Mandatory = $true)][ValidateSet(1, 2, 3)][int]$Etape)
 
$NomServeur   = "SRV-AD01"
$Interface    = "Ethernet"            # Get-NetAdapter pour voir le nom exact
$IPServeur    = "192.168.10.10"
$Prefixe      = 24
$Passerelle   = "192.168.10.254"
$Domaine      = "sio.lan"
$NetBIOS      = "SIO"
$BaseDN       = "DC=sio,DC=lan"
 
switch ($Etape) {
  1 {
    New-NetIPAddress -InterfaceAlias $Interface -IPAddress $IPServeur -PrefixLength $Prefixe -DefaultGateway $Passerelle
    Set-DnsClientServerAddress -InterfaceAlias $Interface -ServerAddresses 127.0.0.1
    Rename-Computer -NewName $NomServeur -Restart
  }
  2 {
    Install-WindowsFeature AD-Domain-Services -IncludeManagementTools
    $motDePasseDSRM = Read-Host -AsSecureString "Mot de passe DSRM (restauration AD)"
    Install-ADDSForest -DomainName $Domaine -DomainNetbiosName $NetBIOS -InstallDns `
      -SafeModeAdministratorPassword $motDePasseDSRM -Force
    # Le serveur redémarre tout seul à la fin.
  }
  3 {
    Import-Module ActiveDirectory
    # Unités d'organisation
    foreach ($ou in "Utilisateurs-SIO", "Ordinateurs-SIO", "Groupes-SIO") {
      New-ADOrganizationalUnit -Name $ou -Path $BaseDN -ErrorAction SilentlyContinue
    }
    # Groupes par service
    foreach ($service in "Compta", "RH", "Direction", "Informatique") {
      New-ADGroup -Name "GG-$service" -GroupScope Global -Path "OU=Groupes-SIO,$BaseDN" -ErrorAction SilentlyContinue
    }
    # Utilisateurs (Prénom;Nom;Service)
    $motDePasseInitial = Read-Host -AsSecureString "Mot de passe initial des utilisateurs"
    $personnes = @("Jean;Dupont;Compta", "Alice;Martin;RH", "Karim;Benali;Informatique")
    foreach ($ligne in $personnes) {
      $prenom, $nom, $service = $ligne.Split(";")
      $login = ($prenom.Substring(0,1) + $nom).ToLower()
      New-ADUser -Name "$prenom $nom" -GivenName $prenom -Surname $nom -SamAccountName $login `
        -UserPrincipalName "$login@$Domaine" -Path "OU=Utilisateurs-SIO,$BaseDN" `
        -AccountPassword $motDePasseInitial -ChangePasswordAtLogon $true -Enabled $true
      Add-ADGroupMember -Identity "GG-$service" -Members $login
      Write-Host "Créé : $login ($service)"
    }
    # DHCP
    Install-WindowsFeature DHCP -IncludeManagementTools
    Add-DhcpServerInDC -DnsName "$NomServeur.$Domaine" -IPAddress $IPServeur
    Add-DhcpServerv4Scope -Name "LAN" -StartRange 192.168.10.100 -EndRange 192.168.10.200 -SubnetMask 255.255.255.0
    Set-DhcpServerv4OptionValue -ScopeId 192.168.10.0 -Router $Passerelle -DnsServer $IPServeur -DnsDomain $Domaine
    Get-ADUser -Filter * -SearchBase "OU=Utilisateurs-SIO,$BaseDN" | Select-Object Name, SamAccountName
  }
}