# ============================================================================ # TEST-WTURNDOMAIN.PS1 # Script de diagnostic pour vérifier la connectivité au domaine W-TURN.LAN # ============================================================================ # Date: 11 janvier 2026 # Version: 1.0 # # USAGE: # .\Test-WTurnDomain.ps1 # (Pas besoin de droits admin pour les tests basiques) # # Ce script va tester: # - Configuration réseau # - Configuration DNS # - Connectivité au contrôleur de domaine # - Ports Active Directory # - État du domaine actuel # ============================================================================ # Configuration $DomainName = "W-TURN.LAN" $DomainController = "192.168.100.250" $DomainControllerName = "base.w-turn.lan" $RequiredPorts = @( @{Port=53; Name="DNS"}, @{Port=88; Name="Kerberos"}, @{Port=135; Name="RPC"}, @{Port=139; Name="NetBIOS-SSN"}, @{Port=389; Name="LDAP"}, @{Port=445; Name="SMB"}, @{Port=464; Name="Kerberos Password"}, @{Port=636; Name="LDAPS"} ) # ============================================================================ # FONCTIONS # ============================================================================ function Write-TestHeader { param([string]$Title) Write-Host "`n" ("="*70) -ForegroundColor Cyan Write-Host " $Title" -ForegroundColor Cyan Write-Host ("="*70) -ForegroundColor Cyan } function Write-TestResult { param( [string]$TestName, [bool]$Success, [string]$Details = "" ) $Status = if ($Success) { "✅ PASS" } else { "❌ FAIL" } $Color = if ($Success) { "Green" } else { "Red" } Write-Host "$Status - $TestName" -ForegroundColor $Color if ($Details) { Write-Host " $Details" -ForegroundColor Gray } } # ============================================================================ # TESTS # ============================================================================ Clear-Host Write-Host "╔════════════════════════════════════════════════════════════════╗" -ForegroundColor Cyan Write-Host "║ ║" -ForegroundColor Cyan Write-Host "║ DIAGNOSTIC CONNECTIVITÉ DOMAINE W-TURN.LAN ║" -ForegroundColor Cyan Write-Host "║ ║" -ForegroundColor Cyan Write-Host "╚════════════════════════════════════════════════════════════════╝" -ForegroundColor Cyan # Test 1: Informations système Write-TestHeader "INFORMATIONS SYSTÈME" $OS = Get-WmiObject -Class Win32_OperatingSystem $Computer = Get-WmiObject -Class Win32_ComputerSystem Write-Host "OS : $($OS.Caption)" -ForegroundColor White Write-Host "Version : $($OS.Version)" -ForegroundColor White Write-Host "Architecture: $($OS.OSArchitecture)" -ForegroundColor White Write-Host "Hostname : $($Computer.Name)" -ForegroundColor White Write-Host "Domaine : $($Computer.Domain)" -ForegroundColor White Write-Host "Workgroup : $($Computer.Workgroup)" -ForegroundColor White $InDomain = $Computer.PartOfDomain Write-TestResult "Membre d'un domaine" $InDomain "$($Computer.Domain)" # Test 2: Configuration réseau Write-TestHeader "CONFIGURATION RÉSEAU" $NetAdapters = Get-NetAdapter | Where-Object {$_.Status -eq "Up"} foreach ($Adapter in $NetAdapters) { Write-Host "`nInterface: $($Adapter.Name)" -ForegroundColor Yellow Write-Host " Type : $($Adapter.InterfaceDescription)" -ForegroundColor White Write-Host " Status: $($Adapter.Status)" -ForegroundColor Green $IpConfig = Get-NetIPAddress -InterfaceIndex $Adapter.InterfaceIndex -AddressFamily IPv4 -ErrorAction SilentlyContinue if ($IpConfig) { Write-Host " IP : $($IpConfig.IPAddress)" -ForegroundColor White } } # Test 3: Configuration DNS Write-TestHeader "CONFIGURATION DNS" $DnsServers = Get-DnsClientServerAddress -AddressFamily IPv4 | Where-Object {$_.ServerAddresses} $HasCorrectDns = $false foreach ($DnsConfig in $DnsServers) { Write-Host "`nInterface: $($DnsConfig.InterfaceAlias)" -ForegroundColor Yellow Write-Host " Serveurs DNS: $($DnsConfig.ServerAddresses -join ', ')" -ForegroundColor White if ($DnsConfig.ServerAddresses -contains $DomainController) { $HasCorrectDns = $true } } Write-TestResult "DNS configuré vers DC ($DomainController)" $HasCorrectDns # Test 4: Résolution DNS Write-TestHeader "RÉSOLUTION DNS" try { $DnsResult = Resolve-DnsName -Name $DomainName -ErrorAction Stop Write-TestResult "Résolution de $DomainName" $true "$($DnsResult.IPAddress)" } catch { Write-TestResult "Résolution de $DomainName" $false $_.Exception.Message } try { $DcDnsResult = Resolve-DnsName -Name $DomainControllerName -ErrorAction Stop Write-TestResult "Résolution de $DomainControllerName" $true "$($DcDnsResult.IPAddress)" } catch { Write-TestResult "Résolution de $DomainControllerName" $false $_.Exception.Message } # Test 5: Connectivité réseau Write-TestHeader "CONNECTIVITÉ AU CONTRÔLEUR DE DOMAINE" $PingResult = Test-Connection -ComputerName $DomainController -Count 4 -Quiet Write-TestResult "Ping $DomainController" $PingResult if ($PingResult) { $PingStats = Test-Connection -ComputerName $DomainController -Count 4 $AvgLatency = ($PingStats | Measure-Object -Property ResponseTime -Average).Average Write-Host " Latence moyenne: $([math]::Round($AvgLatency, 2)) ms" -ForegroundColor Gray } # Test 6: Ports Active Directory Write-TestHeader "TEST DES PORTS ACTIVE DIRECTORY" foreach ($PortTest in $RequiredPorts) { $TestResult = Test-NetConnection -ComputerName $DomainController -Port $PortTest.Port -WarningAction SilentlyContinue -InformationLevel Quiet $PortInfo = "$($PortTest.Port) ($($PortTest.Name))" Write-TestResult "Port $PortInfo" $TestResult } # Test 7: Accès aux partages Write-TestHeader "ACCÈS AUX PARTAGES RÉSEAU" $Shares = @( "\\$DomainControllerName\sysvol", "\\$DomainControllerName\netlogon", "\\$DomainController\sysvol" ) foreach ($Share in $Shares) { try { $ShareTest = Test-Path $Share -ErrorAction Stop Write-TestResult "Accès à $Share" $ShareTest } catch { Write-TestResult "Accès à $Share" $false "Nécessite authentification domaine" } } # Test 8: État du domaine (si membre) if ($InDomain) { Write-TestHeader "ÉTAT DU DOMAINE" try { $TrustTest = nltest /sc_query:$DomainName 2>&1 $TrustOk = $LASTEXITCODE -eq 0 Write-TestResult "Relation d'approbation" $TrustOk } catch { Write-TestResult "Relation d'approbation" $false } try { $DcList = nltest /dclist:$DomainName 2>&1 Write-Host "`nContrôleurs de domaine:" -ForegroundColor Yellow Write-Host $DcList -ForegroundColor White } catch {} } # Test 9: Stratégies de groupe (si membre du domaine) if ($InDomain) { Write-TestHeader "STRATÉGIES DE GROUPE" try { $GpResult = gpresult /r 2>&1 | Select-String "COMPUTER SETTINGS","USER SETTINGS","Applied Group Policy Objects" Write-Host $GpResult -ForegroundColor White } catch {} } # Résumé final Write-TestHeader "RÉSUMÉ ET RECOMMANDATIONS" $AllGood = $HasCorrectDns -and $PingResult -and (-not $InDomain -or $TrustOk) if ($AllGood) { Write-Host "`n✅ " -NoNewline -ForegroundColor Green Write-Host "Configuration OK - Prêt pour le domain join" -ForegroundColor Green Write-Host "" Write-Host "Prochaine étape:" -ForegroundColor Yellow Write-Host " Exécuter Join-WTurnDomain.ps1 (en tant qu'Administrateur)" -ForegroundColor White } else { Write-Host "`n⚠️ " -NoNewline -ForegroundColor Yellow Write-Host "Problèmes détectés - Vérifications nécessaires" -ForegroundColor Yellow Write-Host "" if (-not $HasCorrectDns) { Write-Host "❌ DNS mal configuré" -ForegroundColor Red Write-Host " Solution: Configurer DNS vers $DomainController" -ForegroundColor White Write-Host " Commande: Set-DnsClientServerAddress -InterfaceAlias 'Ethernet' -ServerAddresses '$DomainController','192.168.1.254'" -ForegroundColor Gray Write-Host "" } if (-not $PingResult) { Write-Host "❌ Contrôleur de domaine inaccessible" -ForegroundColor Red Write-Host " Vérifier: Câble réseau, firewall, DC allumé" -ForegroundColor White Write-Host "" } } Write-Host "" Write-Host "Documentation complète: WINDOWS11_DOMAIN_JOIN_GUIDE.md" -ForegroundColor Cyan Write-Host "" Read-Host "Appuyez sur Entrée pour quitter"