zacharias
Goto Top

Drucker - Berechtigungen setzen per Script

Hallo Leute,

Ich habe den Auftrag erhalten, dass ich bei allen Druckern in der Domäne eine bestimmte Gruppe hinzufüge und denen nur
das Rechte "Manage Documents" gebe.

Leider fällt mir keine Möglichkeit ein, wie ich das autoamtisieren kann. Gibt es hierfür irgendeine Möglichkeit das ganze per
Skript zu lösen? Es handelt sich um ca. 160 Druckobjekte.

Ich habe bereits SetACL (http://setacl.sourceforge.net) probiert, aber ich weiß nicht wie ich die Drucker auslesen kann, damit
am Ende auch wirklich alle mit den notwendigen Berechtigungen versehen sind.

Danke für eure Hilfe,
zacharias

Content-ID: 69979

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

Ausgedruckt am: 08.11.2024 um 18:11 Uhr

zacharias
zacharias 03.10.2007 um 18:59:55 Uhr
Goto Top
Konnte das Problem nun doch noch selbst lösen. Ich weiß zwar nicht, ob es die einfachste
bzw. elegantestete Lösung ist, aber vllt. hilft es mal jemanden weiter:

1. Ich habe mir eine BATCH-Datei geschrieben, welche wie folgt aussieht:

@ECHO OFF

LDIFDE -r "(objectClass=printQueue") -l uNCName -f Printers_AD.txt  
FIND "uNCName" Printers_AD.txt | SORT > Printers_SORT.txt  

IF EXIST PermissionBatch.bat DEL PermissionBatch.bat
FOR /f "skip=2 delims=\ tokens=1-3" %%i IN (Printers_SORT.txt) DO ECHO SetACL -on "\\%%j\%%k" -ot prn -actn ace -ace "n:DOMAIN\USERNAME;p:man_docs" >> PermissionBatch.bat  

DEL Printers_AD.txt
DEL Printers_SORT.txt


ERKLÄRUNG

    LDIFDE -r "(objectClass=printQueue") -l uNCName -f Printers_AD.txt

   Dieser Befehl liest mir alle Drucker welche es in der Domain gibt aus und schreibt sie mir in die
   Datei "Printers_AD.txt". "-L uNCname" ließt mir auch den UNC-Namen des Druckers aus.

   [PRINTERS_AD.TXT]


      [...]
      dn: CN=xxxxxxxxx,CN=xxxxxxxxx,OU=Server,DC=xxxxxxxxx,DC=xxxxxxxxx
      changetype: add
      uNCName: \\PRINTSERVER\PRINTERSHARE03

      dn: CN=xxxxxxxxx,CN=xxxxxxxxx,OU=Server,DC=xxxxxxxxx,DC=xxxxxxxxx
      changetype: add
      uNCName: \\PRINTSERVER\PRINTERSHARE01

      dn: CN=xxxxxxxxx,CN=xxxxxxxxx,OU=Server,DC=xxxxxxxxx,DC=xxxxxxxxx
      changetype: add
      uNCName: \\PRINTSERVER\PRINTERSHARE02
      [...]


   Hier ist also der für mich wichtige UNC-Pfad zu finden. Das bring uns nun zu dem zweiten Befehl:


    FIND "uNCName" Printers_AD.txt | SORT > Printers_SORT.txt

   Mit FIND werden mir nur die Zeilen mit dem String "uNCName" aus der Datei "Printers_AD.txt"
   ausgegeben. Diese Werte pipe ich gleich zu SORT um eine sortierte Auflistung aller Drucker zu
   erhalten. Das Ergebnis wird in "Printers_SORT.txt" gespeichert.

   [PRINTERS_SORT.TXT]

      [...]

      ---------- PRINTERS_AD.TXT
      uNCName: \\PRINTSERVER\PRINTERSHARE01
      uNCName: \\PRINTSERVER\PRINTERSHARE02
      uNCName: \\PRINTSERVER\PRINTERSHARE02
      [...]


   Hier ist die Auflistung schon etwas übersichtlicher. Das restliche wird über die FOR-Schleife
   erledigt.

    FOR /f "skip=2 delims=\ tokens=1-3" %%i IN (Print...

   Diese Schleife wird dazu verwendet, den UNC-Pfad aus der Datei "Printers_SORT.txt" zu bekommen
   und zugleich eine neu Batchdatei zu generieren, welche mir anschließend die Berechtigungsänderungen
   durchführt.

   Die generierte Datei wird "PermissionBatch.bat" heißen und damit hier keine Probleme auftreten, wird geprüft
   ob diese Datei bereits existiert. Wenn ja, wird sie gelöscht.

   [PERMISSIONBATCH.BAT]

      [...]
      SetACL -on "\\PRINTSERVER\PRINTERSHARE01" -ot prn -actn ace -ace "n:DOMAIN\USERNAME;p:man_docs"
      SetACL -on "\\PRINTSERVER\PRINTERSHARE01" -ot prn -actn ace -ace "n:DOMAIN\USERNAME;p:man_docs"
      SetACL -on "\\PRINTSERVER\PRINTERSHARE01" -ot prn -actn ace -ace "n:DOMAIN\USERNAME;p:man_docs"
      [...]

   Danach ist nur noch PermissionBatch.bat zu kontrollieren. Das ganze ist auch ziemlich übersichtlich und man kann
   einfach Drucker bzw. ganze Server aus der Batch-Datei entfernen, da diese alphabetisch sortiert ist.

Ok. Ich hoffe ich hab das halbwegs rüberbringen können. Denen es hilft, wünsch ich natürlich viel Glück.

Mit freundlichem Gruß
zacharias