Volledige versie bekijken : Lijst weergeven met local admins in mbv VB



jvuz
11 January 2010, 14:52
Hoi,

ik heb een script waarmee ik een lijst kan genereren de lokale admins van bepaalde pc's. De namen van de pc's zet ik in een tekstbestand en deze wordt afgelopen en nagekeken. Het resultaat wordt dan in een csv bestand gezet.

Dit werkt goed, maar ik zou er nog iets aan willen toevoegen. Op enkele van onze pc's noemt de groep niet administrators, maar administrateurs. Met als gevolg dat het script dan vastloopt. Dus ik in denk dat er een if else structuur moet aan toegevoegd worden.

Iets anders dat ik nog zou willen toevoegen is een array met namen die niet gebruikt moeten worden om in het csv bestand te zetten, als administrator en (in ons geval) adminpdc.



'**********************************************
' SCRIPT: LocalAdminGroupMembership.vbs
' AUTHOR: Muaddib :-)
' DATE: 08/21/08
' VERSION: 1.0
' PURPOSE: Used to Query remote computers and enumerate memebers of
' local admin group
' USAGE: 1. List computers to be queried in input.txt (other text file)
' 2. LocalAdminGroupMembership.vbs
' 3. Output file, results.txt will show status
'Revision:
'
'
'**********************************************

Option Explicit

'ON ERROR RESUME NEXT 'Do Not Uncomment until script is ready for production

Dim oWshShell, oFSO, oFileName1, oFilename2, objWMIService, colItems, sProtocol, sSearch, sNWStatus, sDate, iErrNumber
Dim objItem, strComputer, oExec, strPingStdOut, sStatus, bComputerOnline, aComputers, Computer, sOutPutFile, sInPutFile, sComputerStatus
Dim arrFileNAme, sOutPutFileName,objGroup, strOffset

CONST ForReading = 1
CONST ForWriting = 2
CONST ForAppending = 8


'Prompt for name of input file
sInPutFile = INPUTBOX("Enter name of input file. Input file must exist in the script folder.", "Enter Input File Name","vlan.txt" )
IF sInputFile = "" THEN
wscript.echo "Operation was cancelled"
wscript.quit
END IF

'Trim extension from sInputFile1
arrFileNAme = Split(sInPutFile, ".")
sOutPutFileName = UCASE(arrFIleNAme(0))
'Prompt for name of output file
sOutPutFile = INPUTBOX("Enter name of output file. Output file will be placed in script folder.", "Enter Output File Name",sOutPutFileName & "_RESULTS.csv" )
IF sOutPutFile = "" THEN
wscript.echo "Operation was cancelled"
wscript.quit
END IF

Set oWshShell = Wscript.CreateObject("Wscript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")

'Open input file and read
Set oFilename1 = oFSO.OpenTextFile(".\" & sInPutFile, ForReading, False)
iErrNumber = err.number
'Check for missing file
IF iErrNumber = 53 THEN
Wscript.echo "Error - " & sInPutFile & " file was not found."
wscript.quit
END IF

Set oFilename2 = oFSO.OpenTextFile(".\" & sOutPutFile, ForWriting, True)

' OPTIONAL LOG HEADER
'Get date and write it to log
'sDate = Now()
'oFilename2.writeline "Log Started " & sDate
'oFilename2.writeblanklines 1

'Read external list of computers and check their status
DO While oFilename1.AtEndOfStream <> True
strComputer = oFileName1.ReadLine

IF GetComputerStatus(strComputer) = 1 Then
'sComputerStatus = "Online"
Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators,group")
sComputerStatus = EnumGroup(objGroup, "")
Else
sComputerStatus = "Computer Could Not Be Contacted"
End IF

oFilename2.writeline strCOmputer & "," & vbTab & sComputerStatus
Loop

'OPTIONAL LOG FOOTER
'sDate = Now()
'oFilename2.writeblanklines 2
'oFilename2.writeline "Log Completed " & sDate

'Close input file
oFilename1.close
'Close Log file
oFilename2.close

'Wscript.echo "Finished Scanning Computers" 'open log file
oWshShell.run "notepad.exe .\" & sOutPutFile, 5, FALSE

Set oWshShell = Nothing
Set oFSO = Nothing
Set oExec = Nothing
Set oFilename1 = Nothing
Set oFilename2 = Nothing

Function GetComputerStatus (strComputer)
'Function Returns a 1 if computer is available
'Used to determine if a computer is online before
'attempting WMI connection
'IP Address or computer name can be used
Dim sStatus
sStatus = 0
' wscript.echo "Echo strCOmputer - " & strcomputer
Set oWshShell = Wscript.CreateObject("Wscript.Shell")
Set oExec = oWshShell.Exec("ping -n 2 -w 1000 " & strComputer)
strPingStdOut = oExec.StdOut.ReadAll
If InStr(1,strPingStdOut, "reply from ",1) <> 0 Then
sStatus = 1
Else
sStatus = 0
End IF
GetComputerStatus = sStatus
END FUNCTION

Function EnumGroup(objGroup, strOffset)
Dim objMember, strMembers
For Each objMember In objGroup.Members
strMembers = strmembers & strOffset & objMember.Name & ", "
Next
EnumGroup = strMembers
End Function


Kan iemand me hier misschien mee helpen?

Alvast bedankt,
Jvuz