Initialisation depot

This commit is contained in:
Serge NOEL
2026-02-10 12:12:11 +01:00
commit c3176e8d79
818 changed files with 52573 additions and 0 deletions

170
Migration/exportDomain.ps1 Normal file
View File

@@ -0,0 +1,170 @@
# exportDomain.ps1 - Exécuter sur Windows 2022 AD
# Script complet d'exportation vers format csv
# Installer le module PowerShell-Yaml si nécessaire
# Install-Module powershell-yaml -Force
Write-Host "=== Début de l'extraction Active Directory ==="
# ===== EXTRACTION DU DOMAINE =====
Write-Host "1. Extraction des informations de domaine..."
$Domain = Get-ADDomain
$DomainData = @{
'DomainSID' = $Domain.DomainSID.Value
'DomainName' = $Domain.Name
'DNSRoot' = $Domain.DNSRoot
'NetBIOSName' = $Domain.NetBIOSName
'DomainMode' = $Domain.DomainMode.ToString()
'ForestMode' = $Domain.Forest
'PDCEmulator' = $Domain.PDCEmulator
'RIDMaster' = $Domain.RIDMaster
'InfrastructureMaster' = $Domain.InfrastructureMaster
}
# ===== EXTRACTION DES UTILISATEURS =====
Write-Host "2. Extraction des utilisateurs..."
$Users = Get-ADUser -Filter * -Properties *
$UserExport = @()
foreach ($User in $Users) {
# Exclure les comptes système par défaut
# if ($User.SamAccountName -notmatch '^(Administrator|Guest|krbtgt|DefaultAccount|WDAGUtilityAccount)$') {
if ($User.SamAccountName -notmatch '^(Administrator|Guest|Administrateur|Invité|krbtgt|DefaultAccount|WDAGUtilityAccount)$') {
$UserData = [PSCustomObject]@{
'UGIVEN' = if ($User.GivenName) { $User.GivenName } else { "" }
'LOGIN' = $User.SamAccountName
'OBJECTSID' = $User.SID.Value
'UNAME' = if ($User.Surname) { $User.Surname } else { "" }
}
$UserExport += $UserData
}
}
# ===== EXTRACTION DES ORDINATEURS =====
Write-Host "3. Extraction des ordinateurs..."
$Computers = Get-ADComputer -Filter * -Properties *
$ComputerExport = @()
foreach ($Computer in $Computers) {
# Exclure les contrôleurs de domaine
if ($Computer.Name -notmatch '^(DC|DOMAIN)') {
$ComputerData = [PSCustomObject]@{
'NAME' = $Computer.Name
'OBJECTSID' = $Computer.SID.Value
}
$ComputerExport += $ComputerData
}
}
# ===== EXTRACTION DES GROUPES =====
Write-Host "4. Extraction des groupes..."
$Groups = Get-ADGroup -Filter * -Properties *
$GroupExport = @()
foreach ($Group in $Groups) {
# Exclure les groupes système par défaut
$SystemGroups = @(
# Groupes de domaine en français
'Admins du domaine', 'Utilisateurs du domaine', 'Invités du domaine', 'Ordinateurs du domaine',
'Administrateurs', 'Utilisateurs', 'Invités', 'Utilisateurs avec pouvoirs', 'Opérateurs de sauvegarde',
'Duplicateurs', 'Opérateurs de configuration réseau', 'Utilisateurs de l''Analyseur de performances',
'Utilisateurs du journal de performances', 'Utilisateurs du modèle COM distribué', 'IIS_IUSRS',
'Opérateurs de chiffrement', 'Lecteurs des journaux d''événements', 'Accès DCOM service de certificats',
'Serveurs Accès Distant RDS', 'Serveurs RDS Endpoint', 'Serveurs Gestion RDS',
'Administrateurs Hyper-V', 'Opérateurs d''assistance de contrôle d''accès',
'Utilisateurs de gestion à distance', 'Administrateurs de réplication de stockage',
'Administrateurs du schéma', 'Administrateurs de l''entreprise', 'Éditeurs de certificats', 'Contrôleurs de domaine',
'Propriétaires créateurs de la stratégie de groupe', 'Serveurs RAS et IAS', 'Opérateurs de serveur',
'Opérateurs de compte', 'Opérateurs d''impression', 'Accès compatible pré-Windows 2000',
'Générateurs d''approbations de forêt entrante', 'Groupe d''accès d''autorisation Windows',
'Serveurs de licences des services Terminal Server', 'Utilisateurs DHCP', 'Administrateurs DHCP',
'DnsAdmins', 'DnsUpdateProxy', 'Utilisateurs WINS', 'IIS_WPG',
'Groupe de réplication dont le mot de passe RODC est refusé', 'Groupe de réplication dont le mot de passe RODC est autorisé',
'Contrôleurs de domaine d''entreprise en lecture seule', 'Contrôleurs de domaine en lecture seule',
'Contrôleurs de domaine clonables', 'Utilisateurs protégés', 'Administrateurs clés',
'Administrateurs clés Enterprise',
# Noms anglais pour compatibilité (au cas où certains groupes gardent leur nom anglais)
'Domain Admins', 'Domain Users', 'Domain Guests', 'Domain Computers',
'Administrators', 'Users', 'Guests', 'Power Users', 'Backup Operators',
'Replicator', 'Network Configuration Operators', 'Performance Monitor Users',
'Performance Log Users', 'Distributed COM Users',
'Cryptographic Operators', 'Event Log Readers', 'Certificate Service DCOM Access',
'RDS Remote Access Servers', 'RDS Endpoint Servers', 'RDS Management Servers',
'Hyper-V Administrators', 'Access Control Assistance Operators',
'Remote Management Users', 'Storage Replica Administrators',
'Schema Admins', 'Enterprise Admins', 'Cert Publishers', 'Domain Controllers',
'Group Policy Creator Owners', 'RAS and IAS Servers', 'Server Operators',
'Account Operators', 'Print Operators', 'Pre-Windows 2000 Compatible Access',
'Incoming Forest Trust Builders', 'Windows Authorization Access Group',
'Terminal Server License Servers', 'DHCP Users', 'DHCP Administrators',
'Denied RODC Password Replication Group', 'Allowed RODC Password Replication Group',
'Enterprise Read-only Domain Controllers', 'Read-only Domain Controllers',
'Cloneable Domain Controllers', 'Protected Users', 'Key Admins',
'Enterprise Key Admins'
)
if ($Group.Name -notin $SystemGroups -and $Group.SamAccountName -notmatch '\$$') {
$GroupData = [PSCustomObject]@{
'NAME' = $Group.Name
'OBJECTSID' = $Group.SID.Value
}
$GroupExport += $GroupData
}
}
# ===== CONSOLIDATION DES DONNÉES =====
Write-Host "5. Consolidation des donnees..."
$ConsolidatedData = @{
'ExportDate' = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
'ExportedBy' = $env:USERNAME
'Domain' = $DomainData
'Users' = $UserExport
'Computers' = $ComputerExport
'Groups' = $GroupExport
'Statistics' = @{
'TotalUsers' = $UserExport.Count
'TotalComputers' = $ComputerExport.Count
'TotalGroups' = $GroupExport.Count
}
}
# Afficher un aperçu pour vérification
Write-Host "Aperçu des données exportées :"
Write-Host "Premier utilisateur : $($UserExport[0].LOGIN) - $($UserExport[0].UGIVEN) $($UserExport[0].UNAME)"
if ($ComputerExport.Count -gt 0) {
Write-Host "Premier ordinateur : $($ComputerExport[0].NAME)"
}
if ($GroupExport.Count -gt 0) {
Write-Host "Premier groupe : $($GroupExport[0].NAME)"
}
# ===== EXPORT VERS CSV =====
Write-Host "6. Export vers fichiers CSV..."
# Créer le répertoire temp s'il n'existe pas
if (!(Test-Path "C:\temp")) {
New-Item -ItemType Directory -Path "C:\temp" -Force
}
# Export complet en JSON pour référence
$ConsolidatedData | ConvertTo-Json -Depth 20 | Out-File -FilePath "C:\temp\ad_export_complete.json" -Encoding UTF8
# Exports individuels en CSV
$UserExport | Export-Csv -Path "C:\temp\users.csv" -NoTypeInformation -Encoding UTF8
$ComputerExport | Export-Csv -Path "C:\temp\computers.csv" -NoTypeInformation -Encoding UTF8
$GroupExport | Export-Csv -Path "C:\temp\groups.csv" -NoTypeInformation -Encoding UTF8
Write-Host ""
Write-Host "=== Resume ==="
Write-Host "Utilisateurs exportes : $($UserExport.Count)"
Write-Host "Ordinateurs exportes : $($ComputerExport.Count)"
Write-Host "Groupes exportes : $($GroupExport.Count)"
Write-Host "SID de domaine : $($DomainData.DomainSID)"
Write-Host ""
Write-Host "Fichiers generes :"
Write-Host "- C:\temp\ad_export_complete.json (export complet)"
Write-Host "- C:\temp\users.csv (format CSV)"
Write-Host "- C:\temp\computers.csv (format CSV)"
Write-Host "- C:\temp\groups.csv (format CSV)"
Write-Host ""
Write-Host "Extraction terminee avec succes"