2010-12-10 3 views
18

Y a-t-il un rapide rapide et facile pour savoir si l'ordinateur local est joint à un domaine avec PowerShell?Comment trouver si l'ordinateur local est dans un domaine?

Je trouve beaucoup de choses sur l'obtention du domaine actuel du groupe de travail OU mais pas d'indications claires sur la façon de savoir s'il s'agit vraiment d'un groupe de travail ou d'un domaine. Je veux juste trouver cela avant d'appeler des trucs liés à Active Directory qui ne donnent qu'un timeout après une longue attente sur les ordinateurs des groupes de travail. Le [System.DirectoryServices.ActiveDirectory.Domain] :: GetCurrentDomain() prend beaucoup de temps avant d'échouer sur les ordinateurs de groupe de travail et le WMI Win32_ComputerSystem affiche le nom mais pas s'il s'agit d'un domaine réel.

/Per

Répondre

30

Win32_ComputerSystem a une propriété PartOfDomain qui indique si l'ordinateur est joint au domaine ou non. Il existe également une propriété de groupe de travail - qui devrait être vide si l'ordinateur est sur un domaine.

Exemple:

if ((gwmi win32_computersystem).partofdomain -eq $true) { 
    write-host -fore green "I am domain joined!" 
} else { 
    write-host -fore red "Ooops, workgroup!" 
} 
0

est simple. Fonctionne parce que si un ordinateur est pas dans un domaine, le userdomain par défaut est l'ordinateur local

if ($env:computername -eq $env:userdomain) { echo " no AD domain" } 
else { echo "must be in AD"} 
+2

Cela ne fonctionne pas si l'utilisateur se connecte à l'aide d'un compte local ou est un compte système intégré. Cela échouera également dans un environnement multi-domaine lorsque l'utilisateur et l'ordinateur ne sont pas dans le même domaine. – CoinEnablers

Questions connexes