Dans un environnement Active Directory (ADDS) ou un seul contrôleur de domaine (DC) est présent, il est fort probable que les machines virtuelles aient des problèmes d'accès aux fonctionnalités réseau.
Ceci s'explique par la séquence de démarrage : un DC n'est pas seulement un serveur ADDS, c'est aussi en client ADDS. Lorsque le DC démarre, son client ADDS se lance alors que la partie serveur ADDS n'a pas fini de démarrer (ce ne sera pas le cas si l'environnement compte plusieurs DC du même domaine ADDS).
Vérification du démarrage du DC
Il est possible de constater si le DC n'a pas correctement démarré dans l'interface, comme en PowerShell.
- Pour vérifier en PowerShell, lancer une invite Windows PowerShell en administrateur (en faisant, par exemple, un clic-droit sur le bouton Démarre de la barre des tâches et en choisissant Windows Powershell (admin) ou Terminal (admin))
- Dans l'invite PowerShell, utilisez la commande suivante :
(Get-NetConnectionProfile).NetworkCategory
Si le résultat de la précente commande est Public ou Private, le DC n'a pas correctement démarré : passez à la procédure de nettoyage du réseau du DC. Sinon (si le résultat de la commande est DomainAuthenticated), le reste de cette procédure ne vous servira pas pour ce démarrage. - Pour vérifier en interface graphique, dans une session administrative sur votre DC, lancez le gestionnaire de serveur (Server Manager).
- Cliquez sur l'onglet Local Server
- Dans la section Properties, notez la valeur de Microsoft Defender Firewall
Si le résultat affiché est Public: On ou private: On, le DC n'a pas correctement démarré : passez à la procédure de nettoyage du réseau du DC. Sinon, le reste de cette procédure ne vous servira pas pour ce démarrage.
Nettoyage du réseau du DC
Si le DC de votre domaine ADDS n'a pas correctement démarré, vous pouvez forcer le redémarrage de son client ADDS une fois que le service serveur ADDS a démarré. Si vous êtes connecté localement sur le DC, le service serveur ADDS a correctement démarré.
- Pour redémarrer la carte réseau du DC en PowerShell, lancer une invite Windows PowerShell en administrateur (en faisant, par exemple, un clic-droit sur le bouton Démarre de la barre des tâches et en choisissant Windows Powershell (admin) ou Terminal (admin))
- Dans l'invite PowerShell, utilisez la commande suivante :
Get-NetAdapter|restart-NetAdapter - Une fois cette commande passée, votre DC devrait être proprement démarré (vous pouvez le vérifier par la procédure précédente).
- Pour redémarrer la carte réseau du DC en interface graphique, lancez le gestionnaire de serveur (Server Manager).
- Dans la section Properties, cliquez sur l'adresse IP en face du nom de votre carte réseau (Ethernet par défaut).
- Dans la fenêtre Network Connections qui s'affiche, sélectionnez la carte réseau.
- Cliquez ensuite sur le bouton Disable this network device.
- Resélectionnez la carte réseau.
- Cliquez ensuite sur le bouton Enable this network device.
- Après ces deux actions, votre DC devrait être proprement démarré (vous pouvez le vérifier par la procédure précédente).
(re)Démarrage des clients
Une fois le DC correctement démarré, il va vous falloir redémarrer toutes les autres machines virtuelles (afin qu'elles aient effectué leur démarrage dans un contexte ADDS propre et sécurisé).
Comme pour les procédures précédentes, vous pouvez réaliser celle-ci en PowerShell :
- Lancez une invite Windows PowerShell en administrateur (en faisant, par exemple, un clic-droit sur le bouton Démarre de la barre des tâches et en choisissant Windows Powershell (admin) ou Terminal (admin))
- Dans l'invite PowerShell, utilisez la commande suivante :
Get-ADComputer -Filter * -SearchBase (Get-ADDomain -Current LocalComputer).computersContainer |ForEach-Object { $compName = $_.DNSHostName.ToLower(); try { Restart-Computer -ComputerName $compName -Force -ErrorAction Stop; Write-Host "Redemarrage de $compName." -ForegroundColor Green } Catch { Write-Host "Impossible de redemarrer $compName." -ForegroundColor Red }} - Une fois ces commandes passées, attendez que la machine sur laquelle vous souhaitez travailler ait redémarré...
- Pour redémarrer les machines en passant par l'interface graphique, réalisez les opérations suivantes sur chaque machine virtuelle :
- Basculez sur la machine à redémarrer.
- Ouvrez une session administrative sur la machine virtuelle
- Faites un clic-droit sur le menu Démarrer et choisissez Shutdown or sign out > Restart
- Il est fortement conseillé de commencer par la machine sur laquelle vous souhaitez ouvrir ensuite une session, la séquence de redémarrage des autres permettra ainsi de patienter pendant le redémarrage de la première...
Astuces
Si vous voulez vous simplifier la vie, vous pouvez systèmatiser l'utilisation de la procédure suivante :
- Ouvrir une session sur le DC avec le compte administrateur du domaine ADDS.
- Lancez une invite Windows PowerShell (5.x en administrateur).
- Utilisez les quelques lignes de script suivantes pour réaliser l'ensemble des opérations proposées dans les procédures précédentes en une fois :
$ADdomain = Get-ADDomain -Current LocalComputer if ((Get-NetConnectionProfile).NetworkCategory -ne 'DomainAuthenticated') { Write-Host "Nettoyage du réseau local." -ForegroundColor Yellow Get-NetAdapter|Restart-NetAdapter while((Get-NetConnectionProfile).NetworkCategory -ne 'DomainAuthenticated') { Start-Sleep -Seconds 1 } } else { Write-Host "Réseau local déjà en mode domaine." -ForegroundColor Green} Get-ADComputer -Filter * | Where DNSHostName -NotLike "$($ENV:ComputerName)*" | ForEach-Object { $compName = $_.DNSHostName try { Restart-Computer -ComputerName $compName -Force -ErrorAction Stop Write-Host "Redémarrage de $compName." -ForegroundColor Green } Catch { Write-Host "Impossible de redémarrer $compName." -ForegroundColor Red Write-Host " ($($_.Exception.Message))." -ForegroundColor Magenta }} - Si vous le préférez, vous pouvez utiliser la commande suivante qui appelle un script contenant toutes les lignes présentées ci-dessus :
Invoke-Command -ScriptBlock ([Scriptblock]::Create((Invoke-WebRequest 'https://raw.githubusercontent.com/renaudwangler/ib-labs/master/dcNetStart/doItAll.ps1' -useBasicParsing).Content))