- notageek.it di Mirko Iodice - http://www.notageek.it -

List Clients Local Admininistrators

una guida [1] sull’uso di questo VBS

Questo script WSH prende in input un elenco (computers.txt) di computer (client/server) e si collega ad ognuno di essi per ricavarne la lista degli utenti che fanno parte del gruppo Administrators, il risultato dell'operazione viene poi scritto in un file di output (lcladmns.txt); è possibile generare velocemente tale elenco utilizzando lo script “List All Computers And Users Within An OU And SubOUs [2]“.
Gli errori di connessione vengono invece inseriti in un file separato denominato "errors.txt".

Lo scopo è quello di generare un semplicissimo report che possa aiutarvi ad individuare tutti quegli account utente che possiedono ingiustificatamente diritti amministrativi sui computer del dominio... quante volte, ad esempio, si assegnano temporaneamente dei permessi e poi ci si dimentica di rimuoverli?

Gestisce in maniera completamente autonoma le operazioni di scrittura dei risultati su file di testo, potete perciò eseguirlo indifferentemente con entrambi i motori WSH ("wscript.exe" oppure "cscript.exe") senza quindi dovervi preoccupare di reindirizzarne manualmente l'output.

'************Set Variables here************
' Results output file
ResultsFile = "lcladmns.txt"
' Errors log File
ErrorLog = "errors.txt"
' Computers list file
ComputersFile = "computers.txt"
'******************************************

'*****Contasts
Const OpenAsASCII      =  0
Const OverwriteIfExist = -1
Const ForAppending = 8
TotErr = 0
'*****End of Contasts

Set oFS = CreateObject("Scripting.FileSystemObject")

'*****If ComputersFile Doesnt exist then create it and write local pc name into it
If not oFS.FileExists(ComputersFile) Then
	Set fFile = oFS.CreateTextFile(ComputersFile, OverwriteIfExist, OpenAsASCII)
	Set oWshNet = CreateObject("WScript.Network")
	fFile.WriteLine(oWshNet.ComputerName)
	fFile.Close
End If 

Set oTS = oFS.OpenTextFile(ComputersFile)
Set oTSOut = oFS.CreateTextFile(ErrorLog)
Set fFile = oFS.CreateTextFile(ResultsFile, OverwriteIfExist, OpenAsASCII)

Do Until oTS.AtEndOfStream
	sComputer = oTS.ReadLine
	On Error Resume Next
	'*****MAKE CONNECTION
	Set oAdminGroup = GetObject("WinNT://" & sComputer & "/Administrators")
	'*****END OF CONNECTION
	If Err <> 0 Then
		TotErr = TotErr + 1
 		oTSOut.WriteLine "Error on " & sComputer & ":" & Err.Number & ", " & Err.Description
	Else
		On Error Goto 0
		fFile.WriteLine ("--------------> " & sComputer)
		For Each oAdminUser in oAdminGroup.Members
  			fFile.WriteLine Mid(oAdminUser.ADsPath, 9)
		Next
		fFile.WriteLine ("--------------> " & sComputer)
		fFile.WriteLine ("")
	End If
Loop

fFile.Close
oTS.Close
oTSOut.Close

If TotErr = 0 Then
	msgbox "Task completed with " & TotErr & " errors"
Else
	msgbox "Task completed with " & TotErr & " errors" & Chr(10) & Chr(13) & "Please check the error log"
End If

Suggeriti dall'autore