Screenshots per PowerShell erstellen
Wenn ihr Screenshots per PowerShell erstellen wollt, dann müsst ihr .NET verwenden. Den passenden Code dazu zeige ich im folgenden. Aber falls ihr das einfacher machen möchtet, könnt ihr auch mein Screenshot PowerShell Modul verwenden (mehr Infos dazu weiter unten). Ich demonstriere die nachfolgenden Möglichkeiten auch in diesem Video hier auf YouTube. Warum eigentlich? Natürlich können Screenshots einfach manuell erstellt werden (z.B. per Screenshot-Taste auf der Tastatur) und es gibt auch gute Tools für die Bearbeitung von Screenshots (z.B. Greenshot). Aber falls ihr etwas mit PowerShell automatisiert und dabei Screenshots automatisch erstellen könnt, kann das hilfreich z.B. zu Dokumentationszwecken sein. ...

Herausfinden welcher Prozess auf einem bestimmten Port lauscht (PowerShell)
Wenn ihr herausfinden möchtet, welcher Prozess auf einem bestimmten TCP/UDP Port lauscht dann könnt ihr unter Windows dafür auch PowerShell verwenden. Ich finde das angenehmer, als die Ausgabe von netstat auszuwerten. Ich demonstriere die nachfolgenden Möglichkeiten auch in diesem Video hier auf YouTube. Für TCP: Get-NetTCPConnection Für TCP-Verbindungen gibt es das Cmdlet Get-NetTCPConnection. Es liefert allerdings nur die ID des laufenden Prozesses zurück (Eigenschaft OwningProcess), aber die können wir mit Get-Process auflösen. Manuell würde das so gehen: ...
[English] Unraid: Cannot destroy '<Share Name>': dataset is busy
I recently had an issue on my Unraid server: I wanted to delete a share (“myshare”) via the GUI, but it just did not do it. When I checked the logs, I found the following: 1 2 3 4 5 6 7 Dec 27 21:53:24 tower emhttpd: readlink -e '/mnt/user/myshare' Dec 27 21:53:24 tower emhttpd: /mnt/user/myshare Dec 27 21:53:24 tower emhttpd: shcmd (750): rmdir '/mnt/user/myshare' Dec 27 21:53:24 tower shfs: /usr/sbin/zfs unmount 'cache/myshare' 2>&1 Dec 27 21:53:24 tower shfs: /usr/sbin/zfs destroy 'cache/myshare' 2>&1 Dec 27 21:53:24 tower shfs: cannot destroy 'cache/myshare': dataset is busy Dec 27 21:53:24 tower shfs: /usr/sbin/zfs mount 'cache/myshare' 2>&1 So apparently the dataset is busy 😐… Weird, because it’s completely empty and no Containers or VMs are supposed to use the share. The hints that I found on the Internet did not help me: ...
Führende Nullen per PowerShell hinzufügen
Es gibt viele verschiedene Wege um führende Nullen zu einer Zahl in PowerShell hinzuzufügen. Wobei eigentlich können Zahlen (Objekttyp: [int]) keine führenden Nullen haben, deshalb erzeugen wir eigentlich einen Text (Objekttyp: [string]), der die Zahl enthält. In den folgenden Beispielen ergänze ich die Zahl 42 jeweils auf vier Stellen (= 0042). Ihr könnt aber die Länge des “Paddings” natürlich anpassen :) Ich demonstriere die nachfolgenden Möglichkeiten (plus noch ein paar mehr) auch in diesem Video hier auf YouTube. ...
Active Directory Papierkorb aktivieren, konfigurieren und Objekte wiederherstellen
Wenn ihr Active Directory Domain Services verwendet, solltet ihr unbedingt prüfen, ob der AD-Papierkorb bei euch aktiviert ist. Was ist der AD-Papierkorb? Der AD-Papierkorb funktioniert ähnlich wie ein Papierkorb im Dateisystem: Gelöschte Objekte (Benutzer, Gruppen etc.) landen zunächst im Papierkorb und können einfach wiederhergestellt werden. Das ist besonders praktisch bei: versehentlichen Löschungen absichtlichen Löschungen, die rückgängig gemacht werden sollen, fehlendem AD-Backup (ersetzt natürlich kein Backup!) Der AD-Papierkorb wurde mit Windows Server 2008 R2 eingeführt. Voraussetzung: Euer AD-Forest muss mindestens den Windows Server 2008 R2 Functional Level haben. ...
E-Mails per PowerShell und Microsoft Graph verschicken
E-Mails via Powershell und Microsoft Graph API zu verschicken, ist leider nicht so einfach wie mit dem klassischen Send-MailMessage Cmdlet. Zu dem klassischen Weg hatte ich ja auch kürzlich einen Blog-Post veröffentlicht. Trotzdem gibt es einige Gründe, die für den Versand per Microsoft Graph sprechen. Im Oktober 2025 wird voraussichtlich die Plaintext Authentifizierung (“Basic Authentifizierung”) für den SMTP-Versand bei Exchange Online abgeschaltet. Falls also Exchange Online euer einziges E-Mail-System ist, aber ihr automatisiert E-Mails verschicken wollt, dann ist MS Graph die richtige Wahl. Alternativ könntet ihr natürlich auch ein zusätzliches E-Mail-System anschaffen (anmieten oder selbst betreiben). ...
E-Mails per PowerShell verschicken mit Send-MailMessage
Es ist recht einfach E-Mails per PowerShell zu verschicken. Dafür gibt es das mitgelieferte Cmdlet Send-MailMessage, welches allerdings mittlerweile von Microsoft als veraltet bezeichnet wird: ⚠️ Warnung Das Cmdlet Send-MailMessage ist veraltet. Dieses Cmdlet garantiert keine sicheren Verbindungen mit SMTP-Servern. Es ist zwar kein sofortiger Ersatz in PowerShell verfügbar, es wird jedoch empfohlen, Send-MailMessage nicht zu verwenden. Weitere Informationen finden Sie unter Plattformkompatibilitätshinweis DE0005. Quelle: https://learn.microsoft.com/de-de/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-7.5 Für einige Szenarien ist die Verwendung von Send-MailMessage aber meiner Meinung nach trotzdem okay. Wenn ihr zum Beispiel einen eigenen SMTP-Server (z.B. Microsoft Exchange Server) betreibt oder angemietet habt (z.B. bei jedem beliebigen Webhoster), dann gibt es dort in der Regel gar keine Unterstützung für modernere Authentifizierungsmethoden. Ihr könnt einen solchen SMTP-Server natürlich auch zusätzlich zu einer Exchange Online Umgebung betreiben. Tendenziell würde ich empfehlen für solche automatischen E-Mails eher eine Subdomain (z.B. “reports.demotenant.de” statt einfach nur “demotenant.de”) oder eine separate Domain zu verwenden, aber das ist natürlich kein Muss. ...
Entra Connect: Soft Match und Hard Match
In diesem Post geht es darum, wie Entra Connect Identitäten zusammenführt und dann im Betrieb weiter trackt. Bei einigen Punkten könnte man bestimmt noch weiter in die Tiefe einsteigen, aber das hier sind meiner Meinung nach die wichtigsten Grundlagen. Alles was ich jetzt hier in dem Post beschreibe bezieht sich in der Regel sowohl auf das klassische Entra Connect Sync, als auch auf das modernere Entra Cloud Sync. Falls doch etwas nur für das eine oder andere Sync Tool gilt, dann weise ich explizit darauf hin. Ansonsten werde ich aber der Einfachheit halber im Folgenden einfach Entra Connect schreiben, wenn ich beides meine. ...
[English] Retrieve infos about Active Directory Based Activation via PowerShell
If you quickly want to retrieve infos about Active Directory Based Activation (ADBA) in your domain, you can use this PowerShell One-liner: 1 Get-ADDomain | %{Get-ADObject -SearchBase "CN=Activation Objects,CN=Microsoft SPP,CN=Services,CN=Configuration,$($_.DistinguishedName)" -LDAPFilter "(objectclass=msspp-activationobject)" -Properties * -ErrorAction SilentlyContinue | fl displayName,DistinguishedName,Name,msspp-csvlkpartialproductkey } I haven’t tested it in a multi-domain environment, but I think it should work. Explanation The code uses aliases, which are not great in scripts, but neat in One-Liners. It uses Get-ADDomain to determine the Distinguished Name for the Domain. This should make the code portable. ...
PowerShell: Schleifen gezielt abbrechen/überspringen
Normalerweise wird eine Schleife in PowerShell solange ausgeführt, wie es durch den außen stehenden Bedingungsblock definiert ist. Die folgende while-Schleife wird zum Beispiel so lange ausgeführt, wie die Variable namens $Variable kleiner oder gleich 10 ist. 1 2 3 while($Variable -le 10) { # irgendwas } Es ist aber auch möglich gezielt eine komplette Schleife vorzeitig abzubrechen oder einen einzelnen Schleifendurchgang abzubrechen. Und zwar auch, wenn ihr mehrere Schleifen ineinander verschachtelt habt. ...