Top-Themen

Aktuelle Themen (A bis Z)

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 User und Homelaufwerk aus AD per Script löschen

Mitglied: sandrdnn

sandrdnn (Level 1) - Jetzt verbinden

22.01.2008, aktualisiert 29.01.2008, 8827 Aufrufe, 10 Kommentare

Hallo Admins,

bin neu hier und suche nach einer Lösung zu meinem Problem. Ich mache mich gerade mit Scripten (VBS) vertraut. Jetzt suche ich nach einer Möglichkeit einen User aus dem AD sowie sein Homelaufwerk auf dem Fileserver zu löschen und das ganze dann in einem Logfile zu protokollieren.
Ich habe bereits ein Script was mir bei eingabe des Usernamens den Pfad zu seinem Homelaufwerk ausgibt. Das könnte ich auch in eine Variable setzen um es für das Löschen zu benutzen. Bei dem Script ist aber doof das ich die OU des Users mit angeben muss. Ich will aber das er selber die OU sucht wenn ich ihm den Loginnamen zur Verfügung stelle. Hier mal mein Script bisher:

'On Error Resume Next
strUserName = InputBox("Loginname")
Set objUser = GetObject _
("LDAP://cn=sandrdnn,ou=Users,ou=RD,dc=ads,dc=mobilcom,dc=de")

WScript.Echo "Home Directory: " & objUser.HomeDirectory

Ich habe auch schon Scripts gesehen in denen per LDAP anhand des Usernamens gesucht wurde, aber ich konnte das irgendwie nicht in mein Script übertragen:
<LDAP://dc=ads,dc=mobilcom,dc=de);(&(objectCategory=user)(samAccountName=sandrdnn));samAccountName;subtree

Habt ihr da tipps für einen Scriptneuling?

Gruß
Dennis

PS: Wer fehler findet darf sie behalten.
Mitglied: bastla
22.01.2008 um 23:13 Uhr
Hallo sandrdnn und willkommen im Forum!

Schau Dir mal das an: How Can I Get the Full Name of a Windows NT 4.0 User When All I Have is Their Logon Name?

Für den soeben angemeldeten User ginge es übrigens (etwas abgekürzt) so:
01.
Set objUser = GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName)
Grüße
bastla

PS: Wer fehler findet darf sie behalten.
Danke, habe aber schon genug eigene (und sogar große ) ...
Bitte warten ..
Mitglied: bastla
22.01.2008 um 23:40 Uhr
... und eigentlich Pflichtlektüre sind noch folgende Artikel: Die Suche in Active Directory mit Skripten (Teil 1) sowie dessen Teil 2.

Daraus abgeleitet könntest Du Deine Userdaten auch so auslesen:
01.
strUser = "sandrdnn" 
02.
strDomain = "dc=ads,dc=mobilcom,dc=de" 
03.
 
04.
Const ADS_SCOPE_SUBTREE = 2 
05.
 
06.
Set objConnection = CreateObject("ADODB.Connection") 
07.
Set objCommand =   CreateObject("ADODB.Command") 
08.
objConnection.Provider = "ADsDSOObject" 
09.
objConnection.Open "Active Directory Provider" 
10.
Set objCommand.ActiveConnection = objConnection 
11.
 
12.
objCommand.Properties("Page Size") = 1000 
13.
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
14.
 
15.
objCommand.CommandText = _ 
16.
    "SELECT ADsPath FROM 'LDAP://" & strDomain & "' WHERE " _ 
17.
        & "objectCategory='user' AND saMAccountName='" & strUser & "'"   
18.
Set objRecordSet = objCommand.Execute 
19.
 
20.
objRecordSet.MoveFirst 
21.
Do Until objRecordSet.EOF 
22.
    strPath = objRecordSet.Fields("ADsPath").Value 
23.
    Set objUser = GetObject(strPath) 
24.
    WScript.Echo objUser.givenName & vbCrLf & objUser.SN & vbCrLF & objUser.HomeDirectory 
25.
    objRecordSet.MoveNext 
26.
Loop
Grüße
bastla
Bitte warten ..
Mitglied: sandrdnn
23.01.2008 um 07:38 Uhr
Moin du von der Nachtschicht.

