Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Standarddrucker per PC vorgeben

Frage Entwicklung Batch & Shell

Mitglied: pixel0815

pixel0815 (Level 1) - Jetzt verbinden

17.12.2014 um 15:31 Uhr, 1421 Aufrufe, 11 Kommentare

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.

2d84d523adae785e8ea5f63b597b4184 - Klicke auf das Bild, um es zu vergrößern

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
Mitglied: killtec
17.12.2014 um 15:34 Uhr
Hi,
sind die PC's in einer Domäne? Dann läst sich das ggf. per GPO regeln.

Gruß
Bitte warten ..
Mitglied: pixel0815
17.12.2014 um 15:36 Uhr
Ich weiß, aber aufgrund der Komplexität unserer Umgebung wäre mir das viel zu viel Aufwand das zu pflegen.
Eine GPO Lösung kommt daher nicht in Frage.
Bitte warten ..
Mitglied: colinardo
17.12.2014, aktualisiert um 15:55 Uhr
Hallo Heiko,
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
Bitte warten ..
Mitglied: pixel0815
17.12.2014 um 15:57 Uhr
: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?
Bitte warten ..
Mitglied: colinardo
17.12.2014 um 16:02 Uhr
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 ??

Was würde das denn pi mal Daumen kosten?
je nach Anforderung/Lastenheft
Bitte warten ..
Mitglied: pixel0815
17.12.2014 um 16:10 Uhr
Auf den PCs gibts mehrere Drucker lokal sowie per Netzwerk gemappte vom Printserver.
Es wird ja auf Citrix gearbeitet und da sind im KIS System einige spezielle Einstellungen in Formularen die auf dem Standarddrucker basieren.
Es ist ja leider nicht immer gewährleistet das der "richtige" Drucker bei der Anmeldung des Benutzers ausgewählt ist.
Bitte warten ..
Mitglied: colinardo
18.12.2014, aktualisiert 19.12.2014
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:
"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
01.
# Vorgaben aus CSV-Datei importieren 
02.
$dataImport = Import-CSV "\\Server\Share\settings.csv" -Delimiter ";" 
03.
 
04.
# Standarddrucker anhand des Computernamens aus der CSV ermitteln 
05.
$defaultPrinter = $dataImport | ?{$_.Computername -eq $env:COMPUTERNAME} | select -Expand DefaultPrinter 
06.
 
07.
If (!$defaultPrinter){ 
08.
  # hier einen Alternativ-Standard-Drucker definieren für den Fall das für den Rechner kein Drucker hinterlegt ist 
09.
  $defaultPrinter =  $dataImport | ?{$_.Computername -eq "DEFAULT"} | select -Expand DefaultPrinter 
10.
11.
 
12.
# ============================ 
13.
$usersid = (New-Object System.Security.Principal.NTAccount($env:USERNAME)).Translate([System.Security.Principal.SecurityIdentifier]).Value 
14.
$key = "$usersid\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Windows" 
15.
$deviceKey = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\Windows" 
16.
 
17.
# Action wird ausgeführt sobald sich der Registrykey ändert 
18.
$action = { 
19.
    $obj = $Event.SourceEventArgs.NewEvent 
20.
    $currentDevice = (Get-ItemProperty $deviceKey -Name "Device").Device.Split(",")[0] 
21.
    if ($defaultPrinter -ne $currentDevice){ 
22.
        Try{ 
23.
            $printer = gwmi Win32_Printer | ?{$_.Name -eq $defaultPrinter} 
24.
            if ($printer){ 
25.
                $printer.SetDefaultPrinter() 
26.
                write-host "Der Default-Drucker wurde auf den definierten Standard zurückgesetzt!" -ForegroundColor Yellow 
27.
            }else{ 
28.
                write-host "Der Drucker '$defaultPrinter' existiert nicht" -ForegroundColor Red 
29.
30.
             
31.
        }catch{ 
32.
            write-host "Beim setzen des Standarddruckers ist ein Fehler aufgetreten: $($_.Exception.Message)" -ForegroundColor Red 
33.
34.
35.
36.
Register-WmiEvent -Query "Select * From RegistryKeyChangeEvent WHERE Hive='HKEY_USERS' AND KeyPath='$key'" -SourceIdentifier "DefaultPrinterWatcher" -Action $action | out-null 
37.
 
38.
While($true){ 
39.
    sleep(1) 
40.
41.
 
42.
# ACHTUNG Zum Beenden der Event-Subscription in der aktuellen Session folgenden Befehl ausführen 
43.
# Get-EventSubscriber | Unregister-Event
Zu beachten ist, das wenn man den Loop beim Testen mit 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
Bitte warten ..
Mitglied: pixel0815
19.12.2014 um 14:53 Uhr
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?
Bitte warten ..
Mitglied: colinardo
19.12.2014, aktualisiert 20.12.2014
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 ...
Bitte warten ..
Mitglied: pixel0815
19.12.2014 um 15:48 Uhr
Ich schwöre :o) Hab sogar kopiert.

01.
Die Anfrage ist ungültig. "select * from Win32_Printer where Name = '\\prrz001\WE_EDV_1OG_DC2930'" 
02.
An C:\Powershell AD\Standardducker.ps1:Zeile:23 Zeichen:24 
03.
+             $printer = g <<<< wmi Win32_Printer -Filter "Name = '$defaultPrinter'" 
04.
 
05.
 
06.
Der Drucker '\\prrz001\WE_EDV_1OG_DC2930' existiert nicht
Das kommt immer wieder
Bitte warten ..
Mitglied: colinardo
19.12.2014, aktualisiert um 15:55 Uhr
Stichwort WMI-Filter: Dort sind Backslashes immer zu verdoppeln ich ändere das noch ab, hatte ich nicht dran gedacht sorry ..

-edit- ist schon abgeändert ...jetzt musst du die Slashes nicht mehr verdoppeln.
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
IDE & Editoren
USB STICK Datei AUTOMATISCH beim anschliessen auf fremden PC öffnen (9)

Frage von Jwanner83 zum Thema IDE & Editoren ...

Batch & Shell
gelöst WinXP-PC mit einem Barcodescanner herunterfahren (8)

Frage von Sinzal zum Thema Batch & Shell ...

CPU, RAM, Mainboards
Angetestet: PC Engines APU 3a2 im Rack-Gehäuse (2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Router & Routing
Spielzeiten auf pc und handy steuern (7)

Frage von fisch56 zum Thema Router & Routing ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...