Benachrichtigung bei Druckaufträgen
Hallo Zusammen,
wir haben in unserem Unternehmen mehrere Drucker. Es handelt sich um Netzwerkdrucker welche auf einem Printserver (Win Server 2016) eingerichtet und freigegeben werden. Die Drucker werden per GPO (Einstellungen -> Systemsteuerungseinstellungen -> Drucker) an die Clients verteilt.
Auf den Clients läuft Windows 10
Ich möchte gern, das über das Benachrichtigungscenter von Windows 10 bei den Clients bei jedem Druckauftrag eine Meldung ausgegeben wird. Bisher passiert dies irgendwie nur wenn der Drucker ausgeschaltet ist oder ein Fehler vorliegt. Ich möchte aber auch eine Benachrichtigung erhalten, wenn der Druckauftrag erfolgreich an den Drucker geschickt wurde.
In den Eigenschaften vom Printserver habe ich schon die Haken für "Informative Benachrichtigungen für Netzwerkdrucker anzeigen" und "Informative Benachrichtigungen für lokale Drucker anzeigen" ausgewählt.
Weiterhin ist der Schieberegler bei den Clients bei "Druckbenachrichtigungen" aktiviert (WIN+A -> Benachrichtigungen verwalten)
Das hat alles nichts gebracht. Es werden keine Print-Notifications angezeigt.
Hat vielleicht jemand eine Idee, gibt es dafür eine extra administrative Vorlage, oder kann man da in der Registry etwas einstellen?
wir haben in unserem Unternehmen mehrere Drucker. Es handelt sich um Netzwerkdrucker welche auf einem Printserver (Win Server 2016) eingerichtet und freigegeben werden. Die Drucker werden per GPO (Einstellungen -> Systemsteuerungseinstellungen -> Drucker) an die Clients verteilt.
Auf den Clients läuft Windows 10
Ich möchte gern, das über das Benachrichtigungscenter von Windows 10 bei den Clients bei jedem Druckauftrag eine Meldung ausgegeben wird. Bisher passiert dies irgendwie nur wenn der Drucker ausgeschaltet ist oder ein Fehler vorliegt. Ich möchte aber auch eine Benachrichtigung erhalten, wenn der Druckauftrag erfolgreich an den Drucker geschickt wurde.
In den Eigenschaften vom Printserver habe ich schon die Haken für "Informative Benachrichtigungen für Netzwerkdrucker anzeigen" und "Informative Benachrichtigungen für lokale Drucker anzeigen" ausgewählt.
Weiterhin ist der Schieberegler bei den Clients bei "Druckbenachrichtigungen" aktiviert (WIN+A -> Benachrichtigungen verwalten)
Das hat alles nichts gebracht. Es werden keine Print-Notifications angezeigt.
Hat vielleicht jemand eine Idee, gibt es dafür eine extra administrative Vorlage, oder kann man da in der Registry etwas einstellen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 53920882435
Url: https://administrator.de/contentid/53920882435
Ausgedruckt am: 22.11.2024 um 00:11 Uhr
4 Kommentare
Neuester Kommentar
Wieso sollte man unnötigerweise jedes mal eine Meldung wegklicken müssen, ABM Maßnahme? Aus gutem Grund wird der User nur behelligt wenn es Probleme gibt, ansonsten alles gut
Hi.
Nahezu alle aktuellen Netzwerkdrucker haben einen Webserver, der auch die Liste gedruckter Dokumente anzeigt ...
(Link zur Website auf den Desktop)
Der User lann also darüber prüfen, ob sein Druckauftrag durch ist ...
Ebenso zrigt auch die geöffnete Fruckerwarteschlange alle laufenden Aufträge an ...
Beides bestenfalls mit Username ...
.
Nahezu alle aktuellen Netzwerkdrucker haben einen Webserver, der auch die Liste gedruckter Dokumente anzeigt ...
(Link zur Website auf den Desktop)
Der User lann also darüber prüfen, ob sein Druckauftrag durch ist ...
Ebenso zrigt auch die geöffnete Fruckerwarteschlange alle laufenden Aufträge an ...
Beides bestenfalls mit Username ...
.
Servus,
Grüße Uwe
Daher möchte ich gern diese speziellen User mit Benachrichtigungen vollspamen. face-smile
Spammen geht immer , z.B. mit einem Powershell-Skript das im Hintergrund läuft und die Print-Jobs-Pipeline über WMI überwacht, etwa so:Add-Type –MemberDefinition '[DllImport("user32.dll")]public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);' -name Window -namespace W32
# hide powershell window
[void][W32.Window]::ShowWindow((Get-Process -id $pid).MainWindowHandle, 0)
# function to show toast notification
function Show-ToastNotification {
param(
[parameter(mandatory=$false)][ValidateSet('Title+Text','Image+Text')][string]$type = 'Title+Text',
[parameter(mandatory=$false)][string]$apptitle = "Powershell",
[parameter(mandatory=$false)][string]$message,
[parameter(mandatory=$false)][System.DateTimeOffset]$expiration = [DateTimeOffset]::Now.AddMinutes(60),
[parameter(mandatory=$false)][switch]$expiresOnReboot,
[parameter(mandatory=$false)][Windows.UI.Notifications.ToastNotificationPriority]$priority = 'Default',
[parameter(mandatory=$false)][switch]$suppressPopup,
[parameter(mandatory=$false)][switch]$includeSnoozeButton,
[parameter(mandatory=$false)][switch]$includeDismissButton
)
DynamicParam {
$attrCollection = new-object System.Collections.ObjectModel.Collection[System.Attribute]
$paramDic = new-object System.Management.Automation.RuntimeDefinedParameterDictionary
$attr = new-object System.Management.Automation.ParameterAttribute
switch($type){
'Title+Text'{
$attr.ParameterSetName = "A"
$attr.Mandatory = $false
$attrCollection.Add($attr)
$paramDic.Add("title", (new-object System.Management.Automation.RuntimeDefinedParameter("title", [String], $attrCollection)))
}
'Image+Text'{
$attr.ParameterSetName = "B"
$attr.Mandatory = $false
$attrCollection.Add($attr)
$paramDic.Add("image", (new-object System.Management.Automation.RuntimeDefinedParameter("image", [String], $attrCollection)))
}
}
return $paramDic
}
begin{}
process{}
end{
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] | out-null
[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType = WindowsRuntime] | out-null
$xml = $null
switch($type){
'Title+Text' {
$xml = [xml]([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText02)).GetXML()
# set toast content
$xml.SelectSingleNode('/toast/visual/binding/text[@id=1]').InnerText = $PSBoundParameters.title
$xml.SelectSingleNode('/toast/visual/binding/text[@id=2]').InnerText = $message
}
'Image+Text' {
$xml = [xml]([Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastImageAndText01)).GetXML()
# set toast content
$xml.SelectSingleNode('/toast/visual/binding/text[@id=1]').InnerText = $message
$xml.SelectSingleNode('/toast/visual/binding/image[@id=1]').src = $PSBoundParameters.image
}
}
# add command buttons
if($includeSnoozeButton.IsPresent -or $includeDismissButton.IsPresent){
$actions = $xml.CreateElement('actions')
# add snooze button when requested
if ($includeSnoozeButton.IsPresent){
$inp = $xml.CreateElement('input')
$inp.SetAttribute('id','snoozeTime')
$inp.SetAttribute('type','selection')
$inp.SetAttribute('title','Erneut erinnern in')
$inp.SetAttribute('defaultInput','15')
5,15,30,60 | %{
$sel = $xml.CreateElement('selection')
$sel.SetAttribute('id',$_)
$sel.SetAttribute('content',"$_ Minuten")
[void]$inp.AppendChild($sel)
}
[void]$actions.AppendChild($inp)
$action = $xml.CreateElement('action')
$action.SetAttribute('content','Später erinnern')
$action.SetAttribute('arguments','snooze')
$action.SetAttribute('activationType','system')
$action.SetAttribute('hint-inputId','snoozeTime')
[void]$actions.AppendChild($action)
}
# add dismiss button when requested
if($includeDismissButton.IsPresent){
$action = $xml.CreateElement('action')
$action.SetAttribute('content','Ignorieren')
$action.SetAttribute('arguments','dismiss')
$action.SetAttribute('activationType','system')
[void]$actions.AppendChild($action)
}
[void]$xml.DocumentElement.AppendChild($actions)
}
# convert xml object to DOM XML
$dom = New-Object Windows.Data.Xml.Dom.XmlDocument
$dom.LoadXml($xml.OuterXml)
# create toast
$toast = New-Object Windows.UI.Notifications.ToastNotification $dom -Property @{
Tag = 'Powershell'
Group = "PowerShell"
ExpirationTime = $expiration
ExpiresOnReboot = $expiresOnReboot.IsPresent
Priority = $priority
SuppressPopup = $suppressPopup.IsPresent
}
# create notifier and show toast
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($apptitle).Show($toast)
}
}
# subscribe printjob events
Register-WmiEvent -Query "SELECT * FROM __InstanceDeletionEvent WITHIN .5 WHERE TargetInstance ISA 'Win32_PrintJob'" -SourceIdentifier "NewPrintJob" -Action {
$printer = $event.SourceArgs.NewEvent.TargetInstance.Name.split(',')[0]
$status = $event.SourceArgs.NewEvent.TargetInstance.Status
$document = $event.SourceArgs.NewEvent.TargetInstance.Document
$message = "Das Dokument '$document' wurde erfolgreich gedruckt."
if ($status -ne 'OK'){
$message = "Beim Druck von '$document' sind evt. Fehler aufgetreten:`r`nStatus: $status"
}
Show-ToastNotification -type Title+Text -apptitle "Druckbenachrichtigung" -title $printer -message $message -includeDismissButton -expiresOnReboot
} | out-null
while($true){sleep 5}