List Clients Local Admininistrators
Posted By Mirko On In Scripts | No CommentsQuesto 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
- Come elencare gli amministratori locali di un dominio Windows - How to list local administrators in a Windows Domain
- WSH - Windows Scripting Host