Created
February 6, 2026 07:09
-
-
Save wullemsb/1de24eb57b8dfa6303f1e0af11f9c0fb to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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