# ============================================================================================== # # Microsoft PowerShell Source File -- Created with SAPIEN Technologies PrimalScript 2007 # # NAME: Get-ServiceAccountname.ps1 # # AUTHOR: Jeffery Hicks , SAPIEN Technologies, Inc. # DATE : 3/31/2009 # # COMMENT: Using ADSI, enumerate services on a given computer and return the serviceaccountname # # DISCLAIMER AND WARNING: # THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY # KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. # TEST THOROUGHLY IN A NON-PRODUCTION ENVIRONMENT. IF YOU DON'T KNOW WHAT THIS # SCRIPT WILL DO...DO NOT RUN IT! # ============================================================================================== Param ([string]$computername=$env:computername) [ADSI]$server="WinNT://$computername" $server.psbase.children | where {$_.SchemaClassName -eq "Service"} | select @{name="Computername";Expression={$computername.toUpper()}},` @{name="Service";Expression={$_.name}},` @{name="DisplayName";Expression={$_.DisplayName}},` @{name="AccountName";Expression={$_.ServiceAccountName}},` @{name="Path";Expression={$_.Path}} #or as a function Function Get-ServiceAccountName { Param ([string]$computername=$env:computername) [ADSI]$server="WinNT://$computername" $server.psbase.children | where {$_.SchemaClassName -eq "Service"} | select @{name="Computername";Expression={$computername.toUpper()}},` @{name="Service";Expression={$_.name}},` @{name="DisplayName";Expression={$_.DisplayName}},` @{name="AccountName";Expression={$_.ServiceAccountName}},` @{name="Path";Expression={$_.Path}} } ##################################################################################### #or as a function that takes pipeline input Function Get-ServiceAccountName { PROCESS { [string]$computername=$_ [ADSI]$server="WinNT://$computername" $server.psbase.children | where {$_.SchemaClassName -eq "Service"} | select @{name="Computername";Expression={$computername.toUpper()}},` @{name="Service";Expression={$_.name}},` @{name="DisplayName";Expression={$_.DisplayName}},` @{name="AccountName";Expression={$_.ServiceAccountName}},` @{name="Path";Expression={$_.Path}} } } #Pipeline examples #"CHAOS","jdhit-dc01" | get-serviceAccountname | Sort Computername,Accountname | format-table computername,Service,Accountname # Get-Content computers.txt | get-serviceAccountname | where {$_.accountname -match "administrator"} #####################################################################################