Die Ausführungsdauer von PowerShell Code messen

Wenn ihr euren PowerShell Code auf Geschwindigkeit optimieren wollt, dann macht es Sinn Zeiten zu messen. Es gibt mehrere Möglichkeiten um zu messen, wie lange die Ausführung von einem Stück PowerShell Code dauert. 🎬 Ich habe übrigens auch ein Video zu dem Thema erstellt. Möglichkeit 1: Measure-Command Eine einfache Möglichkeit ist das Cmdlet Measure-Command. Es nimmt einen ScriptBlock entgegen, der dann auch ausgeführt wird. Und wir erhalten im Anschluss ein Messergebnis in Form eines TimeSpan Objekts. Ein einfaches Beispiel dafür: ...

2024-03-12 · 4 Minuten · Andreas Dieckmann

PowerShell Profile erklärt (mit Beispielen)

Mit PowerShell Profilen könnt ihr eure PowerShell anpassen. Also zum Beispiel, dass sie so aussieht: Oder ihr könnt einstellen, dass beim Start so ein Splash-Screen angezeigt (winfetch) wird: Oder ihr könnt auch eigene Funktionen und Variablen hinterlegen, sodass diese immer sofort verfügbar sind, wenn ihr die PowerShell startet. ...

2024-03-05 · 9 Minuten · Andreas Dieckmann

PowerShell: Zugriff auf Umgebungsvariablen

Per PowerShell auf Umgebungsvariablen zugreifen - das geht ganz einfach. 🎬 Ich habe übrigens auch ein Video zu dem Thema erstellt. Umgebungsvariable per $Env:-Variable auslesen Die einfachste Möglichkeit ist per $Env:-Variable. Gebt dafür einfach $Env ein, dann einen Doppelpunkt und dann den Namen der Umgebungsvariable von der ihr den Wert auslesen wollt. 1 $Env:username Dadurch wird der Username des aktuell angemeldeten Users ausgegeben. ...

2024-02-28 · 3 Minuten · Andreas Dieckmann

[English] Migrating from 11ty to Hugo

I recently upgraded this website to 11ty v2.0, but I needed more change. Initially I just wanted to create a basic Design with Terminal.css. But then I randomly stumbled over the Hugo Theme Gallery and found some beautiful themes! So I chose to use Hugo Papermod and migrate the Website to Hugo 🤓. Since I don’t really know JavaScript, so it doesn’t matter for me that Hugo uses Go instead. I never used Go as a programming language, but it sounds great. I’ll just ramble a bit now what I did to migrate my blog. ...

2024-02-22 · 7 Minuten · Andreas Dieckmann

PowerShell: Überprüfen ob Admin-Rechte vorhanden sind

Wenn ihr ein PowerShell Skript erstellt habt, was Aktionen ausführen soll, die Adminrechte erfordern, dann könnt ihr das auch per Code überprüfen. Damit könnt ihr sicherstellen, dass euer Skript erfolgreich ausgeführt werden kann. Am einfachsten geht das mit einer Requires-Anweisung. 🎬 Ich habe übrigens auch ein Video zu dem Thema erstellt. Admin-Rechte per Requires Anweisung erfordern 1 #Requires -RunAsAdministrator Diese Zeile kann an eine beliebigen Stelle im PowerShell Code eingefügt werden. Ich würde es immer relativ am Anfang des Skriptes einbauen, damit es gut sichtbar ist. Aber die Position spielt technisch gesehen keine Rolle. Also wenn die #Requires Anweisung im Code drin steht, wird das vor der richtigen Ausführung des gesamten restlichen Codes ausgewertet. Und je nachdem ob Adminrechte vorhanden sind, oder nicht - wird ein Fehler ausgegeben. ...

2024-02-20 · 4 Minuten · Andreas Dieckmann

PowerShell: Übersetzte Security Identifier Namen herausfinden

Security Identifiers sind dazu da, um bestimmte Security Prinzipale oder Gruppen unter Windows zu identifizieren. Leider sind die dazugehörigen Namen lokalisiert, also sind zum Beispiel in einem deutschsprachigen System anders als in einem englischsprachigen System. Beispielsweise heißt die eingebaute Administratorgruppe auf Englisch BUILTIN\ADMINISTRATORS und auf Deutsch VORDEFINIERT\Administratoren. Oder das Englische NT AUTHORITY\SYSTEM wird an einem Deutschen System zu NT-AUTORITÄT\SYSTEM. Das finde ich richtig abgefahren! Da wird auf einmal ein Leerzeichen durch ein Bindestrich ersetzt. Naja was soll’s. ...

2024-01-17 · 2 Minuten · Andreas Dieckmann

Die unterschiedlichen Klammern in der PowerShell

Wann ist welche Klammer die Richtige in der PowerShell? # Verschiedene Klammern in der PowerShell () {} [] Die Klammern haben unterschiedliche Einsatzzwecke. Die Größer-als < und Kleiner-als > Zeichen würde ich übrigens nicht zu den Klammern zählen. Für alle echten Klammern gilt: Wenn ihr eine Klammer geöffnet habt, müsst ihr sie auch wieder schließen. Runde Klammern ( ) Mit runden Klammern wird in der PowerShell ein Ausdruck bzw. ein Befehl umfasst, bzw. die Parameter für .NET Methoden umschlossen. ...

2023-11-28 · 9 Minuten · Andreas Dieckmann

[English] OneDrive for Business - Delegation to Manager after employee leaves company

Normally when a user leaves the Company their OneDrive for Business site gets automatically delegated to their manager. That means the manager gets SharePoint Site Collection admin rights to the OneDrive site of their subordinate. Checking and Changing Access Delegation ⚠️ Access Delegation is enabled as default. The setting can be found and changed here: Go to More features in the new SharePoint admin center, and sign in with an account that has admin permissions for your organization. […] Under User profiles, select Open. Under My Site Settings, select Setup My Sites. Next to My Site Cleanup, make sure Enable access delegation is selected. (Source: https://learn.microsoft.com/en-us/sharepoint/retention-and-deletion#configure-automatic-access-delegation) ...

2023-09-25 · 8 Minuten · Andreas Dieckmann

PowerShell ConstrainedLanguage Mode per Gruppenrichtlinie einstellen

PowerShell Language Modes sind eine Möglichkeit die Funktionalität der PowerShell einzuschränken, um die Sicherheit eines Systems zu erhöhen. Das ist natürlich nur ein kleiner Baustein in einer größeren Sicherheitsstrategie, also das alleine ist noch kein ausreichender Schutz für ein System. Gleichzeitig ist das auch ein zweischneidiges Schwert: Vorteil: Wir entziehen potenziellen Angreifern ein mächtiges Werkzeug. Nachteil: Wir selbst als Administratoren können die PowerShell an einem System auch nicht mehr richtig nutzen. ...

2023-05-20 · 6 Minuten · Andreas Dieckmann

[English] Exchange EAC stopped working after decomissioning all Mailbox Databases

I had this weird issue with a Exchange Server environment: The company had an Exchange Server 2016 DAG and migrated all User Mailboxes to Exchange Online. I then installed a fresh Exchange Server 2019 for Recipient Management and SMTP-Relay. To use the Exchange Server 2019 Hybrid License, I did not create a Mailbox Database. I removed all remaining System Mailboxes and Arbitration Mailboxes from the Exchange 2016 Servers. I decomissioned the DAG and uninstalled Exchange from the old Servers. ...

2023-05-16 · 3 Minuten · Andreas Dieckmann