Skip to content

Instantly share code, notes, and snippets.

@wullemsb
Created February 6, 2026 07:09
Show Gist options
  • Select an option

  • Save wullemsb/1de24eb57b8dfa6303f1e0af11f9c0fb to your computer and use it in GitHub Desktop.

Select an option

Save wullemsb/1de24eb57b8dfa6303f1e0af11f9c0fb to your computer and use it in GitHub Desktop.
Import-Module WebAdministration
# Timestamp for file
$timestamp = Get-Date -Format "yyyyMMdd_HHmmss"
$basePath = "D:\ServiceHealth\Logs"
# A unique identifier for this run
$jobId = [guid]::NewGuid().ToString()
$records = @()
$environment = "dev"
$server = "development.organization.be"
# Application Pools
$appPools = Get-IISAppPool
foreach ($pool in $appPools) {
$poolName = $pool.Name
$lowerName = $poolName.ToLower()
if ($lowerName.Contains("dev")) {
$environment = "dev"
} elseif ($lowerName.Contains("acc")) {
$environment = "acc"
} else {
$environment = "dev"
}
$record = @{
ResourceType = "AppPool"
Environment = $environment
Server = $server
JobId = $jobId
Name = $pool.Name
TimeGenerated = (Get-Date).ToString("o")
Result = @{
State = $pool.State.ToString()
}
}
$records += $record
}
# Services
$services = Get-Service | Where-Object { $_.DisplayName -like 'organizationname*' }
foreach ($svc in $services) {
$svcName = $svc.DisplayName
$lowerSvcName = $svcName.ToLower()
if ($lowerSvcName.Contains("dev")) {
$environment = "dev"
} elseif ($lowerSvcName.Contains("acc")) {
$environment = "acc"
} else {
$environment = "dev"
}
$wmi = Get-WmiObject -Class Win32_Service -Filter "Name='$($svc.Name)'"
$startupType = if ($wmi) { $wmi.StartMode } else { "Unknown" }
$record = @{
ResourceType = "Service"
Environment = $environment
Server = $server
JobId = $jobId
Name = $svc.DisplayName
TimeGenerated = (Get-Date).ToString("o")
Result = @{
State = $svc.Status.ToString()
StartupType = $startupType
}
}
$records += $record
}
# Scheduled Tasks
$scheduledTasks = Get-ScheduledTask | Where-Object { $_.TaskPath -eq '\organizationname\' }
foreach ($task in $scheduledTasks) {
$taskName = $task.TaskName
$lowerTaskName = $taskName.ToLower()
if ($lowerTaskName.Contains("dev")) {
$environment = "dev"
} elseif ($lowerTaskName.Contains("acc")) {
$environment = "acc"
} else {
$environment = "dev"
}
$info = Get-ScheduledTaskInfo -TaskName $task.TaskName -TaskPath $task.TaskPath
$record = @{
ResourceType = "ScheduledTask"
Environment = $environment
Server = $server
JobId = $jobId
Name = $task.TaskName
TimeGenerated = (Get-Date).ToString("o")
Result = @{
State = $task.State.ToString()
LastRunTime = $info.LastRunTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")
LastTaskResult = $info.LastTaskResult
}
}
$records += $record
}
$logfile = "$basePath\log_$timestamp.txt"
$records | ForEach-Object { $_ | ConvertTo-Json -Compress } | Set-Content $logfile
# Delete old log files
Get-ChildItem -Path $basePath -Filter "log_*.txt" -File |
Where-Object { $_.LastWriteTime -lt (Get-Date).AddHours(-48) } |
Remove-Item -Force
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment