Нужна помощь в получении информации для входа на сервер windows с помощью vbscript - PullRequest
0 голосов
/ 10 апреля 2020

Мне нужно получить информацию о том, кто все вошел на мои серверы через RDP за последние n дней. Я нашел скрипт на сайте и изменил его в соответствии с моими требованиями. Я могу перебирать несколько серверов, получать подпапки и записывать результаты в текстовый файл. Единственная проблема в том, что я не могу применить фильтр даты, я хочу перечислить подпапки в папке C: \ Users для определенного диапазона дат c. Я просто любитель в VBScript, может кто-нибудь помочь мне здесь, ниже сценарий:

Dim comparray(1)
Dim Item, objWMIService, colSubfolders, objFolder

Set objFSO=CreateObject("Scripting.FileSystemObject")

outFile="MyPath\Results.txt"

Set objFile = objFSO.CreateTextFile(outFile,True)

comparray(0)= "Server1"
comparray(1)= "Server2"

For Each Item in comparray

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & Item & "\root\cimv2")

Set colSubfolders = objWMIService.ExecQuery _
    ("Associators of {Win32_Directory.Name='c:\users'} " _
        & "Where AssocClass = Win32_Subdirectory " _
            & "ResultRole = PartComponent") 
For Each objFolder in colSubfolders
    'Wscript.Echo objFolder.Name & Item
    objFile.WriteLine objFolder.Name & ":" & Item
Next
Next

Я пытаюсь другой сценарий, но с этим сценарием я не могу перебрать серверы, он дает мне результаты для только один сервер, хотя я упомянул два сервера. Я не могу определить, куда следует поместить блок для массива серверов, ниже приведен второй скрипт:

Set objFSO=CreateObject("Scripting.FileSystemObject")

outFile="MyPath\Results.txt"

Set objFile = objFSO.CreateTextFile(outFile,True)

showfolderlist "C:\Users"

Sub ShowFolderList(folderspec)
    Dim Item, fs, f, f1, fc, s, t
    Dim comparray(1)
    comparray(0)= "server1"
    comparray(1)= "server2"
    For Each Item in comparray
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFolder(folderspec)
    Set fc = f.SubFolders
    t = (DateAdd("d",-1,"03-25-2020"))
    For Each f1 in fc
    If f1.datelastmodified > t Then
        s = s & f1.name & " - " & f1.datelastmodified
    s = s &  vbCrLf 
    objFile.WriteLine Item & ":" & vbCrLf & s
        End If
    Next
    Next
End Sub

1 Ответ

0 голосов
/ 15 апреля 2020

Наконец я смог использовать свойство LastModified класса Win32_Directory, и я смог найти папки с указанным c диапазоном дат.

If objFolder.LastModified > "20200319101621.666501-240" Then
    'Wscript.Echo objFolder.Name & Item
    objFile.WriteLine Item & "|" & objFolder.Name & "|" &         WMIDateStringToDate(objFolder.LastModified)
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...