Visual basic script to parse AdFind results on windows.
Код:
Option Explicit
Dim OUTPATH, F1INPATH, F2INPATH, F2OUTPATH
OUTPATH = "sorted"
F1INPATH = "ad_computers.txt"
F2INPATH = "ad_users.txt"
F2OUTPATH = "ad_users_result.txt"
If Not FolderExists(OUTPATH) Then
CreateFolder OUTPATH
End If
Call ParseComputers(F1INPATH, OUTPATH)
Call ParseUsers(F2INPATH, OUTPATH, F2OUTPATH)
Sub ParseComputers(F1INPATH, OUTPATH)
Dim fso, inputFile, line, OSPATH, tmp
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(F1INPATH) Then
WScript.Echo "Error: File " & F1INPATH & " does not exist."
Exit Sub
End If
Set inputFile = fso.OpenTextFile(F1INPATH, 1)
Do Until inputFile.AtEndOfStream
line = inputFile.ReadLine
If Left(line, 17) = ">operatingSystem:" Then
OSPATH = Mid(line, 18)
End If
If Left(line, 13) = ">dNSHostName:" Then
If Left(OSPATH, 14) = "Windows Server" Then
WriteToFile OUTPATH & "\SERVERS.txt", Mid(line, 14)
tmp = Split(OSPATH, " ")
WriteToFile OUTPATH & "\" & Join(TempArray(tmp, 3), " ") & ".txt", Mid(line, 14)
Else
WriteToFile OUTPATH & "\WORKERS.txt", Mid(line, 14)
tmp = Split(OSPATH, " ")
WriteToFile OUTPATH & "\" & Join(TempArray(tmp, 2), " ") & ".txt", Mid(line, 14)
End If
End If
Loop
inputFile.Close
End Sub
Sub ParseUsers(F2INPATH, OUTPATH, F2OUTPATH)
Dim fso, inputFile, line, DECR, ACCNAME
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(F2INPATH) Then
WScript.Echo "Error: File " & F2INPATH & " does not exist."
Exit Sub
End If
Set inputFile = fso.OpenTextFile(F2INPATH, 1)
Do Until inputFile.AtEndOfStream
line = inputFile.ReadLine
If Left(line, 13) = ">description:" Then
DECR = Mid(line, 14)
DECR = TrimDescription(DECR)
End If
If Left(line, 16) = ">sAMAccountName:" Then
ACCNAME = Mid(line, 17)
ACCNAME = TrimDescription(ACCNAME)
WriteToFile OUTPATH & "\" & F2OUTPATH, ACCNAME & ":" & DECR
End If
Loop
inputFile.Close
End Sub
Sub WriteToFile(FilePath, content)
Dim fso, file
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(FilePath) Then
Set file = fso.CreateTextFile(FilePath, True)
Else
Set file = fso.OpenTextFile(FilePath, 8, True)
End If
file.WriteLine content
file.Close
End Sub
Function FolderExists(FolderPath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
FolderExists = fso.FolderExists(FolderPath)
End Function
Sub CreateFolder(FolderPath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateFolder FolderPath
End Sub
Function TrimDescription(str)
TrimDescription = Trim(str)
If Right(TrimDescription, 1) = Chr(13) Then
TrimDescription = Left(TrimDescription, Len(TrimDescription) - 1)
End If
End Function
Function TempArray(arr, count)
Dim temp(), i
ReDim temp(count - 1)
For i = 0 To count - 1
temp(i) = arr(i)
Next
TempArray = temp
End Function