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

Kategorie: Powershell

Powershell – FensterĂĽberschrift editieren

Posted on 2. Januar 20172. Januar 2017 By Daniel Lensing Keine Kommentare zu Powershell – FensterĂĽberschrift editieren

Bei einigen Skripten oder bei mehreren Powershell-Fenstern kann es sinnvoll sein, den entsprechende Programmaufruf mit einer eigenen Überschrift zu versehen.
Dieses ist mit dem folgenden Aufruf möglich:

$host.ui.RawUI.WindowTitle = („Test-Ăśberschrift“)

Auch in der Taskleiste ist die definierte Ăśberschrift zu lesen, so dass es einfacher ist die Powershell-Fenster zu ermitteln.

Powershell

Win10: Windows Update-Logfile generieren

Posted on 26. August 201626. August 2016 By Daniel Lensing Keine Kommentare zu Win10: Windows Update-Logfile generieren

Seit Windows 10 wird das Logfile fĂĽr die Funktionalität des Windows Update nicht mehr direkt in einer lesbaren Form zur VerfĂĽgung gestellt. Um Ressourcen zu sparen wird „Event Tracing for Windows“ (ETW) eingesetzt, welches Daten als etl-Dateien auf dem System ablegt.

Entsprechend muss mit dem folgenden Powershell-Befehl unter Nutzung von administrativen Berechtigungen die Datei generiert werden.

Get-WindowsUpdateLog

Es wird automatisch die WindowsLog-Datei auf dem Desktop des ausfĂĽhrenden Benutzers gespeichert.

In der Datei befinden sich dann noch Zeilen, welche bereinigt werden können, da diese nicht benötigt werden:

(Get-Content "$env:USERPROFILE\Desktop\WindowsUpdate.log") -notmatch "1601.01.01" | Out-File -Encoding ASCII "$env:USERPROFILE\Desktop\WinUpdate.log"
Remove-Item "$env:USERPROFILE\Desktop\WindowsUpdate.log"

Weitere Informationen: hier

Powershell, Windows 10, Windows Server 2016

Powershell: Druckertreiber auf „packageaware“ prĂĽfen

Posted on 1. August 20161. August 2016 By Daniel Lensing Keine Kommentare zu Powershell: Druckertreiber auf „packageaware“ prĂĽfen

Aufgrund der Anpassung des Microsoft-Updates MS16-087 ist es fĂĽr eine erfolgreiche Installation ohne Benutzer-Interaktion ebenfalls erforderlich, dass der Druckertreiber als „ispackageaware“ gekennzeichnet ist.

Dieses ist allerdings nicht bei jedem Hersteller gegeben und sollte im Rahmen der Analyse zum benannten Patch geprĂĽft werden. Dieses ist mit dem folgenden Powershell-Befehl sehr einfach:

Get-PrinterDriver * -ComputerName "Printserver" | Where-Object {$_.PrinterEnvironment -eq "Windows x64"}| select-object provider, name, ispackageaware

Dieser funktioniert ab Windows 8 btw. Windows Server 2012 und höher. Aufgrund der Remoteabfrage kann dieser Befehl aber auch auch ältere Windows-Systeme abfragen, wenn das aufragenden System die entsprechende Windows-Version besitzt. Des Weiteren werden nur Druckertreiber für Windows 64-Bit-Versionen ermittelt, so dass wenn Treiber für des Typs V3 für beide Bit-Systeme installiert wurden, nur einer ausgewertet wird.

Was aber bedeutet „packageaware“?
Die Treiber mĂĽssen alle erforderlichen Dateien in den zentrale Treibersammlung einbringen und mĂĽssen digital signiert sein. Entsprechend werden diese auch ohne administrative Berechtigung auf einem Client im Anwender-Kontext installiert.

Powershell, Windows Server, Windows Server 2012

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

Powershell: Netzwerkport-Erreichbarkeit prĂĽfen

Posted on 29. Juni 201630. Juni 2016 By Daniel Lensing Keine Kommentare zu Powershell: Netzwerkport-Erreichbarkeit prĂĽfen

Manchmal braucht man einfach mal eine schnelle Prüfung eines Ports um zum Beispiel die Funktionsweise von Applikationen oder Hardware zu testen. Entsprechend habe ich mir ein kleines Skript (Chkprt.ps1) erstellt, um diese Funktionalität einfach abzubilden.

$ipaddress=$args[0]
$portaddress=$args[1]
 
