Script em vbs gera uma lista dos usuários logados em qual computador

Esta semana precisei de um script que me mostrasse qual usuário estava logado em qual estação de trabalho da rede.
Pesquisando an internet achei este aqui no forum do Mark Minasi(é o cara do windão)
http://x220.minasi.com/forum/post.asp?method=TopicQuote&TOPIC_ID=3301&FORUM_ID=30
Você precisa criar um arquivo txt com as maquinas que você quer obter o resultado.
O script gera uma lista com os seguintes resultados.
hostname: Domain\username -> Encontrou o usuário
hostname: Host Unreachable -> Não encontrou o host
hostname: No user -> Não existe usuario logado atualmete.

Segue script abaixo.
Por favor não retire os créditos do desenvolvedor.

‘********************************************************************
‘* File: GetUser.vbs
‘* Created: November 2003
‘* Version 1.0
‘*
‘* Main Function: Retrieves current logged on user name for computer
‘* names from input file named compname.txt
‘* Results are written to a log file
‘*http://x220.minasi.com/forum/post.asp?method=TopicQuote&TOPIC_ID=3301&FORUM_ID=30
‘*
‘********************************************************************

Option Explicit

Dim sDate
Dim strTime
Dim strDate
Dim strDataIn ‘Input list from text file
Dim aryData ‘Array to hold input stream
Dim iCounter ‘Iterative loop counter
dim strOUT ‘Output file
Dim oWshShell ‘Windows shell script
Dim objFSO ‘Scripting File System
Dim objFile ‘Open text file
Dim strFilePath ‘Path to current directory
Dim strPCName ‘Computer names extracted for input file
Dim strRet

Set oWshShell = CreateObject(“WScript.Shell”)
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
strFilePath = objFSO.GetAbsolutePathName(“.”)

‘First step: read file into a variable
strDataIn = f_r(strFilePath & “\compname.txt”)

aryData = Split(strDataIn,vbCrLf) ‘ this creates an array

oWshShell.Popup Ubound(aryData) + 1 & ” Hosts/Addresses in list.” & Chr(13) & “User query is underway.”,2,”Notice”,64
sDate = Date
strTime = Now
StrDate = DatePart(“m”,sDate) & “.” & DatePart(“d”,sDate) & “.” & Hour(strTime) & “.” & Minute(strTime)
set strOUT = objFSO.CreateTextFile(strFilePath & “\UsernameResults.” & strDate & “.log”)

For iCounter = 0 to Ubound(aryData)
aryData(iCounter) = Trim(aryData(iCounter)) ‘ clean “white space”
strPCName = GetUsr(aryData(iCounter))
strOUT.Write aryData(iCounter) & “: ” & strRet & vbcrlf

Next

strOUT.Close

set strOUT = nothing
set objFSO = nothing

oWshShell.Popup “Processing complete.”,5,”Notice”,64

wscript.quit

‘********************************************************************************
‘* Function f_r(FilePath) *
‘* *
‘* Given the path to a file, this function will return entire contents *
‘* *
‘********************************************************************************

Function f_r(FilePath)
Dim FSO
set FSO = CreateObject(“Scripting.FileSystemObject”)

f_r = FSO.OpenTextFile(FilePath,1).ReadAll

End Function

Function GetUsr(strComputerName)

Dim WMIServices
Dim objUserSet
Dim User

WMIServices = “winmgmts:{impersonationLevel=impersonate}!//”& strComputerName &””

On Error Resume Next
Set objUserSet = GetObject( WMIServices ).InstancesOf (“Win32_ComputerSystem”)

If Err.number 0 Then

If Err.Number = “-2147217405” Then

strRet = “Access Denied”

ElseIf Err.Number = “462” Then

strRet = “Host Unreachable”

Else

strRet = “Computer does not respond. “

End If

Else

for each User in objUserSet

If User.UserName “” Then

strRet = User.UserName

Else

strRet = “No user”

End If

Next

End If

End Function

Anúncios

No comments yet

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: