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

Rufnummern fĂŒr Medienproduktionen (Drama Numbers)

Posted on 17. Juni 202517. Juni 2025 By Daniel Lensing Keine Kommentare zu Rufnummern fĂŒr Medienproduktionen (Drama Numbers)

In Filmen, Serien und Werbespots begegnen uns hĂ€ufig Telefonnummern. Doch anstatt echte Rufnummern zu verwenden, die potenziell echte Menschen stören könnten, greifen Medienproduktionen auf spezielle „Drama Numbers“ zurĂŒck – fiktive Telefonnummern, die sicher fĂŒr Filmzwecke genutzt werden können.

Was sind Drama Numbers?

Drama Numbers sind Telefonnummern, die speziell fĂŒr den Einsatz in Film- und Fernsehwelt reserviert sind. Sie ermöglichen es Produzenten, realistische Szenarien darzustellen, ohne versehentlich eine echte Nummer zu verwenden, die Zuschauer spĂ€ter ausprobieren könnten. HĂ€ufig sieht man solche Nummern in Filmen oder Serien, wenn eine Figur telefoniert oder eine Telefonnummer auf einem Bildschirm angezeigt wird.

In verschiedenen LĂ€ndern gibt es unterschiedliche Standards fĂŒr Drama Numbers. In den USA zum Beispiel verwenden Filme und Serien traditionell Telefonnummern mit der Vorwahl 555, da dieser Bereich fĂŒr fiktive Nummern reserviert ist

Warum gibt es Drama Numbers?

Die EinfĂŒhrung von Drama Numbers war eine direkte Reaktion auf Probleme mit echten Telefonnummern in Filmen. FrĂŒher kam es vor, dass echte Nummern zufĂ€llig verwendet wurden, was dazu fĂŒhrte, dass Besitzer dieser Rufnummern zahlreiche unerwĂŒnschte Anrufe erhielten. Um dies zu vermeiden und ProduktionsablĂ€ufe zu vereinfachen, wurden spezielle Rufnummernbereiche reserviert.

Außerdem helfen Drama Numbers dabei, rechtliche Probleme zu vermeiden: Eine echte Nummer könnte unter UmstĂ€nden mit einem Unternehmen oder einer Person verbunden sein, und deren ungewollte ErwĂ€hnung in einem Film könnte zu Beschwerden oder sogar rechtlichen Konsequenzen fĂŒhren.

Rufnummern fĂŒr Medienproduktionen

WĂ€hrend in den USA „555“ als Standard fĂŒr fiktive Nummern etabliert ist, gibt es in Deutschland eigene Regelungen fĂŒr Rufnummern in Medienproduktionen. Die Bundesnetzagentur stellt beispielsweise bestimmte Telefonnummernbereiche bereit, die fĂŒr Werbezwecke oder Filmproduktionen genutzt werden können.

Ein typischer Bereich fĂŒr fiktive deutsche Telefonnummern ist beispielsweise der Bereich (0)170-1234567, der hĂ€ufig in deutschen Filmen und Serien genutzt wird. Medienproduktionen können auf solche reservierten Nummern zugreifen, ohne sich Sorgen um echte TelefonanschlĂŒsse machen zu mĂŒssen. Die entsprechende Liste hat die Bundesnetzagentur veröffentlicht.

Ein internationaler Artikel zum Thema „fictitious telephone number“ enthĂ€lt auch Beispiele fĂŒr zum Beispiel Frankreich, USA sowie Großbritanien.

Warum ist es fĂŒr mich interessant?

FĂŒr PrĂ€sentationen oder auch bei Programmierungen mit fiktiven personenbezogenen Daten können diese Numern genauso verwendet werden. Damit können Handouts und Dokumentationen ohne Probleme weitergegeben werden.

Arbeitszimmer, Eigene Tools, Leben Beruf und Gesundheit, Lehren & Lernen, Powershell, PrÀsentation, Programme, Programmierung, VB.NET

Global Standard Numeric Date Format – ISO 8601

Posted on 12. Juni 202512. Juni 2025 By Daniel Lensing Keine Kommentare zu Global Standard Numeric Date Format – ISO 8601

