Top-Themen

Aktuelle Themen (A bis Z)

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

Per Script alle hängenden Druckaufträge löschen

Mitglied: mguenth83

mguenth83 (Level 1) - Jetzt verbinden

13.11.2013 um 17:43 Uhr, 5447 Aufrufe, 3 Kommentare

Hi,
wollte mal von Euch hören was Ihr von meinem Script haltet.
Das Script löscht alle Druckaufträge in einem Drucker die älter als X Minuten alt sind.
Ich weiß es ist nicht perfekt aber hey für den Anfang nicht schlecht.


01.
#DruckerScript zum Automatischen löschen der festhängenden Jobs##
02.
#################################################################
03.

04.
##Liste momentaner Druckjobs##"
05.
  #------------------------#
06.
$PrinterJobs=(Get-WmiObject Win32_PerfFormattedData_Spooler_PrintQueue) | where {$_.Jobs -GT "0"} | select name
07.
if ($PrinterJobs -eq $null){
08.
Write-Host "Keine Druckaufträge gefunden"
09.
;break}
10.

11.
##Script macht eine Pause von X Minuten##
12.
  #-----------------------------------#
13.
sleep -Seconds 20
14.

15.
##Liste der Druckjobs X Minuten später##
16.
  #----------------------------------#
17.
$PrinterJobsafterXMinutes=(Get-WmiObject Win32_PerfFormattedData_Spooler_PrintQueue) | where {$_.Jobs -GT "0"} | select Name
18.
if ($PrinterJobsafterXMinutes -eq $null){
19.
Write-Host "Keine Druckaufträge die hängen"
20.
;break}
21.

22.
##Beide Objekte mit einander Vergleichen##
23.
  #------------------------------------#
24.

25.
$Compare = Compare-Object -ReferenceObject $PrinterJobs.Name -DifferenceObject $PrinterJobsafterXMinutes.Name -IncludeEqual -PassThru | where {$_.SideIndicator -Like "=="}
26.
cls
27.
##_Total aus der Tabelle nehmen##
28.
  #---------------------------#
29.

30.
$PrinterList = $Compare | Where -FilterScript {$_ -notlike "*Total"}
31.

32.
##Druckaufträge der Porblemdrucker löschen##
33.
  #--------------------------------------#
34.
foreach ($Printer in $PrinterList){
35.
Write-Host "Für den Drucker ""$Printer"" werden die Druckaufträge gelöscht" -ForegroundColor Yellow -BackgroundColor Black
36.
(Get-WMIObject -Class Win32_Printer -Filter "Name='$Printer'").CancelAllJobs()
37.
}
38.
>
Mitglied: colinardo
13.11.2013, aktualisiert um 23:14 Uhr
Hallo Matthias,
ich sehe du machst Fortschritte,
dein Code hat leider einen unschönen Fehler, du löschst nicht nur den hängenden Druckauftrag sondern alle gerade laufenden Aufträge auf diesem Drucker, nicht schön wenn gerade einer druckt. Außerdem ist die WMI-Klasse die du benutzt nicht gerade die Beste, hier ist die Klasse "Win32_PrintJob" besser dafür geeignet.

Dein Gewünschtes ließe sich auf dieses Script verkürzen. Es löscht Druckaufträge die vor 30 Minuten gestartet wurden und sich noch in der Warteschlange befinden und wartet dann 5 Minuten bis es erneut überprüft. Die Zeiten sollte man natürlich je nach Drucker anpassen, wenn auf bestimmten Druckern sehr lange Druckaufträge mit 1000den Seiten laufen sollten, wenn z.B einer das ISO9001 Handbuch ausdruckt .
01.
while($true){
02.
    gwmi -Class Win32_PrintJob | ?{$_.ConvertToDateTime($_.TimeSubmitted).AddMinutes(30) -lt (get-date)} | %{$_.Delete()}
03.
    sleep(300)   # 5 Minuten warten
04.
}
Ab Server 2012R2 und Windows 8.1: gibt es für diese Aufgaben auch neue CMDLets
http://technet.microsoft.com/en-us/library/hh918357.aspx

happy coding
Grüße Uwe
Bitte warten ..
Mitglied: mguenth83
14.11.2013 um 10:42 Uhr
Hi,
hört sich gut an, funktioniert aber leider nicht dein Script...hab es versucht auf meine Weise zu coden aber is nur Schrott raus gekommen....
Naja behalte erstmal meine Variante...Vielleicht hab ich noch Lust irgendwann es umzuschreiben..

Hier mal der Code was ich gebastelt habe...
01.
$Jobs=get-wmiobject Win32_PrintJob | select @{Name="Time";Expression={($_.ConvertToDateTime($_.TimeSubmitted).AddMinutes(30))}},Name,Document
02.

03.
$Time=get-date # -Format 'MM/dd/yyyy hh:mm:ss'
04.

05.
ForEach ($Job in $Jobs.Time){
06.
where -LT $Time}
07.

08.

09.

