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, 4312 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
Windows Server

Usern auf Terminalserver 2012 Rechte geben um Druckaufträge zu löschen

gelöst Frage von moltovaWindows Server2 Kommentare

Hi, habe das Problem, bei einem Terminalserver Windows Server 2012 sollen alle Benutzer in der Lage sein, eigene + ...

Batch & Shell

Script nach Dateinamen löschen

gelöst Frage von KnuefiBatch & Shell19 Kommentare

Hallo mal wieder, ich versuche ein Script zu schreiben, das nach gewünschten Dateinamen in bestimten Ordner sucht und wenn ...

Entwicklung

Powershell Script zum löschen von Userprofilen

Frage von Thomas91Entwicklung10 Kommentare

Moinmoin, ich versuche mich gerade mal wieder am scripten mit Powershell. Meine Vorstellung waren: Nach Ausführen des Scriptes wird ...

Batch & Shell

Bestimmte Zeilen mit einem Batch-Script löschen

gelöst Frage von Dnis822Batch & Shell1 Kommentar

Hallo zusammen, ich stehe vor folgendem Problem: ich möchte bestimmte Zeilen in einer Datei löschen. Folgendes habe ich bereits ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 12 StundenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 20 StundenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 1 TagSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 1 TagWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit17 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Sonstige Systeme
Wie Normenkataloge im Unternehmen bereit stellen?
Frage von MuzzepuckelSonstige Systeme14 Kommentare

Hallo Kollegen, ich lese schon lange hier mit, nun mein ersrer Beitrag, bzw. Frage. :-) Wir benötigen für unsere ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...

Windows Installation
Kleines Büro - wie PCs einrichten? Domaincontroller sinnvoll?
Frage von Jonas42Windows Installation13 Kommentare

Hallo zusammen, ich überlege derzeit mal wieder, ob ich unsere IT ändern sollte. Es handelt sich um ein Ingenieurbüro ...