Benutzer mit den meisten Antworten
Powershell nicht genutzte Druckerqueue bzw. Sharename auffinden.

Frage
-
Hallo.
Ich habe ca. 40 Drucker aber 145 Druckerqueue ( Hochformat, Duplex,Schacht u.s.w)
Mein Ziel: Aufräumen
Mein Lösungsansatz:
# alle Printer ermitteln
"$allprinters=Get-WMIObject -Class Win32_Printer |select sharename"
#..und ermitteln welche Queues z.B 14 Tage nicht mehr genutzt wurden (Event-Log)
$Results = Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307;}
Wie baue ich das jetzt zusammen ?
Antworten
-
Hab selber hinbekommen.Compare-Objekt ( Alias diff) war die Lösung.
# Schritt1 alle Drucker vom Printserver ermitteln get-wmiobject win32_printer | select name |export-csv c:\temp\MPallPrinters.csv #Schritt2 Evendlog der letzten 30 Tage welcher Drucker gedruckt hat Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=(Get-Date).AddDays(-30)} | select -Property TimeCreated, @{label='PrinterName';expression={$_.properties[4].value}}|select printername|export-Csv -Encoding Unicode -Force -NoClobber -NoTypeInformation c:\temp\last30days.csv #Schritt3 doppelte werte aus eventlog entfernen und Ergebnis anzeigen $temp = get-content c:\temp\last30days.csv | sort -unique $temp | out-file c:\temp\307_noDub.csv $strReference = Get-Content "C:\Temp\MPallPrinters.csv" $strDifference = Get-Content "C:\Temp\307_noDub.csv" Diff $strReference $strDifference -IncludeEqual | Format-Table InputObject, SideIndicator -AutoSize # = bedeudet in beiden dateien ( nicht von Interesse) # -> bedeudet in beiden dateien ( nicht von Interesse) # <- bedeutet nur in Drucker Datei also nicht im Evendlog heißt Drucker wird nicht benutzt
- Bearbeitet MarkBrandenburg Dienstag, 25. September 2018 14:01
- Als Antwort markiert Yavor TanevMicrosoft contingent staff Donnerstag, 11. Oktober 2018 09:31
Alle Antworten
-
Moin,
bitte verwende die Code-Formatierung, wenn Du Code postest. Das macht den Code leserlich.
Ansonsten würde ich mir halt durch die Filterung die Ereignisse der letzten 14 Tage rausziehen und schauen, welche der Queue-Namen im Message-Attribut NICHT vorkommen. Das sind die gesuchten ungenutzten Queues.
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
-
Moin,
Danke für den Hinweis mit dem Code. Es sind nur bei mir 145 Queues insgesamt auf dem Printserver 750 . Habe jetzt nicht verstanden wie ich das umsetzten soll. Ich brauche als "Code" :-) .Wollte keine Exceltabelle vergeleichen oder so ähnlich.
Danke und Gruß
-
Ja, ich meinte ja auch das, was Dein Skript machen muss. Fertige Skripte auf Bestellung und fertige Pizza auf Bestellung haben eins gemeinsam ;-)
Evgenij Smirnov
I work @ msg services ag, Berlin -> http://www.msg-services.de
I blog (in German) @ http://it-pro-berlin.de
my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
Exchange User Group, Berlin -> https://exusg.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com
In theory, there is no difference between theory and practice. In practice, there is.
-
Am 20.09.2018 schrieb MarkBrandenburg:
Ich habe ca. 40 Drucker aber 145 Druckerqueue ( Hochformat, Duplex,Schacht u.s.w)
Mein Ziel: Aufräumen
Mein Lösungsansatz:
# alle Printer ermitteln
"$allprinters=Get-WMIObject -Class Win32_Printer |select sharename"
#..und ermitteln welche Queues z.B 14 Tage nicht mehr genutzt wurden (Event-Log)
$Results = Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307;}Hier hat schon mal jemand etwas ähnliches gebaut:
https://gallery.technet.microsoft.com/scriptcenter/Script-to-generate-print-84bdcf69
Grundsätzlich ist die Technet Script Gallery immer eine gute
Anlaufstelle:
https://gallery.technet.microsoft.com/scriptcenter/site/search?f%5B0%5D.Type=RootCategory&f%5B0%5D.Value=printing&f%5B0%5D.Text=Drucken&f%5B1%5D.Type=SubCategory&f%5B1%5D.Value=jobs&f%5B1%5D.Text=Druckserver%2C%20Druckerwarteschlangen%20und%20Druckauftr%C3%A4ge&pageIndex=1Servus
Winfried
WSUS Package Publisher: http://wsuspackagepublisher.codeplex.com/
HowTos zum WSUS Package Publisher http://www.wsus.de/wpp
GPO's: http://www.gruppenrichtlinien.de
NNTP-Bridge für MS-Foren: http://communitybridge.codeplex.com/
GP-PACK - PRIVACY AND TELEMETRIE: http://www.gp-pack.com/ -
Hab selber hinbekommen.Compare-Objekt ( Alias diff) war die Lösung.
# Schritt1 alle Drucker vom Printserver ermitteln get-wmiobject win32_printer | select name |export-csv c:\temp\MPallPrinters.csv #Schritt2 Evendlog der letzten 30 Tage welcher Drucker gedruckt hat Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=(Get-Date).AddDays(-30)} | select -Property TimeCreated, @{label='PrinterName';expression={$_.properties[4].value}}|select printername|export-Csv -Encoding Unicode -Force -NoClobber -NoTypeInformation c:\temp\last30days.csv #Schritt3 doppelte werte aus eventlog entfernen und Ergebnis anzeigen $temp = get-content c:\temp\last30days.csv | sort -unique $temp | out-file c:\temp\307_noDub.csv $strReference = Get-Content "C:\Temp\MPallPrinters.csv" $strDifference = Get-Content "C:\Temp\307_noDub.csv" Diff $strReference $strDifference -IncludeEqual | Format-Table InputObject, SideIndicator -AutoSize # = bedeudet in beiden dateien ( nicht von Interesse) # -> bedeudet in beiden dateien ( nicht von Interesse) # <- bedeutet nur in Drucker Datei also nicht im Evendlog heißt Drucker wird nicht benutzt
- Bearbeitet MarkBrandenburg Dienstag, 25. September 2018 14:01
- Als Antwort markiert Yavor TanevMicrosoft contingent staff Donnerstag, 11. Oktober 2018 09:31
-
In Skripten solltest Du "schön" schreiben und keine Pipe oder Aliase verwenden. Foreach ist meist schneller und später besser lesbar. Aber wenn schon, denn schon :-))
Bei $strDifference bin ich mir nicht ganz sicher, ob das so funktioniert - hab keinen Druckserver zur Hand.$strReference = ( get-wmiobject win32_printer ).Name
$strDifference = ( Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-PrintService/Operational"; ID=307; StartTime=(Get-Date).AddDays(-30)} | select -Property TimeCreated, @{label='PrinterName';expression={$_.properties[4].value}} ).PrinterName | Sort -Unique Diff $strReference $strDifference -IncludeEqual | Format-Table InputObject, SideIndicator -AutoSize
Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq