derwowusste
Goto Top

Skript gesucht um allowed workstations zu reduzieren

Moin Kollegen!

Hat jemand schon einmal per Skript die Liste der PCs, an denen sich ein AD-Benutzer anmelden kann, um bestimmte Workstations reduziert? Hinzufügen kann ich per Skript, jedoch nicht reduzieren.

Content-Key: 193605

Url: https://administrator.de/contentid/193605

Printed on: April 18, 2024 at 03:04 o'clock

Member: bastla
bastla Nov 01, 2012, updated at Nov 02, 2012 at 10:43:52 (UTC)
Goto Top
Hallo DWW!

Sollte einfach per Auslesen, Ersetzen im String und Neuschreiben zu machen sein - per VBS für eine ganze OU etwa so:
Set OU = GetObject("LDAP://ou=Test,dc=firma,dc=local")  
OU.Filter = Array("user")  
For Each objUser In OU
    Allowed = objUser.userWorkstations
    Allowed = Replace(Allowed, "PC010", "")  
    Allowed = Replace(Allowed, "PC012", "")  

    'überflüssige Kommata entfernen  
    Do
        Allowed = Replace(Allowed, ",,", ",")  
    Loop Until InStr(Allowed, ",,") = 0  
    If Allowed <> "," Then  
        If Left(Allowed, 1) = "," Then Allowed = Mid(Allowed, 2)  
        If Right(Allowed, 1) = "," Then Allowed = Left(Allowed, Len(Allowed) - 1)  
    End If

    objUser.userWorkstations = Allowed
    objUser.SetInfo
Next
Wenn eine größere Anzahl an Workstations entfernt werden soll, würde sich natürlich ein Array und anstelle der Zeilen 5 und 6 eine Schleife anbieten ...

Grüße
bastla

[Edit] Fehlendes "e" in "Allowed" (Zeile 14) nachgereicht [/Edit]
Member: DerWoWusste
DerWoWusste Nov 02, 2012 updated at 08:41:47 (UTC)
Goto Top
Moin bastla!

Sehr schön.
e22472956952a50dfe0ca580bf8022cb
Läuft wie erwünscht.

Danke!

PS: ein allowd musste wohl noch durch allowed ersetzt werden.
Member: bastla
bastla Nov 02, 2012 updated at 10:46:17 (UTC)
Goto Top
Hallo DWW!

Schön, dass ich auch Dir mal etwas zu bieten hatte ... face-smile
ein allowd musste wohl noch durch allowed ersetzt werden.
So isses (war wohl doch schon etwas spät gestern / früh heute face-sad; habe ich inzwischen oben nachgetragen) ...

Grüße
bastla
Member: DerWoWusste
DerWoWusste Nov 02, 2012 at 11:25:45 (UTC)
Goto Top
Schön, dass ich auch Dir mal etwas zu bieten hatte
Das war ja nun nicht zum ersten Mal face-smile
Member: bastla
bastla Nov 02, 2012 at 11:31:25 (UTC)
Goto Top
[OT] Hallo DWW!

Dann beruht das zumindest auf Gegenseitigkeit ... face-smile

Grüße
bastla
[/OT]
Member: DerWoWusste
DerWoWusste Apr 11, 2013 updated at 11:20:23 (UTC)
Goto Top
Hallo Bastla.

Ich hatte das Skript damals erfolgreich ausprobiert. Nun benötige ich es und es bringt Fehler - ich verstehe leider nicht, woran es liegt. Habe es wie oben übernommen, nur den LDAP-Namen angepasst.
Es bringt die Meldung [Windows Script Host]
Line:18, Char:5 The attribute syntax specified to the directory
service is invalid. Code 8007200B
Source: (null)

Hast Du zufällig noch den Durchblick?

Grüße
DWW
Member: bastla
bastla Apr 12, 2013 at 13:59:29 (UTC)
Goto Top
Hallo DWW!

Sorry - manchmal dauert's lang, dann wieder länger ...

Die Ursache dürfte sein, dass ein Benutzer (bereits vorher oder nach dem Entfernen der angegebenen Workstations) eine "leere Liste" erhält (was bedeutet, dass er sich an allen Workstations anmelden darf) - der Fehler sollte sich so vermeiden lassen:
Set OU = GetObject("LDAP://ou=Test,dc=firma,dc=local")  
OU.Filter = Array("user")  
For Each objUser In OU
    Allowed = objUser.userWorkstations
    Allowed = Replace(Allowed, "PC010", "")  
    Allowed = Replace(Allowed, "PC012", "")  
    'überflüssige Kommata entfernen  
    Do
        Allowed = Replace(Allowed, ",,", ",")  
    Loop Until InStr(Allowed, ",,") = 0  
    If Allowed <> "," Then  
        If Left(Allowed, 1) = "," Then Allowed = Mid(Allowed, 2)  
        If Right(Allowed, 1) = "," Then Allowed = Left(Allowed, Len(Allowed) - 1)  
    End If
    If Allowed <> "" Then  
        objUser.userWorkstations = Allowed
    Else
        objUser.PutEx  1, "userWorkstations", 0  
    End If
    objUser.SetInfo
Next
Grüße
bastla
Member: DerWoWusste
DerWoWusste Apr 12, 2013 at 14:29:12 (UTC)
Goto Top
Ahhh face-smile
Es ist doch immer wieder schön, wenn Leute den Durchblick haben! So funktioniert es. Ich hoffe, ich werde das bald selbst durchschauen.
Vielen Dank!
Member: bastla
bastla Apr 12, 2013 at 14:40:00 (UTC)
Goto Top
Hallo DWW!

Ein vernünftige Fragestellung / Beschreibung (wie hier durch die Fehlermeldung) macht's ja leicht ...

A propos vernünftig: Es wäre wohl viel zu einfach, wenn MS die Whitelist für die "UserWorkstations" durch eine Blacklist ergänzt hätte ...

Grüße
bastla
Member: DerWoWusste
DerWoWusste May 29, 2013 at 13:47:54 (UTC)
Goto Top
Ha... noch ein Pferdefuß...
Die Replace-Fuktion ist case-sensitive. Wer das vermeiden will, nehme
an den entscheidenden Stellen
Allowed = Replace(Allowed, "PC010", "", 1, -1, vbTextCompare)