我是vbscript的新手。
我通过vbscript运行psloggedon.exe,共计25台计算机。我需要查看“本地用户登录”的行,看看是否显示“用户本地登录”或“没有人在本地登录”。
如果它说用户已登录,我需要将其写入文本文件以及计算机名称。如果没有人登录,我需要将计算机名称写入同一文本文件并说“可用”。我循环并列出了所有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)
到目前为止我已经得到了。此时只显示文本文件中的每一行。
答案 0 :(得分: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
答案 1 :(得分:0)
您可以使用RegExp
对象来解析PSLOGGEDON的输出,但更容易测试已知的字符串。您可以使用InStr()
或者,如下例所示,您可以只测试前几个字符。
另外,既然我们需要一个Network
对象来获取PC名称(它不包含在命令的输出中),我们也可以使用它来返回用户名,而不是尝试从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