Script to know Access on User/Group Account

%3CLINGO-SUB%20id%3D%22lingo-sub-1653042%22%20slang%3D%22en-US%22%3EScript%20to%20know%20Access%20on%20User%2FGroup%20Account%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1653042%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20Team%2C%3CBR%20%2F%3E%3CBR%20%2F%3EIs%20there%20a%20way%20to%20get%20a%20list%20of%20servers%20that%20user%20or%20a%20group%20has%20access%3F%3CBR%20%2F%3E%3CBR%20%2F%3EI%20am%20looking%20for%20a%20script%20that%20would%20give%20me%20list%20of%20servers%20in%20which%20that%20particular%20user%20or%26nbsp%3B%20group%20is%20added%20to%20Server%20Local%20Administrators.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%3C%2FP%3E%3CP%3EYash%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1653042%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EPowerShell%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EPowerShell%20Commands%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EPowerShell%20ISE%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1656130%22%20slang%3D%22en-US%22%3ERe%3A%20Script%20to%20know%20Access%20on%20User%2FGroup%20Account%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1656130%22%20slang%3D%22en-US%22%3E%3CP%3E%3CBR%20%2F%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F459754%22%20target%3D%22_blank%22%3E%40yashsedani%3C%2FA%3E%2C%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EYou%20will%20need%20to%20do%20following%20for%20the%20script%20works%20correctly%3A%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E1.%20Create%20a%20Servers.txt%20file%20which%20has%20your%20servers%20list.%3C%2FP%3E%3CP%3E2.%20Run%20the%20script.%3C%2FP%3E%3CP%3E3.%20Choose%20type%20(group%20or%20user).%3CBR%20%2F%3E4.%20Enter%20your%20credentials%20(All%20servers%20must%20be%20authorized%20for%20these%20credentials).%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EIf%20user%20or%20group%20belongs%20to%20domain%2C%20the%20results%20will%20be%20cyan.%3C%2FP%3E%3CP%3EIf%20user%20or%20group%20belongs%20to%20local%20server%2C%20the%20results%20will%20be%20green.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%20class%3D%22lia-code-sample%20language-powershell%22%3E%3CCODE%3E%24Domain%20%3D%20%24env%3Auserdomain%0A%24Servers%20%3D%20Get-Content%20%20C%3A%5CServers.txt%20%0A%24Selection%20%3D%20Read-Host%20%22Select%20Group%20or%20user%20(for%20group%3Dg%20for%20user%3Du)%22%0A%0A%0Aif%20(%24Selection%20-eq%20%22u%22)%0A%7B%20%20%20%24Credential%20%3D%20Get-Credential%0A%0A%20%20%20%20%24Username%20%3D%20Read-Host%20%22Enter%20User%20Name%22%0A%20%20%20%20Foreach%20(%24Server%20in%20%24Servers)%0A%20%20%20%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%24Group%20%3D%20Invoke-Command%20-ScriptBlock%20%7B(Get-LocalGroupMember%20%22Administrators%22).Name%7D%20-ComputerName%20%24Server%20-ErrorAction%20SilentlyContinue%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20If%20(%24Group%20-contains%20%22%24Server%5C%24Username%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Write-host%20%22%24Server%22%20-ForegroundColor%20Green%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ElseIf%20(%24Group%20-contains%20%22%24Domain%5C%24Username%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Write-host%20%22%24Server%22%20-ForegroundColor%20Cyan%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%0A%0AElseif%20(%24Selection%20-eq%20%22g%22)%0A%7B%0A%20%24Credential%20%3D%20Get-Credential%0A%0A%20%20%20%20%24Groupname%20%3D%20Read-Host%20%22Enter%20Group%20Name%22%0A%20%20%20%20Foreach%20(%24Server%20in%20%24Servers)%0A%20%20%20%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%24Group%20%3D%20Invoke-Command%20-ScriptBlock%20%7B(Get-LocalGroupMember%20%22Administrators%22).Name%7D%20-ComputerName%20%24Server%20-ErrorAction%20SilentlyContinue%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20If%20%20(%24Group%20-contains%20%22%24Server%5C%24Groupname%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Write-host%20%22%24Server%22%20-ForegroundColor%20Green%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ElseIf%20(%24Group%20-contains%20%22%24Domain%5C%24Groupname%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Write-host%20%22%24Server%22%20-ForegroundColor%20Cyan%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%7D%0A%7D%0A%0A%0Aelse%0A%7B%0AWrite-host%20%22Wrong%20parameter!%20Exiting...%22%20-ForegroundColor%20Red%0A%7D%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EGreetings%3CBR%20%2F%3EHasan%20Emre%20SATILMI%C5%9E%3C%2FP%3E%3C%2FLINGO-BODY%3E
Contributor

Hi Team,

Is there a way to get a list of servers that user or a group has access?

I am looking for a script that would give me list of servers in which that particular user or  group is added to Server Local Administrators.

 

Thanks

Yash

1 Reply


Hi @yashsedani

 

You will need to do following for the script works correctly:


1. Create a Servers.txt file which has your servers list.

2. Run the script.

3. Choose type (group or user).
4. Enter your credentials (All servers must be authorized for these credentials).

 

If user or group belongs to domain, the results will be cyan.

If user or group belongs to local server, the results will be green.

 

$Domain = $env:userdomain
$Servers = Get-Content  C:\Servers.txt 
$Selection = Read-Host "Select Group or user (for group=g for user=u)"


if ($Selection -eq "u")
{   $Credential = Get-Credential

    $Username = Read-Host "Enter User Name"
    Foreach ($Server in $Servers)
    {     
          $Group = Invoke-Command -ScriptBlock {(Get-LocalGroupMember "Administrators").Name} -ComputerName $Server -ErrorAction SilentlyContinue
        
                If ($Group -contains "$Server\$Username")
                    {
                    Write-host "$Server" -ForegroundColor Green
                    }
                ElseIf ($Group -contains "$Domain\$Username")
                    {
                    Write-host "$Server" -ForegroundColor Cyan
                    }
    }
}


Elseif ($Selection -eq "g")
{
 $Credential = Get-Credential

    $Groupname = Read-Host "Enter Group Name"
    Foreach ($Server in $Servers)
    {     
          $Group = Invoke-Command -ScriptBlock {(Get-LocalGroupMember "Administrators").Name} -ComputerName $Server -ErrorAction SilentlyContinue
                If  ($Group -contains "$Server\$Groupname")
                    {
                    Write-host "$Server" -ForegroundColor Green
                    }
                ElseIf ($Group -contains "$Domain\$Groupname")
                    {
                    Write-host "$Server" -ForegroundColor Cyan
                    }
     }
}


else
{
Write-host "Wrong parameter! Exiting..." -ForegroundColor Red
}

 

Greetings
Hasan Emre SATILMIŞ