我正在尝试在vbscript中创建一个简单的小脚本,如果有人远程连接到计算机和他离开时,它将在后台和日志中运行。
到目前为止我做了这个,如果我手动运行脚本但是我希望它在后台循环并将详细信息写入日志,它就可以工作。
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set myLog = objFSO.OpenTextFile("rdcmonitor.log",2, True)
Set oShell = CreateObject("WScript.Shell")
lastses="CONSOLE"
While True
WScript.Sleep(1000)
strSessionName = oShell.ExpandEnvironmentStrings("%SessionName%")
if lastses <> Ucase(strSessionName) then
lastses = Ucase(strSessionName)
myLog.WriteLine vbLongDate & " __ session change (" & lastses & ")"
End If
Wend
我想让它在vbscript中运行。
有什么想法吗?仅在启动脚本时是否需要“%SessionName%”?或者它以某种方式绑定到谁运行它。
修改
也以@AlexK的方式尝试过。建议......但我似乎无法进入那些日志事件但是如果我手动查看记录事件,我会看到它们。
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set myLog = objFSO.OpenTextFile("temp.log",2, True)
strComputer = "."
'Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Security)}!\\" & strComputer & "\root\cimv2")
'Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent WHERE LogFile='Microsoft-Windows-TerminalServices-LocalSessionManager' ")
Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent")
'Set colItems = objWMIService.ExecQuery("Select * from Win32_NTLogEvent Where Logfile = 'Microsoft-Windows-TerminalServices-LocalSessionManager/Operational'")
myLog.WriteLine "."
For Each objEvent in colItems
If objEvent.EventCode = 21 Then
myLog.WriteLine "************"
myLog.WriteLine "should be..."
End If
Next
msgbox("done")