ich habe mir beide Scriptschnipsel man angesehen und getestet. Das zweite Script funktioniert ohne das ich noch was machen muss. Was das prinzip ist verstehe ich ungfähr, könnte die Funktion jetzt aber nicht erklären. Werde mir die Links noch mal durchlesen.
Über den Link aus dem ersten Post bin ich mit etwas basteln dann zu einer recht kleinen lösung gekommen:
01.
strDomain = "ads.mobilcom.de" 
02.
strUserName = InputBox("Loginname") 
03.
Set objUser = GetObject("WinNT://" &  strDomain & "/" & strUserName) 
04.
WScript.Echo objUser.HomeDirectory
Dann werde ich mal weiter basteln und schauen ob ich den Rest meines Vorhabens auch noch umsetzen kann. Ihr werdet von mir hören
Bitte warten ..
Mitglied: sandrdnn
23.01.2008 um 16:42 Uhr
Und da bin ich auch schon wieder.

Habe das jetzt soweit hinbekommen wir ich wollte. Jetzt will ich weitere Funktionen einbauen. Ich will erstmal das ich den Usernamen eingebe und der User dann Disabled wird und in die Description das entsprechende Datum bekommt. Das müsste damit gehen:
01.
strDomain = "ads.mobilcom.de" 
02.
strUserName = "sandrdnn" 
03.
 
04.
Set objUser = GetObject("WinNT://" &  strDomain & "/" & strUserName) 
05.
WScript.Echo objUser.description 
06.
objUser.Put "Description" , Now 
07.
objUser.SetInfo 
08.
Set objUser = Nothing
Konnte ich noch nicht testen weil ich noch keine Testumgebung parat habe.

Der User soll dann über ein weiteres Script gelöscht werden, wenn das Datum aus Description 14 Tage in der Vergangenheit liegt.
Das Problem was ich jetzt habe ist, das ich das Datum aus Description mit dem Datum heute vergleichen will, und wenn der Unterschied >14 in aktion trete. Mein test bleibt aber mit einem Fehler hängen:
01.
strDomain = "ads.mobilcom.de" 
02.
strUserName = "sandrdnn" 
03.
 
04.
Set objUser = GetObject("WinNT://" &  strDomain & "/" & strUserName) 
05.
WScript.Echo  objUser.description 
06.
 
07.
heute = Now 
08.
User_disable = objUser.description 
09.
 
10.
If heute - User_disable  > 14 Then 
11.
WScript.Echo "User wird gelöscht"	 
12.
End If
Ich bekomme aber eine Fehlermedung:
Error occured in line 20 near column 1:
Laufzeitfehler in Microsoft VBScript: Typen unverträglich: '[string: "08.01.2008 16:26:08"]

Wie bekomme ich es hin das ich das Descriptionfeld mit dem NOW "verrechnen" kann?

Gruß
Dennis
Bitte warten ..
Mitglied: Biber
23.01.2008 um 17:52 Uhr
Moin sandrdnn,

Du könntest zum Herantasten mit diesem Schnipsel (unabhängig von Deinem!) experimentieren.

01.
'--IsADateTest.vbs -- 
02.
strvar="08.01.2008 16:26:08" 
03.
if isDate(strvar) then  
04.
    Wscript.echo  "Alter in Tagen: " & DateDiff("d", cDate(strvar), now) 
05.
end if   
[Aufruf mit "cscript //nologo IsADatetest.vbs" vom CMD-Prompt.]

Wenn Du Datumsdifferenzen berechnen willst, sollten schon beide Vergleichswerte vom Typ "Datum" sein.
Also solltest den String description umwandeln mit cDate().
Wenn natürlich "Augsburg" in der objUser.description steht, wirst Du nichts sinnvoll vergleichen könnten.
..da könnte auch M$ nur grob schätzen.. <grins>

Grüße
Biber
Bitte warten ..
Mitglied: sandrdnn
23.01.2008 um 21:06 Uhr
Hallo,

habe mit dem Scriptschnipsel mal rumprobiert nach dem ich nachgelesen habe was die Funktion CDate und Datediff machen. Damit ist es ganz einfach. Mein größtes Problem ist das ich die Befehle nicht weiß. Wenn ich dann einen Tipp bekomme und nachlese ist alles wieder logisch und einfach.

