我写了一个VBScript,当用户登录到计算机时发送邮件:
Set objMessage = CreateObject("CDO.Message")
objMessage.Subject = "Example CDO Message"
objMessage.From = "admin@domain.com"
objMessage.To = "admin@domain.com"
Set objNet = CreateObject("WScript.NetWork")
strInfo1 = " " & objNet.UserName & "@" & objNet.UserDomain & " is logged on to machine: " & objNet.ComputerName & " on " & Date() & " " & Time() & "." & vbCRLF
objMessage.TextBody = " " & strInfo1
'specify mechanism to send mail -2 for using port
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'specifying exchange server machine as smtp server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "exchangeserver.domain.com"
'port for SMTP server
objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'end message configuration
objMessage.Configuration.Fields.Update
objMessage.Send
我已指定此vbs通过create event task scheduler在远程登录会话上执行,如下所示
我已将其配置为执行任何用户的远程登录:
在上面的窗口中单击“确定”后,我在下面的窗口中询问用于此任务的用户帐户:
但是我在远程登录我在上面窗口中指定的用户后才收到邮件,即使我已经指定为第二张图片中的任何用户执行该事件。
Q.1 如何在任何用户的用户登录时自动发送邮件,为什么只在我第三张图片中指定的一个用户登录时发送邮件
Q.2 此外,我发现这种方式不安全,因为它是在我要监视远程登录的计算机上配置的。本机由Windows Server 2008管理。在客户端计算机上进行远程登录时,如何在服务器(而非客户端计算机)上进行配置以发送邮件。
答案 0 :(得分:0)
事实上,您在使用登录后发送邮件。但是,正如
计划任务在特定用户的凭据下运行,
您的脚本获取运行脚本的会话的用户名,
此会话是任务计划程序中配置的会话,
这是您的特定用户,
......你能看到吗?脚本不能。它没有看到真正的用户。
最好的选择可能是配置一个登录脚本,该脚本在真实用户帐户下运行,并从中调用脚本。
或者您可以在安全事件日志中启用审核并记录登录事件。然后你可以分析日志。