Datumsschreibweisen können verwirrend sein – je nach Land variieren die Formate stark. Um MissverstĂ€ndnisse zu vermeiden, wurde das Global Standard Numeric Date Format (GSNDF) vorgeschlagen, ein universelles, numerisches Datumsformat fĂŒr die internationale Kommunikation und Standardisierung.

Was ist die Definition?

Das GSNDF setzt auf eine logische, einheitliche Struktur: Jahr-Monat-Tag (YYYY-MM-DD). Diese Reihenfolge folgt dem Prinzip der abnehmenden GrĂ¶ĂŸenordnung und ist standardisiert gemĂ€ĂŸ ISO 8601, einer internationalen Norm fĂŒr Datums- und Zeitangaben.

Vorteile des Formats

  • Vermeidung von MissverstĂ€ndnissen
    Durch die einheitliche Reihenfolge werden Fehler vermieden. Beispielsweise kann „03/04/2025“ den 3. April oder den 4. MĂ€rz bedeuten, was zu Verwirrung fĂŒhren kann. Die Schreibweise 2025-04-03 ist hingegen klar verstĂ€ndlich.
  • Technische Effizienz
    Das GSNDF ist hervorragend fĂŒr Computersysteme geeignet. Die Sortierung erfolgt automatisch chronologisch, da Zahlen von links nach rechts verglichen werden.
  • Internationale Einheitlichkeit
    GeschÀftliche Dokumente, wissenschaftliche Veröffentlichungen und öffentliche Verwaltung profitieren von einem einheitlichen Datumsformat.
  • KompatibilitĂ€t mit Zeitformaten
    Das Format kann nahtlos mit Zeitangaben kombiniert werden, beispielsweise:
    2025-06-08T18:35:00Z (ISO 8601 mit UTC-Zeitstempel)

Herausforderungen bei der EinfĂŒhrung

  • Gewohnheiten und kulturelle PrĂ€ferenzen
    Menschen sind an ihre regionalen Datumsformate gewöhnt. Die Umstellung auf YYYY-MM-DD erfordert Anpassung, besonders im tÀglichen Gebrauch.
  • KompatibilitĂ€t mit bestehenden Systemen
    Viele Softwareprodukte und Dokumente sind auf lokale Formate ausgerichtet. Eine Anpassung kann technische Änderungen und Übergangsphasen erfordern.
  • Regionale Vorschriften und Standards
    In offiziellen Dokumenten und VertrÀgen wird oft das nationale Format vorgeschrieben. Die Anpassung globaler und nationaler Regularien kann ein langwieriger Prozess sein.
  • Fehlende einheitliche EinfĂŒhrung
    Ohne eine zentrale Organisation oder behördliche Verpflichtung bleibt das Format optional. Dadurch kann es weiterhin zu unterschiedlichen Schreibweisen und MissverstÀndnissen kommen.

Fazit

Das Global Standard Numeric Date Format (YYYY-MM-DD) bietet Klarheit, Effizienz und internationale VerstÀndlichkeit. Trotz Herausforderungen wird es zunehmend in internationalen und technischen Kontexten verwendet und könnte langfristig als Standard etabliert werden.

Arbeitszimmer, Powershell, Programme, Programmierung, VB.NET

Powershell: KeePass-Nutzung in Skripten

Posted on 20. Mai 202519. Mai 2025 By Daniel Lensing Keine Kommentare zu Powershell: KeePass-Nutzung in Skripten

Die Verwaltung von Passwörtern ist in der modernen IT-Landschaft ein zentrales Thema. In diesem Artikel gehe ich darauf ein, wie man mithilfe von PowerShell und KeePass-Passwortdatenbanken einen sicheren Zugriff auf sensible Informationen ermöglicht. Dabei werden zwei AnsĂ€tze vorgestellt: Ein klassisches Skript, das direkt die KeePassLib.dll verwendet, sowie eine Methode, die das PowerShell-Modul Microsoft.PowerShell.SecretManagement in Kombination mit einem KeePass-Vault-Adapter nutzt. Außerdem zeige ich, wie man das Masterkennwort schĂŒtzt, sodass es nicht als Klartext im Skript sichtbar ist.

1. Das klassische PowerShell-Skript mit KeePassLib.dll

