0

我编写了一个 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 在远程登录会话上执行,如下所示

在此处输入图像描述

我已将其配置为为任何用户的远程登录执行它:

在此处输入图像描述

在上面的窗口上单击“确定”后,我得到下面的窗口,要求用户帐户用于此任务:

在此处输入图像描述

但是我只有在我在上面的窗口中指定的用户远程登录后才会收到邮件,即使我已经指定为任何用户执行事件,如第二张图片所示。

Q.1如何在任何用户登录时自动发送邮件,为什么它只在我在第三张图片中指定的一个用户登录时发送邮件

Q.2我也发现这种方式不安全,因为它是在我想要监控远程登录的机器上配置的。这台机器在由 Windows Server 2008 管理的 AD 中。当在客户端机器上发生远程登录时,如何在服务器(而不是客户端机器)上进行配置以发送邮件。

4

1 回答 1

0

事实上,您在任何使用登录后都会发送邮件消息。但是,作为

  1. 计划任务在特定用户的凭据下运行,并且

  2. 您的脚本获取运行脚本的会话的用户名,并且

  3. 此会话是任务调度程序中配置的会话,并且

  4. 这是您的特定用户,

... 你能看见它吗?剧本不行。它看不到真正的用户。

最好的选择可能是配置一个登录脚本,该脚本在真实用户帐户下运行,并从中调用脚本。

或者,您可以启用审核并在安全事件日志中记录登录事件。然后您可以分析日志。

于 2013-10-18T19:33:47.327 回答