Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VB LDAP AD Computer Konto auslesen (managedBy)

Frage Microsoft Windows Userverwaltung

Mitglied: win-hesse

win-hesse (Level 1) - Jetzt verbinden

23.08.2011 um 13:57 Uhr, 7091 Aufrufe, 20 Kommentare

Hallo Zusammen,

ich suche nach einem Script wie ich das Feld "managedBy" von einem einzelen AD Computer Konto auslesen kann

01.
Set objDomain = GetObject("LDAP://rootDse") 
02.
 
03.
objDC = objComputer.Get("managedBy") 
04.
 
05.
Wscript.Echo "Hier die Info:" & objDC



leider geht diese nicht so einfach oder was mach ich falsch ?

Gruß
Mitglied: bastla
23.08.2011 um 15:20 Uhr
Hallo win-hesse!

Wenn Du dem Script noch eine Zeile der Art
Set objComputer = GetObject("LDAP://CN=Der_PC,CN=Computers,DC=firma,DC=de")
spendierst (nur, damit vielleicht auch klar wird, welchen Computer Du meinst), sollte das Deine Chancen wesentlich verbessern ...

Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
24.08.2011 um 12:44 Uhr
hi bastla,

leider bekomme ich es nicht so richtig hin

hast du noch eine idee oder tipp für mich ?

01.
 
02.
Set oWSH = CreateObject("WScript.Shell")  
03.
computer = oWSH.ExpandEnvironmentStrings("%COMPUTERNAME%") 
04.
domain = oWSH.ExpandEnvironmentStrings("%USERDOMAIN%") 
05.
 
06.
Set objComputer = GetObject ("LDAP://CN=computer,CN=Computers,DC=domain,DC=com") 
07.
 
08.
objDC = objComputer.Get("managedBy") 
09.
 
10.
Wscript.Echo "Hier die Info:" & objDC 
11.
 
12.
 
Bitte warten ..
Mitglied: bastla
24.08.2011 um 15:08 Uhr
Hallo win-hesse!

Wenn es um den aktuellen Rechner geht, dann etwa so:
01.
Set objComputer = GetObject("LDAP://" & CreateObject("ADSystemInfo").ComputerName) 
02.
 
03.
On Error Resume Next 
04.
Manager = objComputer.Get("managedBy") 
05.
On Error Goto 0 
06.
 
07.
If Manager <> "" Then 
08.
    WScript.Echo Manager 
09.
    WScript.Echo Split(Split(Manager, ",")(0), "=")(1) 
10.
Else 
11.
    WScript.Echo "Kein Eintrag vorhanden!" 
12.
End If
Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
24.08.2011 um 15:39 Uhr
hi,

das läuft sehr gut

na ja ich dachte ich könne es dann ganz einfach anpassen an eine eingabe feld
davor basteln aber

ich bekomme immer einen fehler

meinst du könntest das kurz machen ?

danke
Bitte warten ..
Mitglied: bastla
24.08.2011 um 16:22 Uhr
Hallo win-hesse!

Vielleicht fängst Du ganz vorn vorne an und erklärst, was genau Du wie erreichen willst ...

Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
25.08.2011 um 09:16 Uhr
Hi,

ok ist wohl das beste

bei uns läuft zur Zeit der Win7 Rollout
und wir haben ein Tool das den PC in die Domain aufnimmt und einen eine PC Namen vergibt
dieses war bis lang nicht so und man konnte aus der alten Syntax erkennen zu welcher Abteilung und Standort diese gerät gehört

die Infos stehen aber im AD Konto vom Computer
daher Baste ich gerade mit Visual Basic 2010 Express so ein kleine VB Anwendung
die uns die Arbeit erleichtern soll
zb. kann ich die User ID eingeben und gleich mehr Infos anzeigen lassen (Account gesperrt und so weiter)
durch den teil kann ich immer weiter User AD Infos raus bekommen... oUser.IsAccountLocked...
01.
       Vpuser = TB2.Text 
02.
        getrimmt = Vpuser.Trim(" ") 
03.
 
04.
        oUser = GetObject("WinNT://domain/" & Vpuser) 
05.
 
06.
        TB9.Text = "Benutzer: " & oUser.FullName & vbCrLf 
07.
        TB9.Text = TB9.Text & "Kennwortalter: " & (oUser.PasswordAge / 3600) \ 24.0
jetzt will ich das Computer Konto auch befragen können da die info im managedBy sehr Wichtig für uns ist
es soll so sein as ich Problem los weiter Infos herraus ziehen kann

verstanden ?

Gruß
Bitte warten ..
Mitglied: win-hesse
26.08.2011 um 09:40 Uhr
Hi,

ich brauch eigentlich nur eine erklärung zu dem Teil
bzw. wie ich hier die Computer Variabel hinzufügen kann

Set objComputer = GetObject("LDAP://" & CreateObject("ADSystemInfo").ComputerName)

