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-ID: 193605

Url: https://administrator.de/forum/skript-gesucht-um-allowed-workstations-zu-reduzieren-193605.html

Ausgedruckt am: 17.04.2025 um 18:04 Uhr

bastla
bastla 02.11.2012 aktualisiert um 11:43:52 Uhr
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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]
DerWoWusste
DerWoWusste 02.11.2012 aktualisiert um 09:41:47 Uhr
Goto Top
Moin bastla!

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

Danke!

PS: ein allowd musste wohl noch durch allowed ersetzt werden.
bastla
bastla 02.11.2012 aktualisiert um 11:46:17 Uhr
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
DerWoWusste
DerWoWusste 02.11.2012 um 12:25:45 Uhr
Goto Top
Schön, dass ich auch Dir mal etwas zu bieten hatte
Das war ja nun nicht zum ersten Mal face-smile
bastla
bastla 02.11.2012 um 12:31:25 Uhr
Goto Top
[OT] Hallo DWW!

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

Grüße
bastla
[/OT]
DerWoWusste
DerWoWusste 11.04.2013 aktualisiert um 13:20:23 Uhr
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
bastla
bastla 12.04.2013 um 15:59:29 Uhr
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
DerWoWusste
DerWoWusste 12.04.2013 um 16:29:12 Uhr
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!
bastla
bastla 12.04.2013 um 16:40:00 Uhr
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
DerWoWusste
DerWoWusste 29.05.2013 um 15:47:54 Uhr
Goto Top
Ha... noch ein Pferdefuß...
Die Replace-Fuktion ist case-sensitive. Wer das vermeiden will, nehme
an den entscheidenden Stellen
1
Allowed = Replace(Allowed, "PC010", "", 1, -1, vbTextCompare)