Skip to content

Daniels Tagesmeldungen

Kleine IT-Episoden & das wahre Leben

  • Startseite
  • About me…
    • Lebenslauf
    • Weiterbildung
  • Disclaimer
  • Toggle search form

Powershell: Drucker entfernen mit Protokoll

Posted on 18. Juli 201617. Juli 2016 By Daniel Lensing Keine Kommentare zu Powershell: Drucker entfernen mit Protokoll

Wenn man in Auftrag arbeitet kann es Sinn machen auch für Standardaufgaben ein Protokoll anzufertigen. Dieses macht aber manchmal mehr Aufwand als die eigentliche Aufgabe. Zu diesem Zweck habe ich mir für das Entfernen eines Druckers einen kleinen Ablauf erstellt, so dass alle Daten in eine Exportdatei geschrieben wird und anschließend die folgenden Komponenten entfernt werden:

  • Druckobjekt
  • Druckerport
  • DHCP-Reservierung

Es werden neben den Möglichkeiten des Powershell auch WMI-Definitionen genutzt

#Abfrage Druckername
$Printer = [Microsoft.VisualBasic.Interaction]::InputBox("Druckernamen eingeben:", "RemovePrinter")
 
#Serverdefinition
$DHCPServer1 ="SRVDHCP01"
$Failover ="No"
$Printserver1 = "SRVPRINT01"
 
#Variable Datei
$datei = "E:\RemovePrint\$Printer.txt"
"Protokoll Drucker $Printer " | set-content $datei -Force
"----------------------------------------------------------------------" | Add-Content $datei
Write-host "1/3 Inventarisierung wird durchgeführt"
 
#Variablenabfrage Druckerobjekt
$Printquery = get-printer $Printer -computername $Printserver1 | Select-Object *
$Portname = $Printquery.PortName
$Sharename =$Printquery.ShareName
$Sharestatus = $Printquery.Shared
$ADPublished = $Printquery.Published
$Kommentar = $Printquery.Comment
$Standort = $Printquery.Location
$Treiber = $Printquery.DriverName
$Druckauftraege =$Printquery.JobCount
$Druckstatus = $Printquery.PrinterStatus
 
#Variablenabfrage Druckerport
$Printport = get-wmiobject -class Win32_TCPIPPrinterPort -Computername $Printserver1 -Namespace "root\CIMV2" -filter "Name='$Portname'"
$Printprotokoll = $Printport.Protocol
$PrintIP = $Printport.HostAddress
$PrintPort = $Printport.PortNumber
$PrintQueue =$Printport.Queue
$SNMPEnable = $Printport.SNMPEnabled
$SNMPName = $Printport.SNMPCommunity
$SNMPID = $Printport.SNMPDevIndex
 
#Bericht - aktueller Status
"" | Add-Content $datei
"Druckerstatus: $Druckstatus" |add-content $datei
"" | Add-Content $datei
"Kommentar: $Kommentar" |add-content $datei
"Standort: $Standort" |add-content $datei
"" | Add-Content $datei
"Freigabe: $Sharename" |add-content $datei
"Freigabestatus: $Sharestatus" |add-content $datei
"AD-Veröffentlichung: $ADPublished" |add-content $datei
"" | Add-Content $datei
"Treibername: $Treiber" |add-content $datei
"" | Add-Content $datei
"Anzahl Aufträge: $Druckauftraege" |add-content $datei
 
If ($Druckauftraege -gt 0) {
$Druckliste=get-printer $printer -computername $Printserver1 | Get-PrintJob | Select-Object ID,documentname,Username,jobstatus
$Druckliste |add-content $datei
} 
 
"" | Add-Content $datei
"Portbezeichnung: $Portname" |add-content $datei
 
If ($Printprotokoll -like "1"){
"Protokoll: RAW" | add-content $datei 
"IP-Adresse: $PrintIP" | add-content $datei
"Port: $PrintPort" | add-content $datei
"" | Add-Content $datei
$PortProtokoll ="RAW"}
 
If ($Printprotokoll -like "2"){ 
"Protokoll: LPR" | add-content $datei
"Queue: $PrintQueue" | add-content $datei
"Port: $PrintPort" | add-content $datei
"" | Add-Content $datei
$PortProtokoll ="LPR"}
 
"SNMP-Status: $snmpenable" | add-content $datei
 
IF ($SNMPEnable -like "True") { 
"SNMP-Community: $SNMPName" | add-content $datei
"SNMP-Index: $SNMPIndex" | add-content $datei}
 
"" | Add-Content $datei
 
#Variablenabfrage DHCP
$DHCPSet = Get-dhcpServerv4Lease -IPaddress $PrintIP -computername $DHCPServer1 | Select-Object *
$DHCPMAC =$dhcpset.ClientId
$DHCPScope = $DHCPSet.ScopeId
$DhcpState = $DHCPSet.AddressState
$DHCPClientType = $Dhcpset.ClientType
$DhcpDescription = $DHCPset.Description
$DHCPHost = $DHCPSet.HostName
 