danke für eure hilfe
Bitte warten ..
Mitglied: bastla
26.08.2011 um 11:04 Uhr
Hallo win-hesse!

Sorry - ich verstehe die Frage nicht ganz; mit der angegebenen Zeile (lass Dir einfach einmal das Ergebnis von
CreateObject("ADSystemInfo").ComputerName
anzeigen) wird ja das Computer-Objekt anhand des AD-Pfades erzeugt - wenn Du also einen anderen Computer ansprechen wolltest, wären wir wieder ganz oben in diesem Thread ...

Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
26.08.2011 um 12:52 Uhr
habe ien Lösung gefunden

mit objCommand.CommandText = "Select ManagedBy from 'LDAP://

geht super bei Intresse PM
Bitte warten ..
Mitglied: bastla
26.08.2011 um 13:58 Uhr
Hallo win-hesse!

Wie ist
bei Intresse PM
gemeint?

Grüße
bastla
Bitte warten ..
Mitglied: BigWim
26.08.2011 um 14:58 Uhr
[OT]
@bastla

Vielleicht kannst Du ja noch etwas lernen

Ok, ich halt mich raus.

Schönes Wochenende
Markus

[/OT]
Bitte warten ..
Mitglied: bastla
26.08.2011 um 16:14 Uhr
[OT]
@BigWim
Vielleicht kannst Du ja noch etwas lernen
Das würde ich nie ausschließen - aber eigentlich ging's mir eher darum, wie win-hesse den Sinn eines Forums sieht ...

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: win-hesse
29.08.2011 um 10:30 Uhr
Hi,

so war das nicht gemeid...
hier ist die lösung aber ich kann diese nicht erklären bzw. verstehe diese auch nicht

Gruß

01.
 
02.
        Vpc = TB1.Text 
03.
 
04.
        Const ADS_SCOPE_SUBTREE = 2 
05.
 
06.
        objFSO = CreateObject("scripting.filesystemobject") 
07.
 
08.
        objConnection = CreateObject("ADODB.Connection") 
09.
        objCommand = CreateObject("ADODB.Command") 
10.
        objConnection.Provider = "ADsDSOObject" 
11.
        objConnection.Open("Active Directory Provider") 
12.
        objCommand.ActiveConnection = objConnection 
13.
        objCommand.CommandText = "Select ManagedBy from 'LDAP://OU=,DC=,DC=,DC=,DC=com' where Name='" & Vpc & "'" 
14.
        objCommand.Properties("Page Size") = 1000 
15.
        objCommand.Properties("Timeout") = 30 
16.
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
17.
        objCommand.Properties("Cache Results") = False 
18.
        objRecordSet = objCommand.Execute 
19.
        Manager = (objRecordSet.Fields("ManagedBy").Value) 
20.
        objRecordSet.MoveNext() 
21.
 
22.
        TB9.Text = (Split(Split(Manager, ",")(0), "=")(1)) 
23.
 
Bitte warten ..
Mitglied: win-hesse
30.08.2011 um 20:38 Uhr
hi,
habt ihr das ganze verstanden ? kann es mir jemand in etwa erklären ?

hätte da noch eine frage

errorlevel wie und wo müsste ich diese einbauen
weil aktuell stürtzt das script ab wenn der PC nicht im AD ist

Gruß
Bitte warten ..
Mitglied: bastla
30.08.2011 um 21:32 Uhr
Hallo win-hesse!

Ich weiß ja nicht, wo Du das Script oben aufgetrieben hast, aber einige Details sind nicht ganz astrein - besser sollte es so gehen:
01.
Vpc = TB1.Text 
02.
 
03.
Const ADS_SCOPE_SUBTREE = 2 
04.
 
05.
Set objConnection = CreateObject("ADODB.Connection") 
06.
Set objCommand = CreateObject("ADODB.Command") 
07.
objConnection.Provider = "ADsDSOObject" 
08.
objConnection.Open "Active Directory Provider" 
09.
Set objCommand.ActiveConnection = objConnection 
10.
 
11.
objCommand.CommandText = _ 
12.
    "Select Name, ManagedBy from " & _ 
13.
        "'LDAP://DC=firma,DC=com' where objectClass='computer'and name='" & Vpc & "'" 
14.
objCommand.Properties("Page Size") = 1000 
15.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
16.
 
17.
Set objRecordSet = objCommand.Execute 
18.
 
19.
If objRecordSet.EOF Then  
20.
    Manager = "Computer nicht gefunden" 
21.
Else 
22.
    objRecordSet.MoveFirst 
23.
    Manager = objRecordSet.Fields("ManagedBy").Value 
24.
    If Manager <> "" Then 
25.
        Manager = Split(Split(Manager, ",")(0), "=")(1) 
26.
    Else 
27.
        Manager = "kein Eintrag" 
28.
    End If 
29.
End If 
30.
 