Ein hĂ€ufiger Ansatz besteht darin, ein PowerShell-Skript zu erstellen, das direkt auf die KeePassLib.dll zugreift. Diese Bibliothek, die ĂŒblicherweise bei der Installation von KeePass verfĂŒgbar ist, stellt alle nötigen Klassen und Methoden bereit, um auf die Datenbank zuzugreifen und EintrĂ€ge auszulesen.

Beispielskript:

<#
Dieses Skript öffnet eine KeePass-Datenbank (.kdbx) und extrahiert das Passwort eines
spezifizierten Eintrags. Bitte passe anschließend Pfade, den Eintragstitel und das Masterkennwort 
an deine Gegebenheiten an.

Voraussetzungen:
- KeePassLib.dll (normalerweise ĂŒber die KeePass-Installation enthalten)
- Eine funktionierende KeePass-Datenbank (.kdbx) und das zugehörige Masterkennwort

Achtung: Sensible Daten (wie Masterkennwort) sollten nicht im Klartext hinterlegt werden.
#>

# Pfad zur KeePassLib.dll (anpassen, falls erforderlich)
$libPath = "C:\Program Files (x86)\KeePass Password Safe 2\KeePassLib.dll"
if (-Not (Test-Path $libPath)) {
    Write-Error "Die KeePassLib.dll wurde unter '$libPath' nicht gefunden."
    exit 1
}
Add-Type -Path $libPath

# Datenbankpfad und Zugangsdaten (bitte an deine Umgebung anpassen)
$dbPath = "C:\Path\Zu\Deiner\Datenbank.kdbx"   # Pfad zur KeePass-Datenbank
$masterPassword = "DeinMasterPasswort"          # Masterkennwort (nicht im Klartext speichern!)

# Erstelle einen CompositeKey und fĂŒge das Masterkennwort als Benutzer-SchlĂŒssel hinzu
$compositeKey = New-Object KeePassLib.Keys.CompositeKey
$passwordKey = New-Object KeePassLib.Keys.KcpPassword
$passwordKey.Password = $masterPassword
$compositeKey.AddUserKey($passwordKey)

# Öffne und lade die KeePass-Datenbank
$db = New-Object KeePassLib.PwDatabase
try {
    $db.Open($dbPath, $compositeKey, [System.IO.FileAccess]::Read)
} catch {
    Write-Error "Fehler beim Öffnen der Datenbank: $_"
    exit 1
}

# Suche nach einem Eintrag anhand seines Titels (ein Beispielwert, bitte anpassen)
$entryTitle = "MeinEintrag"   # Titel des gewĂŒnschten Eintrags
$entry = $db.RootGroup.FindEntries({$_.Strings.ReadSafe("Title") -eq $entryTitle}, $true) | Select-Object -First 1

if ($null -eq $entry) {
    Write-Output "Kein Eintrag mit dem Titel '$entryTitle' gefunden."
} else {
    # Extrahiere das Passwort des gefundenen Eintrags
    $password = $entry.Strings.ReadSafe("Password")
    Write-Output "Das Passwort fĂŒr den Eintrag '$entryTitle' lautet: $password"

    # Hier kannst du das Passwort weiterverarbeiten, z. B. einem anderen Skript ĂŒbergeben oder in Variablen speichern.
}

# Schließe die Datenbank, um Ressourcen freizugeben
$db.Close()

ErklÀrung:

  • Das Skript lĂ€dt zunĂ€chst die KeePassLib.dll und ĂŒberprĂŒft, ob der Pfad korrekt ist.
  • Anschließend wird ein CompositeKey erstellt, dem das Masterkennwort als SchlĂŒssel hinzugefĂŒgt wird.
  • Mithilfe der gewĂ€hlten API öffnet man die KeePass-Datenbank im Lesemodus und sucht nach einem Eintrag anhand des Titels.
  • Wird der Eintrag gefunden, wird das Passwort extrahiert und ausgegeben, sodass es in weiteren Prozessen genutzt werden kann.

Dieser Ansatz bietet eine direkte und flexible Möglichkeit, mit KeePass-Datenbanken zu arbeiten, setzt aber voraus, dass sensible Daten (etwa das Masterkennwort) sicher gehandhabt werden.

2. Nutzung von Microsoft.PowerShell.SecretManagement

