Add functions to collect services and scheduled tasks information

This commit is contained in:
2024-07-25 16:21:19 +02:00
parent cd1943928e
commit c037ee4ad0

View File

@@ -176,7 +176,7 @@ function Get-FirewallInfo {
$FirewallInfo = @() $FirewallInfo = @()
foreach ($profile in $FirewallProfiles) { foreach ($profile in $FirewallProfiles) {
$FirewallInfo += @{ $FirewallInfo += [pscustomobject]@{
"Profile Name" = $profile.Name "Profile Name" = $profile.Name
"Enabled" = $profile.Enabled "Enabled" = $profile.Enabled
"Default Inbound Action" = $profile.DefaultInboundAction "Default Inbound Action" = $profile.DefaultInboundAction
@@ -269,6 +269,54 @@ function Get-InstalledApplication {
return $InstalledApps | Select-Object Name, Version, Publisher, InstallDate return $InstalledApps | Select-Object Name, Version, Publisher, InstallDate
} }
function Get-Services {
param(
[string]$Target
)
$Services = Get-Service -ComputerName $Target
$ServicesInfo = @()
foreach ($service in $Services) {
$ServicesInfo += [pscustomobject]@{
"Service Name" = $service.Name
"Display Name" = $service.DisplayName
"Status" = $service.Status
"Start Mode" = $service.StartType
}
}
return $ServicesInfo
}
function Get-ScheduledTasks {
param(
[string]$Target
)
$ScheduledTasksInfo = Invoke-Command -ComputerName $Target -ScriptBlock {
$Tasks = Get-ScheduledTask
$ScheduledTasks = @()
foreach ($task in $Tasks) {
$TaskInfo = Get-ScheduledTaskInfo -TaskName $task.TaskName -TaskPath $task.TaskPath
$ScheduledTasks += [pscustomobject]@{
"Task Name" = $task.TaskName
"Task Path" = $task.TaskPath
"Task State" = $task.State
"RunAS" = $Task.Principal.UserId
"Task Last Run Time" = $TaskInfo.LastRunTime
"Task Next Run Time" = $TaskInfo.NextRunTime
"Last Task Result" = $TaskInfo.LastTaskResult
"Autor" = $Task.Author
}
}
$ScheduledTasks
}
return $ScheduledTasksInfo
}
<# function Get-WindowsUpdateSettings { <# function Get-WindowsUpdateSettings {
param( param(
[string]$Target [string]$Target
@@ -321,11 +369,16 @@ foreach ($server in $Target) {
Write-Message -Type "Success" Write-Message -Type "Success"
Write-Verbose ($FirewallConfiguration | Out-String) Write-Verbose ($FirewallConfiguration | Out-String)
Write-Message -Message "Collecting information abut local admins" Write-Message -Message "Collecting information about local admins"
$LocalAdminsInfo = Get-LocalUserAdmins -Target $server $LocalAdminsInfo = Get-LocalUserAdmins -Target $server
Write-Message -Type "Success" Write-Message -Type "Success"
Write-Verbose ($LocalAdminsInfo | Out-String) Write-Verbose ($LocalAdminsInfo | Out-String)
Write-Message -Message "Collecting Scheduled Tasks information"
$ScheduledTasksInfo = Get-ScheduledTasks -Target $server
Write-Message -Type "Success"
Write-Verbose ($ScheduledTasksInfo | Out-String)
Write-Message -Message "Collecting server roles information" Write-Message -Message "Collecting server roles information"
if($GeneralInfo.'Domain Role Id' -ge 2) { if($GeneralInfo.'Domain Role Id' -ge 2) {
$ServerRoles = Get-Roles -Target $server $ServerRoles = Get-Roles -Target $server
@@ -340,6 +393,11 @@ foreach ($server in $Target) {
Write-Message -Type "Success" Write-Message -Type "Success"
Write-Verbose ($InstalledApplications| Out-String) Write-Verbose ($InstalledApplications| Out-String)
Write-Message -Message "Collecting information about services"
$ServicesInfo = Get-Services -Target $server
Write-Message -Type "Success"
Write-Verbose ($ServicesInfo | Out-String)
#region HTML Report #region HTML Report
Write-Message -Message "Generating HTML report" Write-Message -Message "Generating HTML report"
$dateTime = Get-Date -Format "yyyy-MM-dd_HH-mm-ss" $dateTime = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
@@ -378,7 +436,14 @@ foreach ($server in $Target) {
} }
New-HTMLPanel { New-HTMLPanel {
New-HTMLTable -DataTable $HardwareInfo.Disk -HideFooter -Simplify { New-HTMLTable -DataTable $HardwareInfo.Disk -HideFooter -Simplify {
New-TableHeader -Title 'Disk' New-TableHeader -Title 'Disk' -Alignment 'left'
}
}
}
New-HTMLSection -HeaderText 'Users & Groups' {
New-HTMLPanel {
New-HTMLTable -DataTable $LocalAdminsInfo -HideFooter -HideButtons {
New-TableHeader -Title 'Local Admins'
} }
} }
} }
@@ -395,16 +460,18 @@ foreach ($server in $Target) {
} }
} }
New-HTMLSection -HeaderText 'Server Roles' { New-HTMLSection -Invisible {
New-HTMLPanel { New-HTMLSection -HeaderText 'Scheduled Tasks' {
New-HTMLTable -DataTable $LocalAdminsInfo -HideFooter -HideButtons { New-HTMLTable -DataTable $ScheduledTasksInfo -HideFooter -Title "$server $dateTime Scheduled Tasks" {
New-TableHeader -Title 'Local Admins' New-TableHeader -Title 'Task Scheduler'
} }
} }
New-HTMLPanel { New-HTMLSection -HeaderText 'Server Roles' {
New-HTMLTable -DataTable $ServerRoles -HideFooter -HideButtons { New-HTMLPanel {
New-TableHeader -Title 'Server Roles' New-HTMLTable -DataTable $ServerRoles -HideFooter -HideButtons {
New-TableHeader -Title 'Server Roles'
}
} }
} }
} }
@@ -419,6 +486,16 @@ foreach ($server in $Target) {
} }
} }
} }
New-HTMLTab -TabName 'Services' {
New-HTMLSection -HeaderText 'Services' {
New-HTMLPanel {
New-HTMLTable -DataTable $ServicesInfo -HideFooter -PagingLength 50 -Title "$server $dateTime Installed Apps" { # Title will be used for filename when using export
New-TableHeader -Title 'Services'
}
}
}
}
} }
Write-Message -Type "Success" Write-Message -Type "Success"