31.
TB9.Text = Manager
Was das Script macht, ist relativ einfach - es wird, ausgehend von der angegebenen Ebene (eine OU bzw im Beispiel hier die gesamte Domäne) nach einem Computer mit dem vorgegebnen Namen gesucht. Die Abfrage ist dabei im SQL-Stil formuliert. Das Ergebnis ist ein RecordSet, das üblicher Weise mit einer Schleife der Art
01.
Do Until objRecordSet.EOF 
02.
... 
03.
Loop
durchlaufen wird. Wenn nur der erste (und einzige) Eintrag interessiert, kann dieser auch direkt abgefragt werden - falls er existiert und nicht bereits vorweg "EOF" erreicht ist.

Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
31.08.2011 um 08:30 Uhr
langsamm komm ich dahinter

nur das mit der Schleife habe ich noch nicht so ganz verstanden
da ich mehre Wert ausgeben will

mit dem alten Teil von mir hatte ich immer das Problem das ich das Feld "serialNumber" nicht raus bekommen habe
bzw. das der Typ Object() nicht definiert ist

andere felder wie "operatingSystem" "whenCreated" "title" alle kein Problem

Gruß
Bitte warten ..
Mitglied: bastla
31.08.2011 um 10:22 Uhr
Hallo win-hesse!
nur das mit der Schleife habe ich noch nicht so ganz verstanden
da ich mehre Wert ausgeben will
Die Schleife läuft über alle Objekte - bei Abfrage eines bestimmten Computers anhand seines Namens ist das dann eben nur eines (oder keines) - wenn Du Computer mit einem bestimmten OS suchst, werden mehrere Objekte zurückgegeben. Welche und wieviele Werte Du für das jeweilige Objekt abfragen willst, hat mit der Schleife nix zu tun ...
Hinsichtlich der einzelnen Werte / Felder hat zB Yusuf hier eine Übersicht zusammengestellt ...

Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
01.09.2011 um 18:36 Uhr
Also ist das so nicht richtig ??

klappt aber bis auf wenn ich Manager3 hinzufüge
dann bekomme ich immer FM: InvalidCastException wurde nicht behandel. Der Operator & ist für Zeichenfolge .... und Typ Objekte() nicht definiert.

hast noch eine idee für mich ?


01.
        objRecordSet = objCommand.Execute 
02.
 
03.
        If objRecordSet.EOF Then 
04.
            MsgBox("Computer nicht gefunden") 
05.
            'Manager = "Computer nicht gefunden" 
06.
        Else 
07.
            objRecordSet.MoveFirst() 
08.
            Manager = objRecordSet.Fields("ManagedBy").Value 
09.
            Manager2 = (objRecordSet.Fields("Location").Value) 
10.
            Manager3 = (objRecordSet.Fields("serialNumber").Value) 
11.
            Manager4 = (objRecordSet.Fields("dNSHostName").Value) 
12.
            Manager5 = (objRecordSet.Fields("operatingSystem").Value) & " " & (objRecordSet.Fields("operatingSystemVersion").Value) 
13.
            Manager7 = (objRecordSet.Fields("whenCreated").Value) 
14.
            Manager8 = (objRecordSet.Fields("title").Value) 
15.
 
16.
            If Manager <> "" Then 
17.
                Manager = Split(Split(Manager, ",")(0), "=")(1) 
18.
            Else 
19.
                Manager = "kein Eintrag" 
20.
            End If 
21.
 
22.
        End If 
23.
 
24.
        TB9.Text = Manager & vbCrLf 
25.
        TB9.Text = TB9.Text & Manager2 & vbCrLf 
26.
        TB9.Text = TB9.Text & Manager3 & vbCrLf 
27.
        TB9.Text = TB9.Text & Manager5 & vbCrLf 
28.
        TB9.Text = TB9.Text & Manager7 & vbCrLf 
29.
        TB9.Text = TB9.Text & Manager8 & vbCrLf
Bitte warten ..
Mitglied: bastla
01.09.2011 um 18:49 Uhr
Hallo win-hesse!

Versuch es mit folgender Zeile 10:
01.
Manager3 = Join(objRecordSet.Fields("serialNumber").Value)
BTW: Die (äußeren) Klammern in den Zeilen 9 und 11 - 14 solltest Du ersatzlos streichen können ...

Grüße
bastla
Bitte warten ..
Mitglied: win-hesse
08.09.2011 um 16:53 Uhr
hi,

habe das ganze mit den Klammer noch weg genommen und ein par keinigkeiten verbesser
super danke für deine top hilfe

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows 7
Computer OU auslesen bzw. abfragen (2)

Frage von mexx991 zum Thema Windows 7 ...

Batch & Shell
Powershell Nicht AD Computer identifizieren (5)

Frage von Marabunta zum Thema Batch & Shell ...

Windows Userverwaltung
PS Skript AD Objekte auslesen (1)

Frage von m.reeger zum Thema Windows Userverwaltung ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...