Ein moderner und oft sichererer Ansatz ist die Verwendung des Moduls Microsoft.PowerShell.SecretManagement. Dieser Vault-Ansatz bietet eine einheitliche API zur Verwaltung von Geheimnissen aus verschiedensten Quellen – KeePass gehört dabei mit einem dedizierten Adapter dazu.

Der erste Schritt besteht darin, die Module zu installieren:

Install-Module Microsoft.PowerShell.SecretManagement -Scope CurrentUser
Install-Module KeePassSecretManagement -Scope CurrentUser

Nach erfolgreicher Installation registrierst du deinen KeePass-Vault in der SecretManagement-Umgebung:

Register-SecretVault -Name "KeePassVault" -ModuleName KeePassSecretManagement -DefaultVault `
    -VaultParameters @{ 
        DatabasePath = "C:\Path\Zu\Deiner\Datenbank.kdbx"; 
        MasterPassword = "DeinMasterPasswort" 
    }

Sobald der Vault registriert ist, kannst du ĂŒber den Befehl Get-Secret darauf zugreifen:

Get-Secret -Name "MeinEintrag" -Vault "KeePassVault"

Vorteile:

  • Einheitliche Schnittstelle: Egal, ob du Azure Key Vault, SecretStore oder KeePass einsetzt – die API bleibt gleich.
  • Verbesserte Sicherheit: Der Vault-Adapter abstrahiert die direkte Handhabung von Kennwörtern und ermöglicht damit einen saubereren Zugang.
  • FlexibilitĂ€t und Erweiterbarkeit: Weitere Vaults können problemlos integriert werden, was besonders in grĂ¶ĂŸeren Automatisierungsszenarien nĂŒtzlich ist.

3. Schutz des Masterkennworts – So vermeidest du Klartext im Skript

Ein hĂ€ufiges Sicherheitsrisiko bei Skripten ist die Hardcodierung von Passwörtern. Es gibt einige Best Practices, um das Masterkennwort zu schĂŒtzen:

3.1. Eingabeaufforderung zur Laufzeit mit SecureString

Statt das Kennwort im Skript zu speichern, forderst du den Benutzer zur Laufzeit zur Eingabe auf. Dies erfolgt mit dem Parameter -AsSecureString:

$secureMasterPassword = Read-Host "Bitte gib dein Masterkennwort ein" -AsSecureString

Falls ein normaler String benötigt wird, kann der SecureString konvertiert werden:

$unsecureMasterPassword = [Runtime.InteropServices.Marshal]::PtrToStringAuto(
    [Runtime.InteropServices.Marshal]::SecureStringToBSTR($secureMasterPassword)
)

3.2. Nutzung von SecretManagement/SecretStore

Neben der direkten Eingabe kannst du das Kennwort auch zentral ĂŒber ein Vault-Modul speichern. So greifst du spĂ€ter sicher darauf zu, ohne es im Skript zu hinterlegen:

Register-SecretVault -Name "KeePassVault" -ModuleName KeePassSecretManagement -DefaultVault `
    -VaultParameters @{ 
        DatabasePath   = "C:\Path\Zu\Deiner\Datenbank.kdbx"; 
        MasterPassword = (Get-Secret -Name "MasterKennwort" -Vault "SecretStore")
    }

3.3. VerschlĂŒsselte Konfigurationsdatei

Eine weitere Möglichkeit ist, das Masterkennwort in einer verschlĂŒsselten Datei abzulegen. Dabei wird der SecureString mit ConvertFrom-SecureString verschlĂŒsselt abgespeichert und bei Bedarf wieder eingelesen:

Speichern:

$secureMasterPassword = Read-Host "Bitte gib dein Masterkennwort ein" -AsSecureString
$secureMasterPassword | ConvertFrom-SecureString | Out-File "C:\Path\zur\secret.config"

Laden:

$encryptedString = Get-Content "C:\Path\zur\secret.config"
$secureMasterPassword = $encryptedString | ConvertTo-SecureString

Diese Methode nutzt die Windows-Datenschutz-API (DPAPI), die sicherstellt, dass die Datei nur mit dem Benutzerkonto, das sie erstellt hat, entschlĂŒsselt werden kann.

Fazit

