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-Fehlermeldung von Netzlaufwerken

Posted on 1. Juli 20171. Juli 2017 By Daniel Lensing Keine Kommentare zu Powershell-Fehlermeldung von Netzlaufwerken

Gern meldet sich Powershell mit rot markierten Meldungen in Skripten oder entsprechenden Abläufen. Aber auch wenn einfach nur eine Powershell-Konsole geöffnet wird, kann direkt eine Meldung erscheinen, die wie folgt aussieht:

Attempting to perform the InitializeDefaultDrives operation on the ‘FileSystem’ provider failed.

Dieses liegt meistens an entweder nicht sauber getrennten Netzwerklaufwerken oder Netzwerklaufwerken, die bei der Anmeldung des Benutzers am System, nicht ordnungsgemäß wieder hergestellt werden konnten. Generell ist dieses allerdings keine Einschränkung für das jeweilige Skript, außer es verwendet eines der betroffenen Laufwerke.

Powershell

Zufälliges Ermitteln von AD-Benutzern

Posted on 14. März 201714. März 2017 By Daniel Lensing Keine Kommentare zu Zufälliges Ermitteln von AD-Benutzern

Bei Rollouts oder Erstellung von Test-Gruppen ist es hilfreich einfach eine „willkürliche“ Liste von Benutzern zu nutzen. Um dieses einfach nicht selber entscheiden zu müssen, habe ich eine kleine Powershell-Zeile, die mir dieses abnimmt.

Get-ADUser -Filter * -properties * | where {$_.scriptpath -like “*login*”} | Select-Object -Property samaccountname | Sort-Object{Get-Random} | Select -First 50

Dieses Beispiel habe ich genutzt, um ein veraltetes Loginskript umzustellen. Es werden alle Benutzer ermittelt, die im AD-Objekt noch das definiert Loginskript eingetragen haben. Nach der Auswertung der Benutzeranmeldenamen („samAccountName“) werden diese in eine zufällige Reihenfolge gebracht. Anschließend werden die ersten 50 Benutzer definiert.

Mit dieser Liste kann man entweder über einen Export weiterarbeiten oder auch direkt einen Powershell-Befehl zur Abarbeitung von Anpassungen anhängen.

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

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 (243)
    • Android (8)
    • Fedora (Linux) (5)
    • iOS (6)
    • Mac OS X (6)
    • Peripherie (5)
    • Ubuntu (Linux) (9)
    • Windows 10 (63)
    • Windows 11 (29)
    • 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 (218)
    • #t2dhero (59)
    • Arbeitszimmer (38)
    • Audio (22)
    • Film / Kino (7)
    • Gedanken (81)
    • Gesundheit (38)
    • Internet (7)
    • Lebensmittel & Essen (23)
    • Lesestoff (20)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (50)
    • Forschung (2)
    • Konferenzen (3)
    • Lehre (1)
    • Präsentation (4)
    • Zertifizierung (42)
  • Programme (332)
    • Android-Apps (28)
    • Eigene Tools (13)
    • iOS-Apps (7)
    • Office (88)
    • Patchday+Updates (77)
    • Software (154)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (97)
    • AutoIT (2)
    • KiXtart (2)
    • PHP (3)
    • Power Automate (1)
    • Powershell (66)
    • VB.NET (11)
    • VBA (10)
    • VBS (10)
  • Server (164)
    • 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 (21)
    • Windows Server 2022 (20)
    • Windows Server 2025 (13)
  • 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