Das im description Feld ein Datum stehen muss ist mir schon klar. Das wird da ja auch beim Disablen des Users reingeschrieben (wenn es denn klappt )

Danke erstmal
Dennis
Bitte warten ..
Mitglied: bastla
23.01.2008 um 21:27 Uhr
Hallo sandrdnn!

Vielleicht kannst Du das und das (insbes auch die beiden verlinkten .chm-Files) brauchen ...

Grüße
bastla
Bitte warten ..
Mitglied: sandrdnn
28.01.2008 um 16:06 Uhr
Hallo mal wieder.
So, ich habe jetzt mein Test AD und teste meine Scripts. Da kommen auch gleich die Probleme wieder.

Ich will jetzt gerade das Script das zu einem bestimmten User die Description einträgt zum laufen bringen. So sieht das aus:
01.
strDomain = "ad.test.de" 
02.
strUserName = InputBox("Usernamen eingeben", "Sperdatum eintragen") 
03.
 
04.
Set objUser = GetObject("WinNT://" &  strDomain & "/" & strUserName) 
05.
WScript.Echo objUser.description 
06.
 
07.
objUser.Put "description" , Now 
08.
objUser.SetInfo 
09.
Set objUser = Nothing
Das Echo zeigt mir die aktuelle Description des Users an.
Bei der Zeile objUser.Put bleibt er aber hängen. Mein Debugger sagt:
Error occured in line 16 near column 1:
(null): 0x8000500C
Scheinbar ist objUser leer (wenn ich das richtig deute).
Was mache ich falsch?

Gruß
Dennis
Bitte warten ..
Mitglied: Biber
28.01.2008 um 17:13 Uhr
Moin sandrdnn,

sprachen wir nicht neulich beiläufig darüber, dass man/frau Datumswerte nur mit Datumswerten verrechnen kann und Äpfel und Birnen nur bedingt kompatibel sind?

Ähnliches hast Du hier - findest Du aber selbst heraus. Von welchem Datentyp könnte denn objUser.description sein... so ganz theoretisch? Und von welchem Typ ist wohl Now?

Versuche es mal mit
objUser.Put "description" , cstr(Now)

Grüße
Biber
Bitte warten ..
Mitglied: sandrdnn
29.01.2008 um 07:06 Uhr
Hallo Biber,

so funktioniert es natürlich. Ich hatte jetzt gedacht das Descripten einfacher Text ist. Und das man dann Zahlen oder Daten einfach so eintragen könne. Naja, ist halt so wenn man keine Ahnung hat. Aber ich bekomme bald eine Scriptschulung. Vielleicht erleuchtet die mich ja etwas.
Vielen dank und bis zum nächsten Problem.

Gruß
Dennis
Bitte warten ..
Ähnliche Inhalte
Windows Server
Wie AD User sauber löschen?
gelöst Frage von McLionWindows Server34 Kommentare

Hallo, ich habe nen Windows Server 2008 Server, AD ist eingerichtet. Nun ist die Festplatte am Server fast voll, ...

Exchange Server

Exchange 2013 Postfach löschen OHNE User im AD zu löschen

gelöst Frage von JensDNDExchange Server3 Kommentare

Hallo Admins, wenn ich im Exchange ein Postfach lösche, verschwindet auch der User im AD Wie kann ich NUR ...

Batch & Shell

AD: User auflisten und falls nicht vorhanden Ordner löschen. "Script: Batch"

Frage von Lasky94Batch & Shell2 Kommentare

Hallo zusammen, Ich würde gerne einen Skript machen, welche folgende Funktionen hat: - Kontrollieren ob USER noch in AD ...

Windows Server

Homelaufwerk keine Berichtigungen

gelöst Frage von buserverWindows Server3 Kommentare

Hallo, bei meinen Domänen-Konten kann ich das Homelaufwerk nicht benutzen, weil ich angeblich keine Berichtigungen zum Schreiben habe oder ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 2 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement13 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Vmware
Server 2008 r2 vmware terminalserver
Frage von MasterCVmware12 Kommentare

Guten Abend zusammen, ich hoffe , dass einer von euch mir weiterhelfen kann ,bei meinem kack Problem ! Ist ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android12 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...