Suche einfache Abfrage, ob PC in einer Domain oder Arbeitsgruppe hängt

  • Hallo Ihr Profis,

    ich habe die Forumsuche verwendet, allerdings fehlt mir das notwendige Basis.Know-how, um aus den 32 Seiten eine passende Lösung zu finden. Nach 4 Seiten habe ich jetzt aufgegeben. Verzeiht mir daher bitte meine möglicherweise einfache Frage.

    - Ein einzelner PC im privaten Netzwerk hat meist kein eingerichtetes Netzwerk, also die "Arbeitsgruppe" ist leer.
    - Sind es mehrere PCs im privaten Netzwerk, dann werden alle PCs in die gleiche "Arbeitsgruppe" gepackt und einheitlich eine "Arbeitsgruppe" benutzt.
    - In Firmen, und damit kenne ich mich gar nicht aus, hängen in sogenannten "Domains".

    Wie kann ich mit AutoIt auf einfache Weise die Erkennung der 3 verschiedenen Möglichkeiten realisieren?

    Habt Dank!
    Mike

    3 Mal editiert, zuletzt von MikeN (18. Juli 2012 um 19:17) aus folgendem Grund: auf gelöst gesetzt

  • Dein erste Fall kann nie eintreten.

    Das auslesen von Domain und Arbeitsgruppe kannst so mache:

    [autoit]

    Global $pc = @ComputerName
    Global $objItem, $objWMI

    [/autoit][autoit][/autoit][autoit]

    $objWMI = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & $pc & "\root\CIMV2")
    $objItems = $objWMI.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", 0x10 + 0x20)
    If IsObj($objItems) Then
    For $objItem In $objItems

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "", "Domain :" & $objItem.Domain & @CRLF & "Arbeitsgruppe (leer wenn in Domäne): " & $objItem.Workgroup)

    [/autoit][autoit][/autoit][autoit]

    Next
    EndIf

    [/autoit]

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Hab vielen Dank Chip! Toll!

    3 Fragen habe ich noch:

    Warum kann Fall 1 nie eintreten? Was ist auf einem frisch installiertem PC? Ist Workgroup nicht leer?

    Kann es sein, daß in der for-Schleife mehr als 1 Eintrag rauskommt, also mehr als 1 Mal die MsgBox aufgeht?

    Wenn Domain leer ist und in Workgroup etwas steht, ist der PC in einer Arbeitsgruppe und umgedreht, wenn in Domain etwas enthalten ist und Workgroup leer ist, dann ist der PC in einer Domain. Kann man das so schlußfolgern?

    Hab Dank!
    Mike


  • Warum kann Fall 1 nie eintreten? Was ist auf einem frisch installiertem PC? Ist Workgroup nicht leer?

    Nein es muss immer entweder Domain oder Arbeitsgruppe eingetragen sein. Bei einem frisch installierten Rechner ist, wenn man währen der Installation nichts anderes einträgt, der Rechner in der Arbeitsgruppe mit dem Namen "Arbeitsgruppe".


    Kann es sein, daß in der for-Schleife mehr als 1 Eintrag rauskommt, also mehr als 1 Mal die MsgBox aufgeht?

    Nein


    Wenn Domain leer ist und in Workgroup etwas steht, ist der PC in einer Arbeitsgruppe und umgedreht, wenn in Domain etwas enthalten ist und Workgroup leer ist, dann ist der PC in einer Domain. Kann man das so schlußfolgern?

    Richtig.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Richtig.

    Nein Falsch ! Bei meinem Windows 7 x64 (Arbeitsgruppenkonfiguration) steht auch in 'Domain' die Arbeitsgruppe.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Zu früh gefreut, da stimmt mit der Logik was nicht :(

    Auf meinem XP-PC, 32bit, PC in Arbeitsgruppe:
    Workgroup: (ist leer)
    Domain: MeineWorkgroup

    Win 7-PC, X64, PC hat keine Arbeitsgruppe bzw. Default-Arbeitsgruppe:

    Workgroup: WORKGROUP
    Domain: WORKGROUP

    So hilft mir das nichts :(

    Kann mal bitte jemand das Script ausführen und das Ergebnis posten, dessen PC in einer Domain hängt.

    Habt Dank!
    Mike

    Einmal editiert, zuletzt von MikeN (5. Juli 2012 um 16:26)

  • OS: Win7

    Domain wie erwähnt ist mee-.... (pünktchen weil dies eine firmendomain ist) :)

    gruß Protaris

  • Ok, schlecht. D.h. ein XP-PC in Arbeitsgruppe liefert das gleiche Ergebnis, wie ein Win 7 - PC in einer Domain:

    XP-PC, 32bit, PC in Arbeitsgruppe:
    Workgroup: (ist leer)
    Domain: MeineWorkgroup

    Win7-PC, PC in Domain
    Workgroup: (ist leer)
    Domain: MeineDomain

    D.h. beide Male ist "Workgroup" leer und bei "Domain" ist jeweils etwas eingetragen. Damit kann ich keine Unterscheidung machen :(

    Habt Ihr noch eine Idee?

    Habt Dank!
    Mike


    Ich vergaß das modifizierte Script anzuhängen:

    [autoit]

    Opt("MustDeclareVars", 1)

    [/autoit][autoit][/autoit][autoit]

    Global $pc = @ComputerName
    Global $objWMI, $objItems
    Global $result = ''

    [/autoit][autoit][/autoit][autoit]

    $objWMI = ObjGet("winmgmts:{impersonationLevel=Impersonate}!\\" & $pc & "\root\CIMV2")
    If Not IsObj($objWMI) Then Exit

    [/autoit][autoit][/autoit][autoit]

    $objItems = $objWMI.ExecQuery("SELECT * FROM Win32_ComputerSystem", "WQL", 0x10 + 0x20)
    If Not IsObj($objItems) Then Exit

    [/autoit][autoit][/autoit][autoit]

    For $objItem In $objItems
    $result &= "OS: " & @OSVersion & '/' & @OSArch & @CRLF
    $result &= "Workgroup: " & $objItem.Workgroup & @CRLF
    $result &= "Domain: " & $objItem.Domain & @CRLF
    MsgBox(0, "Result", $result)
    ClipPut($result)
    Next

    [/autoit]
  • Ich kann es leider selbst nicht prüfen, aber lass Dir mal die Werte der 3 Macros

    @LogonDNSDomain - Logon DNS Domain
    @LogonDomain - Logon Domain
    @LogonServer - Logon server

    für einen PC in der Domäne und einen in einer Arbeitsgruppe ausgeben.

  • Hab Dank Water für die neue Idee.

    Hier mal ein Testprogramm:

    [autoit]

    Global $result = ''

    [/autoit][autoit][/autoit][autoit]

    $result &= "OS: " & @OSVersion & '/' & @OSArch & @CRLF
    $result &= 'Logon DNS Domain: ' & @LogonDNSDomain & @CRLF
    $result &= 'Logon Domain: ' & @LogonDomain & @CRLF
    $result &= 'Logon Server: ' & @LogonServer & @CRLF

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0, "Result", $result)
    ClipPut($result)

    [/autoit]

    Und hier meine gesammelten Informationen, alles PCs in Arbeitsgruppen:

    Könnten bitte User mit PCs in einer Domain das Script mal ausführen!?

    Habt Dank!
    Mike

  • Hab Dank Protaris, aber die Antwort hilft mir so leider nicht weiter. Ich will ja eine "Logik" entwickeln, woran ich eindeutig erkenne, ob der PC in einer Domain oder Arbeitsgruppe hängt. Dazu brauche ich aber Vergleichswerte.

    Kannst Du bitte die Ausgabe anonymisiert posten, so wie ich es gemacht habe?

    Hab Dank!
    Mike

    Einmal editiert, zuletzt von MikeN (6. Juli 2012 um 12:55)

  • OS: WIN_7/X64

    Logon DNS Domain: XXX-YYYYYY.XXX.local (die Buchstaben XXX haben die gleiche bedeutung)

    Logon Domain: XXX-YYYYY

    Logon Server: \\XXXYYYDC02

    XXX und YYY genutzt weil der PC-Name nicht aufgeführt ist

  • Hab Dank Protaris, das hilft mir schon mal weiter!

    Ich schließe aus den bisherigen Resultaten, dass der PC in einer Domain hängt, wenn
    - in Logon DNS Domain, also @LogonDNSDomain überhaupt was drin steht (bei Workgroup ist es anscheinend immer leer)
    - der PCNamen in keiner der 3 Variablen auftaucht

    Vielleicht antwortet ja noch ein weiterer User dessen PC in einer Domain hängt.

    Habt Dank und ein schönes Wochenende!
    Mike

  • Bei mir sieht es so aus für einen PC in der Domäne:

    Code
    OS:           	WIN_7/X64
    Logon DNS Domain: xxx.AT
    Logon Domain: 	xxx
    Logon Server: 	\\DC-Servername
  • Hab Dank Water für Deine Rückmeldung. Das deckt sich mit Protaris Rückmeldung.

    Dann ist Deine Idee vermutlich zielführend und ich versuch es mal mit meiner Annahme. Oder spricht aus Deiner Sicht was dagegen?

    Habt Dank!
    Mike

  • Würde ich auf Grund der bisherigen Testergebnisse auch annehmen.