I copied the PowerShell code from this site that displays the local user accounts for the computers that I want to search in my domain.
I edited it a bit to the following to show NOT_FOUND if that PC is turned off or just can't find it:
Param
(
[Parameter(Position=0,Mandatory=$false)]
[ValidateNotNullorEmpty()]
[Alias('cn')][String[]]$ComputerName=$Env:COMPUTERNAME,
[Parameter(Position=1,Mandatory=$false)]
[Alias('un')][String[]]$AccountName,
[Parameter(Position=2,Mandatory=$false)]
[Alias('cred')][System.Management.Automation.PsCredential]$Credential
)
$Obj = @()
Foreach($Computer in $ComputerName)
{
If($Credential)
{
$AllLocalAccounts = Get-WmiObject -Class Win32_UserAccount -Namespace "root\cimv2" `
-Filter "LocalAccount='$True'" -ComputerName $Computer -Credential $Credential -ErrorAction SilentlyContinue
}
else
{
$AllLocalAccounts = Get-WmiObject -Class Win32_UserAccount -Namespace "root\cimv2" `
-Filter "LocalAccount='$True'" -ComputerName $Computer -ErrorAction SilentlyContinue -ErrorVariable NotFound
}
If ($NotFound) {
$Object = New-Object -TypeName PSObject
$Object|Add-Member -MemberType NoteProperty -Name "Name" -Value "NOT_FOUND"
$Object|Add-Member -MemberType NoteProperty -Name "Disabled" -Value "TRUE"
$Object|Add-Member -MemberType NoteProperty -Name "Domain" -Value $Computer
$Obj+=$Object
$NotFound = $null
}
else{
Foreach($LocalAccount in $AllLocalAccounts)
{
$Object = New-Object -TypeName PSObject
$Object|Add-Member -MemberType NoteProperty -Name "Name" -Value $LocalAccount.Name
$Object|Add-Member -MemberType NoteProperty -Name "Disabled" -Value $LocalAccount.Disabled
$Object|Add-Member -MemberType NoteProperty -Name "Domain" -Value $LocalAccount.Domain
$Obj+=$Object
}
}
If($AccountName)
{
Foreach($Account in $AccountName)
{
$Obj|Where-Object{$_.Name -like "$Account"}
}
}
else
{
$Obj
}
}
I enter the following:
.\GetLocalAccount.ps1 -Computername "Comp1", "Comp2", "Comp3", "Comp4"
The problem is that the output seems to be duplicating. I've tried debugging in ISE and don't see this in the $obj variable.
My Output is the following:
Name Disabled Domain
---- -------- ------
Administrator False Comp1
DefaultAccount True Comp1
Guest True Comp1
WDAGUtilityAccount True Comp1
Administrator False Comp1
DefaultAccount True Comp1
Guest True Comp1
WDAGUtilityAccount True Comp1
NOT_FOUND TRUE Comp2
Administrator False Comp1
DefaultAccount True Comp1
Guest True Comp1
WDAGUtilityAccount True Comp1
NOT_FOUND TRUE Comp2
NOT_FOUND TRUE Comp3
Administrator False Comp1
DefaultAccount True Comp1
Guest True Comp1
WDAGUtilityAccount True Comp1
NOT_FOUND TRUE Comp2
NOT_FOUND TRUE Comp3
Administrator False Comp4
DefaultAccount True Comp4
Guest True Comp4
WDAGUtilityAccount True Comp4
The Output should be:
Name Disabled Domain
---- -------- ------
Administrator False Comp1
DefaultAccount True Comp1
Guest True Comp1
WDAGUtilityAccount True Comp1
NOT_FOUND TRUE Comp2
NOT_FOUND TRUE Comp3
Administrator False Comp4
DefaultAccount True Comp4
Guest True Comp4
WDAGUtilityAccount True Comp4