"MAC-Adresse: $DHCPMac"| add-content $Datei
"Beschreibung: $DhcpDescription" | add-content $datei
"HostName: $Dhcphost" | add-content $datei
"" | Add-Content $datei
"Adressstatus: $DHCPState" | add-content $datei
"DHCP-Typ: $DHCPClienttype" | add-content $datei
"DHCP-Scope: $DHCPScope" | add-content $Datei
"----------------------------------------------------------------------" | Add-Content $datei
"Tasks:" | Add-Content $datei
"" | Add-Content $datei
 
Write-host "2/3 Druckerlöschung wird bearbeitet"
 
#Drucker offline setzen
$printer = Get-WMIObject -Class win32_printer -Computername $Printserver1 -Namespace "root\CIMV2" | ? { $_.name -like $Printer }
$printer.WorkOffline = $true
$printer.Put()
 
#AD-Veröffentlichung deaktivieren
If ($ADPublished -like 'True') {Set-Printer $Printer -computername $Printserver1 -Published $False}
 
#Share-Freigabe entfernen
If ($Sharestatus -like 'True') {Set-Printer $Printer -computername $Printserver1 -Shared $False}
 
#Druckaufträge löschen
If ($Druckauftraege -gt 0) {Get-PrintJob -PrinterName $Printer -ComputerName $Printserver1 | Remove-Printjob -CimSession $Printserver1}
 
#Drucker entfernen
Remove-Printer -Name $Printer -Computername $Printserver1
 
Write-host "3/3 Portlöschung wird bearbeitet"
 
$Portcount = get-wmiobject -class Win32_Printer -Computername $Printserver1 -Namespace "root\CIMV2" -filter "PortName='$Portname'" | measure
 
If ($Portcount.Count -lt "1") {
Remove-PrinterPort -name $Portname -ComputerName $Printserver1
$DHCPRemove = "Yes"}
 
If ($dhcpremove = "Yes"){
Remove-DhcpServerv4Reservation -ComputerName $DHCPServer1 -IPAddress $PrintIP}
 
If ($Failover = "Yes") {
Invoke-DhcpServerv4FailoverReplication -ComputerName $DHCPServer1 -ScopeId $DHCPScope}
 
Write-host "---- Skriptende ----"

Man könnte auch das Protokoll per Mail versenden lassen oder weitere Server einführen, um zum Beispiel eine Failover-Möglichkeit zu schaffen.

Powershell

Beitrags-Navigation

Previous Post: MOS Powerpoint 2013 / 77-422
Next Post: MS16-087 verändert die „Point and Print Restrictions“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Daniel Lensing

Ich betreibe diesen Blog, wo ich meine Erfahrungen aus der IT sowie dem damit verbundenen Berufsalltag dem Internet zur Verfügung stelle.

Zwischenzeitlich bringe ich auch noch die eine oder andere Gegebenheit aus meinem Offline-Leben zur digitalen Nutzung.

Follow us

  • rss
  • mail
  • twitter
  • instagram
  • xing
  • linkedin
  • mastodon

Kategorien

  • Allgemein (13)
  • Client (209)
    • Android (4)
    • Fedora (Linux) (4)
    • iOS (3)
    • Mac OS X (3)
    • Peripherie (4)
    • Ubuntu (Linux) (5)
    • Windows 10 (41)
    • Windows 11 (2)
    • Windows 7 (99)
    • Windows 8 (36)
    • Windows 8.1 (28)
    • Windows Mobile (2)
    • Windows Vista (64)
    • Windows XP (20)
  • Cloud (12)
    • Microsoft Azure (5)
    • Office 365 (7)
  • Fortbewegung (39)
    • Auto (13)
    • Bahn (13)
    • Beinarbeit (1)
    • Zweirad (12)
  • IT-Nachrichten (34)
  • Leben & Beruf (77)
    • Arbeitszimmer (2)
    • Gedanken (16)
    • Kino (3)
    • Lebensmittel & Essen (4)
    • Lesestoff (3)
    • Podcast (8)
    • Sport (1)
  • Lehren & Lernen (44)
    • Konferenzen (1)
    • Präsentation (1)
    • Zertifizierung (42)
  • Programme (306)
    • Android-Apps (21)
    • Eigene Tools (11)
    • iOS-Apps (1)
    • Office (82)
    • Patchday+Updates (68)
    • Software (141)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (78)
    • AutoIT (1)
    • KiXtart (1)
    • PHP (2)
    • Power Automate (1)
    • Powershell (49)
    • VB.NET (7)
    • VBA (10)
    • VBS (10)
  • Server (138)
    • Citrix XenServer (2)
    • Exchange Server (25)
    • Lync Server (1)
    • System Center (4)
    • Windows Home Server (2)
    • Windows Server (87)
    • Windows Server 2012 (44)
    • Windows Server 2016 (11)
    • Windows Server 2019 (3)
  • Telekommunikation (29)
    • Festnetz (3)
    • Internet (6)
    • Mobilfunk (20)
  • Verkauf & Verlosung (1)
  • Web-Installationen (32)
    • Joomla (4)
    • MediaWiki (9)
    • phpMyAdmin (1)
    • Piwik (4)
    • Wordpress (19)

Copyright © 2023 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme