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