Die sichere Verwaltung von Passwörtern ist in jeder IT-Umgebung essenziell. Mit PowerShell und KeePass stehen dir zwei leistungsfĂ€hige AnsĂ€tze zur VerfĂŒgung:

  • Der direkte Zugriff ĂŒber die KeePassLib.dll bietet FlexibilitĂ€t und Kontrolle, erfordert aber sorgfĂ€ltigen Umgang mit sensiblen Daten.
  • Die Verwendung des Microsoft.PowerShell.SecretManagement-Moduls in Kombination mit einem KeePass-Vault-Adapter sorgt fĂŒr eine einheitliche, moderne und oft sicherere Verwaltung von Geheimnissen.

Besonders wichtig ist es, das Masterkennwort nicht im Klartext im Skript zu hinterlegen, sondern es entweder zur Laufzeit einzugeben, zentral in einem sicheren Vault zu speichern oder in einer verschlĂŒsselten Datei abzulegen. Dadurch minimierst du das Risiko eines unbefugten Zugriffs und stellst sicher, dass deine Passwörter geschĂŒtzt bleiben.

Client, Powershell, Programmierung, Server, Windows 10, Windows 11, Windows Server 2019, Windows Server 2022, Windows Server 2025

Powershell: Ist ein Kennwort bei „Have I Been Pwned“ bekannt?

Posted on 17. Mai 202517. Mai 2025 By Daniel Lensing Keine Kommentare zu Powershell: Ist ein Kennwort bei „Have I Been Pwned“ bekannt?

In der heutigen digitalen Welt ist die Sicherheit von Passwörtern wichtiger denn je. Datenlecks und PasswortdiebstĂ€hle sind an der Tagesordnung, und Millionen von Zugangsdaten gelangen regelmĂ€ĂŸig in die HĂ€nde von Cyberkriminellen. Ein Ă€ußerst nĂŒtzliches Tool zur ÜberprĂŒfung der Sicherheit von Passwörtern ist die API „api.pwnedpasswords.com“, die von Have I Been Pwned (HIBP) bereitgestellt wird.

Wie funktioniert die API?

Die API verwendet das k-AnonymitĂ€tsprinzip, um sicherzustellen, dass das zu prĂŒfende Passwort nicht vollstĂ€ndig offengelegt wird. Der Prozess sieht folgendermaßen aus:

  1. Der Benutzer oder die Anwendung hashen das zu ĂŒberprĂŒfende Passwort mit SHA-1.
  2. Die ersten 5 Zeichen des Hashs werden an die API gesendet.
  3. Die API antwortet mit einer Liste aller Hashes, die mit diesen ersten 5 Zeichen beginnen und in ihrer Datenbank gefunden wurden.
  4. Die Anwendung vergleicht den vollstĂ€ndigen Hash des geprĂŒften Passworts mit den zurĂŒckgegebenen Hashes.
  5. Falls eine Übereinstimmung gefunden wird, bedeutet dies, dass das Passwort kompromittiert ist und nicht verwendet werden sollte.

Dieses Verfahren stellt sicher, dass ein vollstĂ€ndiger Passwort-Hash niemals ĂŒber das Internet ĂŒbertragen wird, wodurch das Risiko minimiert wird, dass Angreifer sensible Informationen abfangen können.

Wie spreche ich die API per Powershell auf?

Ich habe den Abruf in eine Funktion geschrieben. Dieses hat fĂŒr mich den Vorteil, dass ich den dann notwendigen Aufruf an mehrern Stellen in Programmierungen verwendne kann.

function Test-PwnedPassword {
    param (
        [string]$Password
    )

    # Passwort hashen (SHA-1)
    $sha1 = New-Object System.Security.Cryptography.SHA1Managed
    $hashBytes = $sha1.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($Password))
    $hashString = [BitConverter]::ToString($hashBytes) -replace '-',''
    
    # Ersten fĂŒnf Zeichen extrahieren
    $prefix = $hashString.Substring(0, 5)
    
    # API-Abfrage
    $url = "https://api.pwnedpasswords.com/range/$prefix"
    try {
        $response = Invoke-WebRequest -Uri $url -UseBasicParsing
        $hashes = $response.Content -split "`n"

        # PrĂŒfen, ob das vollstĂ€ndige Hash-Suffix in der Liste ist
        foreach ($line in $hashes) {
            $parts = $line -split ":"
            if ($hashString.Substring(5) -eq $parts[0]) {
                Write-Output "Das Passwort wurde bereits $($parts[1]) Mal gefunden!"
                return
            }
        }
        Write-Output "Das Passwort wurde nicht gefunden."
    }
    catch {
        Write-Output "Fehler bei der API-Anfrage: $_"
    }
}