$Port = New-Object System.Net.Sockets.TCPClient($ipaddress,$portaddress);
catch {}
if ($port -eq $Null) {
echo " Port $portadress an $ipaddress ist erreichbar ";
} else {
echo " Port $portadress an $ipaddress ist NICHT erreichbar "; 
$port = $Null }

Der Aufruf sieht fĂĽr einen Drucker dann als Beispiel dann wie folgt aus:

.\chkprt.ps1 192.168.2.3 9100
Powershell

Powershell: AD-Gruppenmitglieder exportieren

Posted on 1. März 201619. November 2020 By Daniel Lensing Keine Kommentare zu Powershell: AD-Gruppenmitglieder exportieren

Manchmal benötigt man zum Beispiel E-Mail-Adressen, Anschriften, Loginskripte oder weitere Attribute von Mitgliedern einer Active Directory-Gruppe. Dieses ist mit einem unkompliziertem Skript sehr schnell umgesetzt.

import-module activedirectory
$groupname = $args[0]
$Domaincontroller = "dc1.domain.local"
$parameter = 'name', 'mail', 'samaccountname'
 
$Gruppe = Get-ADGroupMember $groupname -server $Domaincontroller | Select distinguishedName
$Gruppe | ForEach { Get-ADUser $_.distinguishedName -server $Domaincontroller -Properties * | Select-object $parameter } | export-csv E:\Reports\$groupname.csv -notypeinformation -encoding UTF8

Entsprechend wird anhand des Gruppennamens eine Datei mit den Attributen aus der Variable „$parameter“ erstellt. Entsprechend können auch mehrere Gruppen als Befehlsblock abgesetzt werden.

Während dieses Skript eher für Massenabfragen erstellt wurde, gibt es einen neuen Artikel mit einer Mini-GUI für Abfragen durch IT-Verantwortliche.

Powershell

Auslesen von Subnetzen aus AD-Sites

Posted on 19. November 201527. Februar 2016 By Daniel Lensing Keine Kommentare zu Auslesen von Subnetzen aus AD-Sites

Für eine Fehleranalyse benötigte ich die eine Auflistung der konfigurierten Subnetze der definierten AD-Sites. Eine manuelle Prüfung war aufgrund mehrerer definierter Sites einfach unpraktisch.

Bei meiner Recherche fand ich das folgende Skript:

$forestInformation = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
foreach($site in $forestInformation.Sites | Sort-Object -property Name) {
Write-Output $site.Name
Write-Output ("-" * ($site.Name).Length)
foreach($subnet in $site.Subnets | Sort-Object) {
Write-Output "`t$subnet"}
Write-Output ""
}

Diesen habe ich aus folgender Quelle: hier

Powershell, Windows Server 2012

Seitennummerierung der Beiträge

Vorherige 1 … 6 7 8 … 10 Nächste

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 (239)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (25)
    • 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 (58)
    • Auto (18)
    • Bahn (19)
    • Beinarbeit (6)
    • Flugzeug (4)
    • Zweirad (14)
  • IT-Nachrichten (37)
  • Leben Beruf und Gesundheit (216)
    • #t2dhero (58)
    • Arbeitszimmer (38)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (38)
    • Internet (7)
    • Lebensmittel & Essen (22)
    • Lesestoff (19)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (49)
    • Forschung (1)
    • Konferenzen (3)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (328)
    • Android-Apps (28)
    • Eigene Tools (12)
    • iOS-Apps (7)
    • Office (87)
    • Patchday+Updates (75)
    • Software (151)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (95)
    • AutoIT (1)
    • KiXtart (1)
    • PHP (3)
    • Power Automate (1)
    • Powershell (64)
    • VB.NET (10)
    • VBA (10)
    • VBS (10)
  • Server (161)
    • Citrix XenServer (2)
    • Exchange Server (27)
    • 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 (19)
    • Windows Server 2022 (17)
    • Windows Server 2025 (10)
  • Telekommunikation (38)
    • Festnetz (3)
    • Internet (13)
    • Mobilfunk (23)
  • Verkauf & Verlosung (1)
  • Web-Installationen (37)
    • Joomla (4)
    • Mastodon (1)
    • MediaWiki (10)
    • phpMyAdmin (2)
    • Piwik (4)
    • Wordpress (20)
Mastodon

Copyright © 2025 Daniels Tagesmeldungen.

Powered by PressBook WordPress theme