2014-02-26 4 views
1

vbscript를 처음 사용합니다.vbscript 값에 대한 명령 줄 읽기

총 25 대의 컴퓨터에 대해 vbscript를 통해 psloggedon.exe를 실행하고 있습니다. "로컬로 로그온 한 사용자"라는 줄을 확인하고 "로컬로 로그온 한 사용자"또는 "아무도 로컬로 로그온하지 않았습니다"라고 표시되는지 확인해야합니다.

사용자가 로그인했다면 컴퓨터 이름과 함께 텍스트 파일에 기록해야합니다. 아무도 로그온하지 않는다고 말하면 컴퓨터 이름을 같은 텍스트 파일에 쓰고 "사용 가능"이라고 말하면됩니다. 루프를 통해 25 대의 모든 기계 목록을 얻었습니다. 나는 그 한 줄로 가서 그것이 무엇을 말하고 있는지를 알아내는 것을 짐작할 수 있습니다.

PsLoggedon v1.34 - See who's logged on 
Copyright (C) 2000-2010 Mark Russinovich 
Sysinternals - www.sysinternals.com 

Users logged on locally: 
    2/19/2014 8:56:35 AM  DOMAIN\John.Smith 

Users logged on via resource shares: 
    2/26/2014 10:09:07 AM  DOMAIN\John.Smith 

코드 발췌 : 지금까지 필자받은 약

Dim ObjExec 
    Dim strFromProc 
    Dim MachineNum 


    MachineNum = 1 

    Set objShell = CreateObject("WScript.Shell") 
    Set ObjExec = objShell.Exec("cmd /K CD F:\QA & LabQwinsta") 

    Do 

     strFromProc = ObjExec.Stdout.Readall() 
     msgbox strFromProc 

     document.write(strFromProc) 

이잖아. 이 시점에서 텍스트 파일에 everyline이 표시됩니다.

+0

코드를 표시하고 문제가 어디에 있는지 알려 주시면 문제를 해결할 수 있도록 도와 드리겠습니다. – aphoria

+0

나는 당신이'PSLOGGEDON'에게 전화하는 것을 보지 못했다. – aphoria

+0

미안하지만 세부 사항을 남겼습니다. F : \ QA \ LabQwinsta.cmd에있는 .cmd 파일이 있습니다. 그것은 PSLOGGEDON의 25 번의 반복을 실행합니다. 그것은 올바르게 작동하고 위의 출력을 제공합니다. 출력을 분석하고 누군가가 기계에 로그인했는지 여부에 따라 결정해야합니다. – Fairbanks

답변

0

출력을 배열로 나눈 다음 줄마다 한 줄씩 이동하여 필요한 텍스트를 찾을 수 있습니다.

lines = Split(strFromProc, vbCrLf) 
For i = 0 To UBound(lines, 1) 
    If lines(i) = "Users logged on locally" Then 
    ' Do your stuff 
    End If 
Next 
0

당신은 PSLOGGEDON의 출력을 구문 분석 RegExp 개체를 사용할 수 있지만 그것은 단지 알려진 문자열을 테스트하는 것이 더 쉽습니다. InStr()을 사용하거나 아래 예와 같이 처음 몇 자만 테스트 할 수 있습니다. 또한

, 우리는 (이 명령의 출력에 포함되지 않은 것), 우리는뿐만 아니라에서 구문 분석하려고의도, 사용자 이름을 반환하는 데 사용할 수있는 PC의 이름을 가져 어쨌든 Network 객체를해야하기 때문에 PSLOGGEDON의 출력.

With CreateObject("WScript.Network") 
    strPC = .ComputerName 
    strUser = .UserName 
End With 

If StrComp(Left(strFromProc, 15), "Users logged on") = 0 Then 
    MsgBox strUser & " is logged into " & strPC 
Else 
    MsgBox strPC & " is available" 
End If