FĂŒr den Test des Skriptes kann folgender Test-Aufruf verwendet werden.

$passwort = Read-Host „Geben Sie Ihr Passwort ein“
Test-PwnedPassword -Password $passwort

Client, Powershell, Programmierung, Server, Windows 10, Windows 11, Windows Server, Windows Server 2019, Windows Server 2022, Windows Server 2025

Powershell: Onpremise-Gruppenmitgliedschaften nach Datum entfernen

Posted on 14. Mai 202512. Mai 2025 By Daniel Lensing Keine Kommentare zu Powershell: Onpremise-Gruppenmitgliedschaften nach Datum entfernen

Ich hatte die Problematik, dass wÀhrend eines Projektes Gruppenberechtigungen datumsgesteuert entfernt werden sollten. WÀhrend des Projektes wurden mehrere Gruppen definiert, bei der Gruppenmitgliedschaften verarbeitet werden sollten.

Entsprechend wurden CSV-Dateien generiert als Grundlage fĂŒr die Verarbeitung:

SamAccountName;ExpiryDate
jdoe;2025-05-12
asmith;2025-06-01

Die Dateien haben als Definition die folgende Struktur:

GroupExpLeave_<Gruppenname>.csv

Mit dem nun folgenden Skript werden die Mitglieder der Gruppen ermittelt und geprĂŒft, ob das Ablaufdatum erreicht ist. Wenn dieses der Fall ist, wird der User aus der Mitgliedschaft entfernt.


# Verzeichnis mit den CSV-Dateien
$csvDirectory = "C:\CSC-Pfad"
$csvFiles = Get-ChildItem -Path $csvDirectory -Filter "GroupExpLeave_*.csv"

# Logdatei mit Tagesdatum
$logDate = Get-Date -Format "yyyy-MM-dd"
$logPath = Join-Path -Path $csvDirectory -ChildPath "GroupExpLeave_$logDate.log"

# Hashtable fĂŒr Gruppenmitgliedschaften
$groupCache = @{}

foreach ($file in $csvFiles) {
    # Gruppennamen aus dem Dateinamen extrahieren
    if ($file.Name -match "^GroupExpLeave_(.+?)\.csv$") {
        $groupName = $matches[1]
        $csvPath = $file.FullName

        # CSV mit Semikolon einlesen
        $members = Import-Csv -Path $csvPath -Delimiter ";"
        $today = Get-Date
        $remainingMembers = @()

        # Gruppenmitglieder einmalig abrufen und cachen
        if (-not $groupCache.ContainsKey($groupName)) {
            try {
                $groupCache[$groupName] = Get-ADGroupMember -Identity $groupName | Select-Object -ExpandProperty SamAccountName
            } catch {
                Add-Content -Path $logPath -Value "[$(Get-Date)] Error Requesting GroupMembers $groupName: $_"
                continue
            }
        }

        $cachedMembers = $groupCache[$groupName]

        foreach ($member in $members) {
            $expiryDate = Get-Date $member.ExpiryDate

            if ($expiryDate -lt $today) {
                if ($cachedMembers -contains $member.SamAccountName) {
                    try {
                        Remove-ADGroupMember -Identity $groupName -Members $member.SamAccountName -Confirm:$false
                        Add-Content -Path $logPath -Value "[$(Get-Date)] User $($member.SamAccountName) from $groupName removed (Ablaufdatum: $expiryDate)."
                    } catch {
                        Add-Content -Path $logPath -Value "[$(Get-Date)] Error on removing user $($member.SamAccountName) from $groupName: $_"
                        $remainingMembers += $member
                    }
                } else {
                    Add-Content -Path $logPath -Value "[$(Get-Date)] User $($member.SamAccountName) is not member of group $groupName – ignored."
                }
            } else {
                $remainingMembers += $member
            }
        }

        # Aktualisierte CSV-Datei schreiben
        $remainingMembers | Export-Csv -Path $csvPath -Delimiter ";" -NoTypeInformation -Encoding UTF8
        Add-Content -Path $logPath -Value "[$(Get-Date)] CSV-File $($file.Name) was created"
    }
}

