How to audit the service accounts on multiple servers with Powershell?

# Step 1 - get the information you need, display them on the console
PS C:\> gwmi win32_service |?{$_.DisplayName -match "SQL"} | ft SystemName, DisplayName, StartMode,State,StartName -auto

# Step 2 - get all of the required information into a SQL Server table
# First, we need to create a SQL Server table in SSMS
<#
USE [MyTestDB]
GO

CREATE TABLE [dbo].[ServiceInfo](
       [ServerName] [varchar](200) NULL,
       [DisplayName] [varchar](200) NULL,
       [StartMode] [varchar](20) NULL,
       [StartName] [varchar](200) NULL
)
#>

# Then we use the following script to populate the data into the table. It's better to use ISE to take advantage of the intellisense (for ISE 3.0 and 4.0)
$a= "Localhost","Xu-Acer-PC"
#$a=get-content C:\Servers.txt #Another way if you like to keep the servers in a text file

$a | % {`
        $ServerName = $_;
        gwmi win32_service -ComputerName $ServerName |?{$_.DisplayName -match "SQL"} | % { `
                                                                                          $DisplayName=$_.DisplayName;
                                                                                          $StartMode=$_.StartMode;
                                                                                          $StartName=$_.StartName;
                                                                                          Invoke-Sqlcmd -ServerInstance $ServerName -Database "MyTestDB" -Query "Insert ServiceInfo Select'$ServerName', '$DisplayName','$StartMode','$StartName'"
                                                                                         }
        }