10.
if ($Jobs.Time -lt $Time){
11.
Write-Host "Das Dokument "$Jobs.Document" wird am Drucker"$Jobs.Name"gelöscht"
12.
#{$_.Delete()}
13.
}
14.
else {
15.
Write-Host "False"
16.
}
17.
$Jobs
Irgendwie bekomme ich die Abfrage nicht hin mit der DateTime...
Bitte warten ..
Mitglied: colinardo
14.11.2013, aktualisiert um 10:58 Uhr
Zitat von mguenth83:
Hi,
hört sich gut an, funktioniert aber leider nicht dein Script..
Geht hier einwandfrei ....(PS3.0 auf Win7x64) hatte vielleicht nicht erwähnt das es mit der "while"-Schleife unendliche lange läuft und nach dem Befehl immer 5 Minuten wartet.

Dein Script kann so ganz und gar nicht funktionieren, zu viele Fehler ...
So geht des nach deinem Gusto
01.
$Jobs = get-wmiobject Win32_PrintJob
02.
$Time = get-date # -Format 'MM/dd/yyyy hh:mm:ss'
03.
ForEach ($Job in $Jobs){
04.
    $jobtime = $Job.ConvertToDateTime($Job.TimeSubmitted)
05.
    if ($jobtime -lt $Time.AddMinutes(-30)){
06.
        Write-Host "Das Dokument '$($Job.Document)' wird am Drucker '$($Job.Name)' gelöscht"
07.
        #$Job.Delete()
08.
    }
09.
}
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
Netzwerkprotokolle
Druckauftrag zurückverfolgen
Frage von AndreaTippNetzwerkprotokolle8 Kommentare

Hallo ! Kann mein Arbeitgeber ( mit IT Fachleuten) ein vor vier Wochen gedrucktes Word Dokument, welches ich nicht ...

Drucker und Scanner
Druckauftrag bleibt hängen
Frage von Ghost108Drucker und Scanner3 Kommentare

Hallo zusammen, ich habe einen neuen HP Drucker im Einsatz (via USB), welcher mir Probleme macht. PC Windows 10 ...

Drucker und Scanner

Druckauftrag wird nicht ausgeführt - Drucker im Energiesparmodus

Frage von RalphTDrucker und Scanner5 Kommentare

Hallo, ich habe von HP ein Multifunktionsgerät 8600. Bei diesem Gerät lässt sich der Energiesparmodus nicht deaktiveren, sondern nur ...

Drucker und Scanner

Druckauftrag - Fenster mit der Meldung "LDAP-Server definieren" öffnet sich

gelöst Frage von Mars123Drucker und Scanner2 Kommentare

Hallo, seitdem ich einige Druckerfreigaben geändert habe, erhalten unsere Benutzer vor jedem Druckauftrag den sie abschicken folgende Nachricht: LDAP-Server ...

Neue Wissensbeiträge
Backup

Veeam Agent für MS Windows - neue Version verfügbar (bedingt jedoch offenbar .NET Framework 4.6)

Information von VGem-e vor 22 StundenBackup

Moin Kollegen, einer unserer Server zeigte grad an, dass für o.g. Software ein Update verfügbar ist. Ob ein evtl. ...

Python

Sie meinen es ja nur gut - Microsoft hilft python-Entwicklern auf unnachahmliche Weise

Information von DerWoWusste vor 2 TagenPython2 Kommentare

Stellt Euch vor, Ihr nutzt python unter Windows 10 und skriptet damit regelmäßig Dinge. Nach dem Update auf Windows ...

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 steht in Englisch bereit mit Unterstützung für Windows 10 1903 (May Update)

Information von VGem-e vor 2 TagenSicherheits-Tools1 Kommentar

Moin Kollegen, Dann kommt wohl demnächst auch die deutschsprachige/europäische Version zur Auslieferung. Gruß VGem-e

Batch & Shell
PowerShell Konferenz - Videos online
Information von NetzwerkDude vor 3 TagenBatch & Shell

Abend, die Tage werden Videos der Talks von der diesjährigen EU Powershell Konferenz hochgeladen, sind einige Interessante dabei: MFG ...

Heiß diskutierte Inhalte
Google Android
Anbieter für Diensthandys
Frage von Pat.batGoogle Android24 Kommentare

Hallo zusammen, ich bin seit einiger Zeit zuständig für die Diensthandys bei uns in der Behörde. Eine Management Software ...

Windows Server
Windows Server 2016 einrichten
Frage von borjiaWindows Server20 Kommentare

Ich würde gerne einen Server einrichten, erstmal nur mit DNS und AD. Habe mich die letzten Wochen durch diverse ...

Exchange Server
Vorgehen um von Tobit auf Exchange zu wechseln
Frage von Martin1987Exchange Server17 Kommentare

Guten Abend Ich habe den Auftrag erhalten, unser Mail von David zu Outlook zu wechseln. Wie muss ich da ...

Microsoft Office
Office 365 eMail via Website verschicken
Frage von BiBeSoMicrosoft Office16 Kommentare

Hallo, kann man im Office 365 eMails anlegen welche zum versenden (smtp) für die Website funktionieren ? Muss man ...