Die angewandte Datei fĂŒr die jeweilige Gruppe wird mit den noch gĂŒltigen Benutzern nach deren PrĂŒfung neu erstellt. Es ist bei der Einplanung des Tasks darauf zu achten, dass zu dem Zeitpunkt auf die Steuer-Dateien nicht zugegriffen wird.

Powershell, Programmierung, Server, Windows Server 2019, Windows Server 2022, Windows Server 2025

Powershell: Ziel einer URL abfragen

Posted on 12. Mai 202510. Mai 2025 By Daniel Lensing Keine Kommentare zu Powershell: Ziel einer URL abfragen

Ich durfte am Wochenende einen Umzug einer Domain-Adresse begleiten. Dazu wurden Webservices angepasst. Ich wollte die erforderliche Abfrage nach der Umstellung schnell per Skript prĂŒfen. Bei diesem ist das folgende entstanden:

[CmdletBinding()]
param(
    [Parameter(Mandatory = $true, Position = 0, ValueFromPipeline = $true)]
    [string[]]$URL
)

function Expand-URL {
    param (
        [Parameter(Mandatory = $true)]
        [string]$ShortUrl
    )
    try {
        $resp = Invoke-WebRequest -Uri $ShortUrl -MaximumRedirection 10 -Method Head -UseBasicParsing
        return $resp.BaseResponse.ResponseUri.AbsoluteUri
    }
    catch {
        try {
            $resp = Invoke-WebRequest -Uri $ShortUrl -MaximumRedirection 10 -Method Get -UseBasicParsing
            return $resp.BaseResponse.ResponseUri.AbsoluteUri
        }
        catch {
            Write-Error "Fehler beim Abrufen der URL [$ShortUrl]: $_"
            return $null
        }
    }
}

foreach ($shortUrl in $URL) {
    $finalUrl = Expand-URL -ShortUrl $shortUrl
    if ($finalUrl) {
        Write-Output "Zieladresse: "$finalUrl
    }
    else {
        Write-Output "Konnte die Zieladresse fĂŒr $shortUrl nicht ermitteln."
    }
}

Dieses muss als Datei gespeichert werden. Mit dem Aufruf

.\Skript.ps1 https://www.url.com

kann dann die Adresse aufgelöst werden. Sollte eine Weiterleitung eingerichtet sein, wird die passende Zieladresse ausgegeben.

Internet, Powershell, Programmierung, Web-Installationen, Windows Server 2019, Windows Server 2022, Windows Server 2025

Powershell-Modul: ImportExcel

Posted on 24. April 202521. April 2025 By Daniel Lensing Keine Kommentare zu Powershell-Modul: ImportExcel

Wenn es um Datenverarbeitung und Berichterstellung geht, ist Excel oft ein unverzichtbares Werkzeug. Dennoch kann die Arbeit mit Excel-Dateien durch manuelle Prozesse zeitaufwĂ€ndig und fehleranfĂ€llig sein. Hier kommt das PowerShell-Modul „ImportExcel“ ins Spiel – eine kraftvolle Lösung, um Excel-Dateien zu erstellen, zu bearbeiten und zu analysieren, ohne dass Microsoft Excel installiert sein muss.

EinfĂŒhrung in das Modul „ImportExcel“

Das Modul „ImportExcel“, entwickelt von Doug Finke, ist eine Erweiterung fĂŒr PowerShell, die es Benutzern ermöglicht, mit Excel-Dateien auf programmatische Weise zu arbeiten. Es bietet eine Vielzahl von Cmdlets, um Excel-Dateien zu importieren, zu exportieren und sogar zu visualisieren. Der große Vorteil des Moduls besteht darin, dass es fĂŒr die meisten Aufgaben keine Vorinstallation von Microsoft Excel erfordert. Dadurch wird die Automatisierung von Prozessen auch in Umgebungen möglich, in denen Excel nicht verfĂŒgbar ist.

Die wichtigsten Funktionen des Moduls

