Solved

list local administrator group members.

Posted on 2014-09-09
18
242 Views
Last Modified: 2014-09-10
I need a command to list members in the local administrator group for a list of servers.  

Please advise.

Thanks.
0
Comment
Question by:nav2567
  • 7
  • 6
  • 4
  • +1
18 Comments
 
LVL 28

Expert Comment

by:becraig
ID: 40313292
simple command prompt (Assuming you have psexec)
for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c net localgroup Administrators

Open in new window

0
 

Expert Comment

by:Robert Bratton
ID: 40313310
You can use the PSEXEC.exe (Windows SysInternals) tool to run the net command on multiple servers:
psexec @serverfile.txt cmd "/c net localgroup administrators"

Open in new window

Just put a list of servernames in the serverfile.txt
0
 
LVL 40

Expert Comment

by:Subsun
ID: 40313348
If you are looking for a PowerShell script then, Similar question is answered here.. Check and let me know if you have any trouble in getting report..
www.experts-exchange.com/Programming/Languages/Scripting/Powershell/Q_28505177.html
0
 

Author Comment

by:nav2567
ID: 40313618
I tried to pipe the results to a file by putting a  >>c:\result.txt at the end.

Is there a way I can display the server name before each result in the result file?
0
 
LVL 28

Expert Comment

by:becraig
ID: 40313622
for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c hostname & net localgroup Administrators >> \\computer\c$\gmembers.txt
                                          

Open in new window


computer would be the name of the computer you are running the command from.
0
 

Author Comment

by:nav2567
ID: 40313636
becraig, I ran that line but still do not see the hostname in the gmembers.txt file.
0
 

Author Comment

by:nav2567
ID: 40313645
By the way, you will need %% instead of %.
0
 
LVL 28

Expert Comment

by:becraig
ID: 40313646
hmm that sounds weird:

You only need %% if you run as a bat or cmd file, from the command line % is what you need (I did not see a need to save a one liner as a cmd or bat)

for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c echo ============================== & hostname &echo ============================== & net localgroup administrators >> \\computer\c$\gmembers.txt

Open in new window

0
 
LVL 40

Expert Comment

by:Subsun
ID: 40313651
Did you try the PS script?  It will give you a neat csv file which you can open in excel.
0
What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 

Author Comment

by:nav2567
ID: 40313668
sorry, becraig, I tried but still do not see hostname is being displayed in my results.txt.  Here is what I use:

for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c hostname & net localgroup Administrators >> c:\results.txt
0
 
LVL 28

Expert Comment

by:becraig
ID: 40313672
Then we can just repeat the variable, though I also see Subsun's report is a nice csv:

 for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c echo %a & net localgroup Administrators >> c:\results.txt 

Open in new window

0
 

Author Comment

by:nav2567
ID: 40314133
becraig,

It is still not good and same result.  The "echo %a" result did not get piped into the results.txt file but only being shown at the command prompt when I run it.

Subsun, I tried the PS script and the result file only contains information on the last server name in the list.
0
 
LVL 40

Expert Comment

by:Subsun
ID: 40314161
Try..
function get-localusers {
 param(
 [Parameter(Mandatory=$true,valuefrompipeline=$true)]
 [string]$strComputer
 )
 
 $Select = "Name","Class","Parent" | %{  
 Invoke-Expression "@{n='$_';e={ `$_.GetType().InvokeMember('$_', 'GetProperty', `$Null, `$_, `$Null) }}"
 }
 
 If (Test-Connection $strComputer -Count 2 -Quiet){
  try{
  $computer = [ADSI]("WinNT://" + $strComputer + ",computer")
  $AdminGroup = $computer.psbase.children.find("Administrators")
  $Adminmembers= $AdminGroup.psbase.invoke("Members") | Select $Select
    foreach ($admin in $Adminmembers) {
    $admin | Select @{N="ComputerName";E={$strComputer}},@{N="Administrators";E={"$(($_.parent -SPLIT "/")[-1])\$($_.Name)"}},Class,@{N="Parent";E={($_.parent -SPLIT "/")[-1]}}
    }
 }catch{ 
 "" | Select @{N="ComputerName";E={$strComputer}},@{N="Administrators";E={"Access Denied"}},Class,Parent
 }
 }
Else {
 "" | Select @{N="ComputerName";E={$strComputer}},@{N="Administrators";E={"Not able to Ping"}},Class,Parent
 }
}
Get-Content "C:\Powershell\Servers.txt" | %{get-localusers $_} | Select ComputerName,Administrators,Class,Parent | Export-Csv "C:\Powershell\LocalAdm$((get-date).toString('MM-dd-yyyy')).csv" -NTI

Open in new window

1
 
LVL 28

Expert Comment

by:becraig
ID: 40314716
Lol my bad

for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c echo %a   \\%a\c$\result.txt & net localgroup Administrators >>
\\%a\c$\result.txt
I suggest saving to the computer you're running from.  \\%a\c$\result.txt
0
 

Author Comment

by:nav2567
ID: 40314858
becraig,

You script is still not working as expected.  Can you please test it?
0
 
LVL 40

Accepted Solution

by:
Subsun earned 500 total points
ID: 40314880
@nav2567, Did you try the PS script which I posted in ID: 40314161? or are you looking only for a batch script?
0
 
LVL 28

Expert Comment

by:becraig
ID: 40314993
for /f %a in (c:\serverlist.txt) do psexec \\%a cmd /c echo %a >>  \\%a\c$\result.txt & net localgroup Administrators >>
\\%a\c$\result.txt

Open in new window

0
 

Author Comment

by:nav2567
ID: 40315299
Sorry, becraig.  It is still not working.  I do not want to pipe the result to the servers C drive.  

I am going to have to use Subsun's script as it has the display I need.  

Thanks for your help.
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Resolve DNS query failed errors for Exchange
OfficeMate Freezes on login or does not load after login credentials are input.
This tutorial will walk an individual through the steps necessary to install and configure the Windows Server Backup Utility. Directly connect an external storage device such as a USB drive, or CD\DVD burner: If the device is a USB drive, ensure i…
This tutorial will walk an individual through the process of configuring their Windows Server 2012 domain controller to synchronize its time with a trusted, external resource. Use Google, Bing, or other preferred search engine to locate trusted NTP …

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now