Skip to content

Daniels Tagesmeldungen

Kleine IT-Episoden, der Diabetes & das wahre Leben

  • Startseite
  • About me…
    • Lebenslauf
    • Weiterbildung
  • Diabetes melitus
    • Diabetes melitus – Definition/Typen
    • Diabetes melitus – Podcasts
    • Diabetes Typ-2 – Erläuterung
    • Medikament – Forxiga (Dapagliflozin)
    • Medikament – Eylea (Aflibercept)
    • Medikament – Lucentis (Ranibizumab )
    • Medikament – Metformin
  • 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, bei dem ich meine Erfahrungen aus der IT & dem Berufsalltag sowie dem Wahnsinn des Lebens mit Höhen und Tiefen. Darunter meine „Erlebnisreise“ zum Planeten „Diabetes mellitus Typ-2“.

Translate:

Follow us

Kategorien

  • Allgemein (1)
  • Client (234)
    • Android (7)
    • Fedora (Linux) (5)
    • iOS (5)
    • Mac OS X (5)
    • Peripherie (5)
    • Ubuntu (Linux) (8)
    • Windows 10 (59)
    • Windows 11 (20)
    • Windows 7 (100)
    • Windows 8 (36)
    • Windows 8.1 (28)
    • Windows Mobile (2)
    • Windows Vista (65)
    • Windows XP (21)
  • Cloud (15)
    • Amazon AWS (1)
    • Microsoft Azure (7)
    • Office 365 (9)
  • Fortbewegung (57)
    • Auto (18)
    • Bahn (18)
    • Beinarbeit (6)
    • Flugzeug (4)
    • Zweirad (14)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (199)
    • #t2dhero (50)
    • Arbeitszimmer (28)
    • Audio (20)
    • Film / Kino (7)
    • Gedanken (78)
    • Gesundheit (31)
    • Internet (5)
    • Lebensmittel & Essen (22)
    • Lesestoff (18)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (48)
    • Forschung (1)
    • Konferenzen (3)
    • Präsentation (3)
    • Zertifizierung (42)
  • Programme (322)
    • Android-Apps (27)
    • Eigene Tools (11)
    • iOS-Apps (6)
    • Office (86)
    • Patchday+Updates (73)
    • Software (149)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (90)
    • AutoIT (1)
    • KiXtart (1)
    • PHP (3)
    • Power Automate (1)
    • Powershell (59)
    • VB.NET (8)
    • VBA (10)
    • VBS (10)
  • Server (159)
    • Citrix XenServer (2)
    • Exchange Server (26)
    • Lync Server (1)
    • System Center (4)
    • Ubuntu Server (2)
    • Windows Home Server (2)
    • Windows Server (92)
    • Windows Server 2012 (45)
    • Windows Server 2016 (15)
    • Windows Server 2019 (18)
    • Windows Server 2022 (15)
    • Windows Server 2025 (8)
  • Telekommunikation (38)
    • Festnetz (3)
    • Internet (13)
    • Mobilfunk (23)
  • Verkauf & Verlosung (1)
  • Web-Installationen (36)
    • Joomla (4)
    • Mastodon (1)
    • MediaWiki (9)
    • phpMyAdmin (2)
    • Piwik (4)
    • Wordpress (20)
Mastodon

Copyright © 2025 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme