Script Übersicht

Hiermit kann man die restlichen Arbeitstage des Jahres, abzüglich Feiertage und Urlaubstagen berechnen

Arbeitstage_berechnen.ps1
# Aktuelles Jahr ermitteln
$currentYear = (Get-Date).Year

# API URL für Bayern (BY) definieren
$apiUrl = "https://feiertage-api.de/api/?jahr=$currentYear&nur_land=BY"

try {
    # Daten von der API abrufen
    $response = Invoke-RestMethod -Uri $apiUrl -Method Get

    # Die API gibt ein Objekt zurück, bei dem die Feiertagsnamen die Keys sind.
    # Wir wandeln das in eine Liste von Objekten um, damit es in PowerShell besser filterbar ist.
    $holidays = $response.PSObject.Properties | ForEach-Object {
        [PSCustomObject]@{
            Feiertag = $_.Name
            Datum    = [DateTime]::Parse($_.Value.datum).ToString("dd.MM.yyyy")
            Hinweis  = $_.Value.hinweis
        }
    }
}
catch {
    Write-Error "Fehler beim Abrufen der Feiertage: $($_.Exception.Message)"
}
$feiertage = $holidays | select Datum -ExpandProperty Datum

$Urlaubstage = read-host "Wie viele Urlaubstage sind $currentYear noch übrig?"

# Funktion zur Berechnung der Arbeitstage
function Get-Workdays {
    param (
        [datetime]$startDate,
        [datetime]$endDate
    )

    $workdays = 0
    $currentDate = $startDate

    while ($currentDate -le $endDate) {
        if ($currentDate.DayOfWeek -ne 'Saturday' -and $currentDate.DayOfWeek -ne 'Sunday' -and -not $feiertage.Contains($currentDate)) {
            $workdays++
        }
        $currentDate = $currentDate.AddDays(1)
    }
    

    $workdays -= $Urlaubstage
    return $workdays
}

# Beispiel: Berechnung der Arbeitstage bis zu einem bestimmten Datum
$startDate = (get-date)
$endDate = [datetime]::Parse("31.12.$currentYear")
$workdays = Get-Workdays -startDate $startDate -endDate $endDate



Write-host  "Anzahl der Arbeitstage von $($startDate.ToShortDateString()) bis $($endDate.ToShortDateString()): $workdays" -ForegroundColor Cyan

Dieses Skript erlaubt eine Übersicht über die wichtigsten Computerinformationen

Get-ComputerInfo.ps1
$computersystem = Get-CimInstance -ClassName Win32_ComputerSystem 
$userinfo = Get-CimInstance -ClassName Win32_UserAccount                
$NetworkadapterConf=  get-wMIobject Win32_NetworkAdapterConfiguration
$Networkadapter = Get-wMIobject win32_networkadapter 
                    
$Networkinfo = @()
$Networkadapter | foreach {
    $adpt = $_
    $match = $NetworkadapterConf | where {$_.Description -like  "*$($adpt.Name)*"} 
    if ($match -ne $NULL) {
       $Networkinfo +=  "" | select @{n="DeviceID";e={$adpt.DeviceID}}, @{n="Name";e={$adpt.Name}}, @{n="MAC";e={$adpt.MACAddress}}, @{n="Adaptertype";e={$adpt.Name}}, @{n="Servicename";e={$adpt.Servicename}},@{n="DHCPenabled";e={($match.DHCPenabled)| select-object -first 1}}, @{n="IPAddress";e={($match.IPAddress)| select-object -first 1}}, @{n="DefaultIPGateway";e={($match.DefaultIPGateway)| select-object -first 1}}
    }
}


$Computersystem | fl  
$Networkinfo | ft