Initialisation depot
This commit is contained in:
170
Migration/exportDomain.ps1
Normal file
170
Migration/exportDomain.ps1
Normal 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"
|
||||
Reference in New Issue
Block a user