gelöst 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
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
1 Antwort
- LÖSUNG zacharias schreibt am 03.10.2007 um 18:59:55 Uhr
LÖSUNG 03.10.2007 um 18:59 Uhr
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:
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
bzw. elegantestete Lösung ist, aber vllt. hilft es mal jemanden weiter:
1. Ich habe mir eine BATCH-Datei geschrieben, welche wie folgt aussieht:
01.
@ECHO OFF
02.
03.
LDIFDE -r "(objectClass=printQueue") -l uNCName -f Printers_AD.txt
04.
FIND "uNCName" Printers_AD.txt | SORT > Printers_SORT.txt
05.
06.
IF EXIST PermissionBatch.bat DEL PermissionBatch.bat
07.
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
08.
09.
DEL Printers_AD.txt
10.
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
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte