Standarddrucker per PC vorgeben
Servus zusammen,
ich bin auf der Suche nach einem Programm das den Standarddrucker per PC vergibt.
Der Administrator soll in der Lage sein auf speziellen Arbeitsplätzen den Netzwerkdrucker per Machine zu mappen ( dies wird durch das Programm pmpmgr erledigt und funktioniert wunderbar ).
Danach soll er ggfs. in der Lage sein das jeder Benutzer ( Egal ob er schon abgemeldet war vorher oder nicht ) den Standarddrucker zu setzen und ggfs. andere Einstellungen zu überschreiben auf das was der Admin vorgibt.
So ein Programm als .net Anwendung existiert bereits.
Das Tool liest die Drucker aus und der Admin kann dann den Drucker definieren.
Das Programm wird in den RUN Schlüssel gesetzt und jeder der sich anmeldet bekommt das Tool in das Systray. Die Einstellungen sollen in der Registry oder eine Konfigurationsdatei abgelegt werden.
Sobald ein Anwender einen anderen Drucker drin hat wie der den der Admin vorgibt, wird die Einstellung auf den Defaultwert zurückgesetzt.
Kann man das auch mittels der Powershell so elegant lösen?
Beste Grüße
Heiko
ich bin auf der Suche nach einem Programm das den Standarddrucker per PC vergibt.
Der Administrator soll in der Lage sein auf speziellen Arbeitsplätzen den Netzwerkdrucker per Machine zu mappen ( dies wird durch das Programm pmpmgr erledigt und funktioniert wunderbar ).
Danach soll er ggfs. in der Lage sein das jeder Benutzer ( Egal ob er schon abgemeldet war vorher oder nicht ) den Standarddrucker zu setzen und ggfs. andere Einstellungen zu überschreiben auf das was der Admin vorgibt.
So ein Programm als .net Anwendung existiert bereits.
Das Tool liest die Drucker aus und der Admin kann dann den Drucker definieren.
Das Programm wird in den RUN Schlüssel gesetzt und jeder der sich anmeldet bekommt das Tool in das Systray. Die Einstellungen sollen in der Registry oder eine Konfigurationsdatei abgelegt werden.
Sobald ein Anwender einen anderen Drucker drin hat wie der den der Admin vorgibt, wird die Einstellung auf den Defaultwert zurückgesetzt.
Kann man das auch mittels der Powershell so elegant lösen?
Beste Grüße
Heiko
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 257917
Url: https://administrator.de/forum/standarddrucker-per-pc-vorgeben-257917.html
Ausgedruckt am: 07.04.2025 um 01:04 Uhr
11 Kommentare
Neuester Kommentar
Hallo Heiko,
Grüße Uwe
Danach soll er ggfs. in der Lage sein das jeder Benutzer ( Egal ob er schon abgemeldet war vorher oder nicht )
deine Frage ist etwas wirr gestellt soll jetzt ein Admin oder der Benutzer den Standarddrucker verstellen können ??Sobald ein Anwender einen anderen Drucker drin hat wie der den der Admin vorgibt, wird die Einstellung auf den Defaultwert zurückgesetzt.
und hier schreibst du wieder das der User den Drucker doch nicht verstellen darf ? Was ist den jetzt konkret gemeint ?Kann man das auch mittels der Powershell so elegant lösen?
Sicher, was zahlste bzw was ist euer Budget ?Grüße Uwe
Zitat von @pixel0815:
:o) Bin ja auch wirr im Kopf.
Der Admin gibt die Default Einstellungen vor - der Benutzer kann zwar ändern - erhält aber bisher eine Messagebox mit dem Hinweis das die Änderung blockiert wurde.
was ist dann der Zweck der Box, wenn Ihn der User sowieso nicht ändern kann ??:o) Bin ja auch wirr im Kopf.
Der Admin gibt die Default Einstellungen vor - der Benutzer kann zwar ändern - erhält aber bisher eine Messagebox mit dem Hinweis das die Änderung blockiert wurde.
Was würde das denn pi mal Daumen kosten?
je nach Anforderung/Lastenheft
Hallo Heiko,
vielleicht bringt dich schon folgendes Script deinem Ziel näher. Es überwacht den Registryeintrag in dem der Default-Drucker für den User abgelegt wird. Ändert sich dieser wird geprüft ob dieser den Vorgaben entspricht und wenn nicht wird sofort der Standarddrucker auf Vorgaben zurückgesetzt.
Das Script nutzt dazu einen Registry-Event-Subscriber der immer nur dann feuert, wenn sich ein Registry-Key in einem bestimmten Pfad ändert.
Die Standardvorgaben für den Standard-Drucker kannst du ja dann nach deinen Belieben aus einer Datei/Registry/DB/XML/CSV/etc. auslesen.
Für das Beispiel werden sie aus einer CSV-Datei ausgelesen die so definiert ist:
Zu beachten ist, das wenn man den Loop beim Testen mit
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
vielleicht bringt dich schon folgendes Script deinem Ziel näher. Es überwacht den Registryeintrag in dem der Default-Drucker für den User abgelegt wird. Ändert sich dieser wird geprüft ob dieser den Vorgaben entspricht und wenn nicht wird sofort der Standarddrucker auf Vorgaben zurückgesetzt.
Das Script nutzt dazu einen Registry-Event-Subscriber der immer nur dann feuert, wenn sich ein Registry-Key in einem bestimmten Pfad ändert.
Die Standardvorgaben für den Standard-Drucker kannst du ja dann nach deinen Belieben aus einer Datei/Registry/DB/XML/CSV/etc. auslesen.
Für das Beispiel werden sie aus einer CSV-Datei ausgelesen die so definiert ist:
"Computername";"DefaultPrinter"
"PC01";"HP Laserjet 1320"
"PC02";"HP-Color-Laserjet"
"DEFAULT","[Druckername der gesetzt wird wenn für einen Rechner keiner definiert ist]"
Powershell-Script setzt den Standard-Drucker, wenn dieser geändert wird, auf einen Drucker nach Vorgabe für den jeweiligen Rechner zurück
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Vorgaben aus CSV-Datei importieren
$dataImport = Import-CSV "\\Server\Share\settings.csv" -Delimiter ";"
# Standarddrucker anhand des Computernamens aus der CSV ermitteln
$defaultPrinter = $dataImport | ?{$_.Computername -eq $env:COMPUTERNAME} | select -Expand DefaultPrinter
If (!$defaultPrinter){
# hier einen Alternativ-Standard-Drucker definieren für den Fall das für den Rechner kein Drucker hinterlegt ist
$defaultPrinter = $dataImport | ?{$_.Computername -eq "DEFAULT"} | select -Expand DefaultPrinter
}
# ============================
$usersid = (New-Object System.Security.Principal.NTAccount($env:USERNAME)).Translate([System.Security.Principal.SecurityIdentifier]).Value
$key = "$usersid\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows"
$deviceKey = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows"
# Action wird ausgeführt sobald sich der Registrykey ändert
$action = {
$obj = $Event.SourceEventArgs.NewEvent
$currentDevice = (Get-ItemProperty $deviceKey -Name "Device").Device.Split(",")
if ($defaultPrinter -ne $currentDevice){
Try{
$printer = gwmi Win32_Printer | ?{$_.Name -eq $defaultPrinter}
if ($printer){
$printer.SetDefaultPrinter()
write-host "Der Default-Drucker wurde auf den definierten Standard zurückgesetzt!" -ForegroundColor Yellow
}else{
write-host "Der Drucker '$defaultPrinter' existiert nicht" -ForegroundColor Red
}
}catch{
write-host "Beim setzen des Standarddruckers ist ein Fehler aufgetreten: $($_.Exception.Message)" -ForegroundColor Red
}
}
}
Register-WmiEvent -Query "Select * From RegistryKeyChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='$key'" -SourceIdentifier "DefaultPrinterWatcher" -Action $action | out-null
While($true){
sleep(1)
}
# ACHTUNG Zum Beenden der Event-Subscription in der aktuellen Session folgenden Befehl ausführen
# Get-EventSubscriber | Unregister-Event
STRG + C
abbricht, man auch den Event-Subscriber beenden sollte (siehe Hinweis am Ende des Scripts).Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Zitat von @pixel0815:
Wahnsinn :o) Das ist ja richtig nett von dir.
Ich habe allerdings ein Problem festgestellt.
Der Drucker wird nicht gesetzt. Ich bekomme immer die Meldung "Der Drucker xyz existiert nicht".
Der Drucker existiert aber definitiv. Wenn ich mir einfach über WMI die win32_printer anzeigen lasse, finde ich den Namen
dort unter "Name".
Hast du da ne Idee?
dann hast du ihn vermutlich nicht exakt richtig geschrieben ...Wahnsinn :o) Das ist ja richtig nett von dir.
Ich habe allerdings ein Problem festgestellt.
Der Drucker wird nicht gesetzt. Ich bekomme immer die Meldung "Der Drucker xyz existiert nicht".
Der Drucker existiert aber definitiv. Wenn ich mir einfach über WMI die win32_printer anzeigen lasse, finde ich den Namen
dort unter "Name".