Script para fazer inventário dos sistemas operacionais e service pack através do AD
O Active Directroy armazena uma série de informações dos objetos que pode ser utilizadas para, por exemplo, fazer um inventário de sistemas operacionais e service pack aplicado na sua empresa.
Para isso utilizo um script VBS que lê algumas destas propriedades dos objetos computadores e gera um arquivo TXT. Este arquivo texto pode ser importado para o Excel e através de uma Tabela dinâmica (Pivot Table) gerar um relatório semelhante a este.
No script abaixo, altere as linhas 5, informando o caminho completo onde será salvo o arquivo txt e a linha 16 com o caminho LDAP do seu domínio, no meu exemplo o domínio se chama hunecke.net.
Linha 5: Set objLogFile = objFSO.OpenTextFile("C:\windows\temp\Desk_OS.txt", ForAppending, True)
Linha 16: objCommand.CommandText = "Select Name, OperatingSystem, OperatingSystemServicePack from 'LDAP://DC=hunecke,DC=net' where objectClass='computer'"
rem --------------------------------------------
Const ADS_SCOPE_SUBTREE = 2
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile("C:\windows\temp\Desk_OS.txt", ForAppending, True)
objLogFile.Write("ComputerName;OperationSystem;ServicePack")
objLogFile.WriteLine
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = "Select Name, OperatingSystem, OperatingSystemServicePack from 'LDAP://DC=hunecke,DC=net' where objectClass='computer'"
objCommand.Properties("Page Size") = 50000
objCommand.Properties("Timeout") = 30
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
objLogFile.Write(objRecordSet.Fields("Name").Value & ";")
If objRecordSet.Fields("OperatingSystem").Value <> " " Then
objLogFile.Write(objRecordSet.Fields("OperatingSystem").Value & ";")
else
objLogFile.Write(";")
End if
If objRecordSet.Fields("OperatingSystemServicePack").Value <> " " Then
objLogFile.Write(objRecordSet.Fields("OperatingSystemServicePack").Value)
End if
objRecordSet.MoveNext
objLogFile.WriteLine
Loop
objLogFile.WriteLine
objLogFile.WriteLine
rem --------------------------------------------