I created this function to get more information for any service account, for example if you need to know the login use in SQL Server services.
Check the script below and also can download here
<#
.SYNOPSIS
Get-ServiceAccountInfo retrieves account info from windows services
.DESCRIPTION
Get-ServiceAccountInfo gets the data from services accounts
.PARAMETER ComputerName
Server name that you want to get information
.PARAMETER Filter
Specify a value name to filter by service name
.PARAMETER Credential
Provide the user name and password to retrive the services information if not logged with admin account.
.EXAMPLE
Get-ServiceAccountInfo -ComputerName 'server_name' -Filter 'SQL'
#>
function Get-ServiceAccountInfo {
[cmdletbinding()]
param (
[Parameter(Mandatory = $true
, ValueFromPipelineByPropertyName = $true
, Position = 0)]
[string[]]$ComputerName,
[Parameter(Mandatory = $false,
Position = 1)]
[string]$Filter,
[Parameter(Mandatory = $false,
Position = 2)]
[PSCredential]$Credential
)
begin {
$params = @{
Class = 'Win32_Service';
ComputerName = '';
}
if($Credential){
$params.Credential = $Credential
}
if($Filter){
$Filter = "*" + $Filter.TrimStart('*').TrimEnd('*') + "*"
}
$outArray = @()
}
process{
foreach($Computer in $ComputerName) {
$params.ComputerName = $Computer
try{
if($Filter) {
$data = Get-WmiObject @params | Where-Object { $_.StartName -like $Filter } | Select-Object DisplayName, StartName, State, Name, StartMode, Status, Description
} else {
$data = Get-WmiObject @params | Select-Object DisplayName, StartName, State, Name, StartMode, Status, Description
}
$outObj = New-Object PSObject
Add-Member -InputObject $outObj -MemberType NoteProperty -Name ComputerName -Value $Computer
Add-Member -InputObject $outObj -MemberType NoteProperty -Name ServiceName -Value $data.Name
Add-Member -InputObject $outObj -MemberType NoteProperty -Name DisplayName -Value $data.DisplayName
Add-Member -InputObject $outObj -MemberType NoteProperty -Name StartName -Value $data.StartName
Add-Member -InputObject $outObj -MemberType NoteProperty -Name State -Value $data.State
Add-Member -InputObject $outObj -MemberType NoteProperty -Name StartMode -Value $data.StartMode
Add-Member -InputObject $outObj -MemberType NoteProperty -Name Status -Value $data.Status
Add-Member -InputObject $outObj -MemberType NoteProperty -Name Description -Value $data.Description
$outArray += $outObj
} catch {
Write-Message -Level Error -Message $_.Exception.Message
}
}
} end {
Write-Output $outArray
}
}