Purpose: This script will search AD for Windows Servers that are enabled and attempted to connect to each server and get a listing of all services and the accounts used to run them.
Note: This will take a while to run unless someone wants to make it multithreaded.
I just wrote this so there may need to be some bug fixes but in general it seemed to work.
Requirements: RSAT tools WMI
Import-Module activedirectory
cls
$ServicesReport = @()
$AllServers = Get-ADComputer -Filter {(OperatingSystem -Like "Windows Server*")-and (enabled -eq "true")} -Property SamAccountName | select -expand Name
$i = 0
foreach($Server in $AllServers) {
$i++
Write-Host "Working on Server: $Server " $i " of " $AllServers.Count
try
{
if (Test-Connection -ComputerName $Server -Quiet) {
$Services = Get-WmiObject win32_service -ComputerName $Server | select Name,
@{N="StartupType";E={$_.StartMode}},
@{N="ServiceAccount";E={$_.StartName}},
@{N="SystemName";E={$_.Systemname}}
foreach ($Service in $Services) {
$Detail = New-Object PSObject
$Detail | Add-Member Noteproperty ServiceName $($Service.Name)
$Detail | Add-Member Noteproperty StartupType $Service.StartupType
$Detail | Add-Member Noteproperty ServiceAccount $Service.ServiceAccount
$Detail | Add-Member Noteproperty SystemName $Service.Systemname
$ServicesReport += $Detail
}
}
}
Catch
{
$Detail = New-Object PSObject
$Detail | Add-Member Noteproperty ServiceName "NA"
$Detail | Add-Member Noteproperty StartupType "NA"
$Detail | Add-Member Noteproperty ServiceAccount "Error"
$Detail | Add-Member Noteproperty SystemName $Server
$ServicesReport += $Detail
}
}
$ServicesReport | Export-Csv -Path c:\temp\test.csv -NoTypeInformation
No comments:
Post a Comment