Das „ImportExcel“-Modul bietet eine große Anzahl von Funktionen. Hier sind einige der wichtigsten Cmdlets:

  1. Export-Excel
    Mit diesem Cmdlet kannst du Daten aus PowerShell-Objekten direkt in eine Excel-Datei exportieren. Du kannst Tabellen formatieren, Farben hinzufĂŒgen und Pivot-Tabellen erstellen. Beispiel:
   Get-Process | Export-Excel -Path "Prozesse.xlsx" -AutoSize
  1. Import-Excel
    Dieses Cmdlet ermöglicht das Importieren von Daten aus Excel-Dateien in PowerShell-Objekte. Es ist ideal fĂŒr die Analyse und Weiterverarbeitung von Daten. Beispiel:
   $daten = Import-Excel -Path "Daten.xlsx"
  1. Open-ExcelPackage
    Damit kannst du eine Excel-Datei öffnen und gezielt bearbeiten, z. B. bestimmte ArbeitsblÀtter oder Zellen Àndern.
  2. New-ExcelChart
    Mit diesem Cmdlet kannst du Diagramme direkt in Excel-Dateien erstellen. Es unterstĂŒtzt verschiedene Diagrammtypen wie Balken-, Linien- oder Tortendiagramme.

AnwendungsfĂ€lle fĂŒr das Modul „ImportExcel“

Das Modul eignet sich fĂŒr eine Vielzahl von Szenarien, darunter:

  • Berichterstellung: Automatisiertes Erstellen von Berichten in Excel, z. B. fĂŒr Leistungsanalysen oder Projektstatusberichte.
  • Datenanalyse: Importieren und Verarbeiten großer Datenmengen fĂŒr weitere Analysen.
  • Visualisierung: Erstellen von Diagrammen und Grafiken fĂŒr PrĂ€sentationen oder Zusammenfassungen.
  • Datenmigration: Exportieren von Daten aus einer Quelle und Importieren in ein Excel-Format.

Vorteile des „ImportExcel“-Moduls

  • Zeitersparnis: Automatisierung von Aufgaben, die normalerweise manuelle Arbeit erfordern.
  • FlexibilitĂ€t: KompatibilitĂ€t mit verschiedenen PowerShell-Versionen und Betriebssystemen.
  • Keine AbhĂ€ngigkeit von Excel: Ideal fĂŒr Serverumgebungen, in denen Excel nicht installiert ist.

Fazit

Das PowerShell-Modul „ImportExcel“ ist ein vielseitiges Werkzeug, das die Arbeit mit Excel-Dateien erheblich erleichtert und automatisiert. Egal, ob du Berichte erstellen, Daten analysieren oder Visualisierungen durchfĂŒhren möchtest, das Modul bietet eine einfache und effiziente Lösung. Durch seine umfangreichen Funktionen und einfache Bedienung ist es eine Bereicherung in der Autmatisierung.

Powershell, Windows 10, Windows 11, Windows Server 2016, Windows Server 2019, Windows Server 2022

Seitennummerierung der BeitrÀge

1 2 … 9 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 (235)
    • Android (7)
    • Fedora (Linux) (5)
    • iOS (5)
    • Mac OS X (5)
    • Peripherie (5)
    • Ubuntu (Linux) (8)
    • Windows 10 (60)
    • Windows 11 (21)
    • 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 (201)
    • #t2dhero (50)
    • Arbeitszimmer (30)
    • Audio (20)
    • Film / Kino (7)
    • Gedanken (78)
    • Gesundheit (31)
    • Internet (5)
    • Lebensmittel & Essen (22)
    • Lesestoff (18)
    • Sport (11)
    • Veranstaltung (3)
  • Lehren & Lernen (49)
    • Forschung (1)
    • Konferenzen (3)
    • PrĂ€sentation (4)
    • Zertifizierung (42)
  • Programme (325)
    • Android-Apps (27)
    • Eigene Tools (12)
    • iOS-Apps (6)
    • Office (86)
    • Patchday+Updates (74)
    • Software (150)
    • Spiele (3)
    • Windows Phone-Apps (2)
  • Programmierung (92)
    • AutoIT (1)
    • KiXtart (1)
    • PHP (3)
    • Power Automate (1)
    • Powershell (61)
    • VB.NET (10)
    • 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