POWERSHELL 计划任务的创建,收集DC中失败的登录信息并邮件通知

Posted 同情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POWERSHELL 计划任务的创建,收集DC中失败的登录信息并邮件通知相关的知识,希望对你有一定的参考价值。

(注:本文参考以下前辈文章修改而来,源文章连接:http://itadmindev.blogspot.hk/2011/07/powershell-ad-dc-failed-logins-report.html

原脚本只用于收集统计AD,过去一天时内,EventID为4625帐户登录失败的IP、主机名及登录次数。

EventID对应的内容可参考以下内容:http://support.microsoft.com/kb/947226/zh-cn

我现在依需求,修改为需要收集过去一天内,ID为4771:Kerberos预身份验证失败的信息,主要是指AD中认证失败的账号、客户端,并发邮件通知到指邮箱。

1、启用DC的Audit功能

修改GPO,针对DefaultDomainControllerPolicy,启用Auditaccountlogonevents/Auditlogonevents

 

2、修改powershell执行策略

因为默认PowerShell策略是不能执行未经签名的PS1,当我们直接调用时,会出现如下错误:

 

可参考说明KB:

http://technet.microsoft.com/zh-CN/library/hh847748.aspx

http://technet.microsoft.com/zh-cn/library/ee176949.aspx

而我们自已修改编辑的PS脚本是未经认证的,所以需要修改策略,方法如下:

1)先查看当前的执行策略:Get-ExecutionPolicy

显示为:Restricted,即只能执行经注册的PS脚本。

2)修改执行策略为Remotesigned:Set-Exectionpolicyremotesigned

然后输入”Y”确认修改。

3)再次查看当前执行策略:Get-ExecutionPolicy,

已显示为:RemoteSigned

 

3、下载、修改PowerShell代码

附件PS中,请自行修改以下内容:

1)DCName

PS脚本中第25行括号中为你现有DC名,如果有多台,请手动修改为你实际的DC名称,如:DC001,DC002

[email protected]("dc001",”dc002”)

2)SMTP设置部分

PS脚本中第134-136行修改为发件人、收件人的邮件地址和内部SMTP服务器的主机名或是IP地址:如下:

From="[email protected]"

To="[email protected]"

SmtpServer="mail.sysmicro.cn"

以上PS脚本修改好后,先手动执行,确保能正常后执行,没有错误后,保存为*.ps1文件,以方便随时调用!

4、将PowerShell加入到计划任务中,自动运行。

如果需要设定每天固定时间运行,将前一天认证失败的信息邮件方式通知指定人员,则可以用创建计划任务的方式,指定固定时间运行,具体方法可以参考:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler-to-run-a-windows-powershell-script.aspx

1)创建计划任

Start\Allprograms\administrativetools\TaskScheduler,在右边选择CreatebasicTask…

 

2)在创建的任务名称中,输入你相要的名称,如:ADFailedLogonReport,然后下一步:

 

3)任务运行时间,选择Daily,然后下一步;

 

4)选择每天运行的时间,依你需求,定义好后,下一步:

 

5)在Action选项中,选择:StartProgram,然后下一步:

 

6)在Program/Script,点击Browse,选择刚才第3步中保存的.PS1文件,然后在修改为:Powershell–file”D:\Script\AD_DCs_Failed_Login_Report_4771_51cto.ps1”,然后下一步:

 

7)在弹出的TaskScheduler中选择“Yes”

 

8)在Finish中勾选:OpenthepropertiesdialogfortaskwhenIclickfinish,然后点击完成

 

9)完成后,可以预览任务属性,在General中,选择:Runwhetheruserisloggedonornot,即用户是否登录时,都执行此任务,点击OK后完成退出!

 

说明:以上以上方法供大家参考,大家可以修改需要的EventID查询你想要的信息!

经在我所在的工作环境中测试,效果不错,如果过去一天中,没有失败的认证,收到的邮件为一个空白的表,如下:

 

如果过去一天中,有失败的认证,则能显示具体的IP、账号、失败的次数,管理员刚可依此信息对相应IP地址的电脑、账号进行检查,以排除安全隐患!

 

以上是关于POWERSHELL 计划任务的创建,收集DC中失败的登录信息并邮件通知的主要内容,如果未能解决你的问题,请参考以下文章

powershell PowerShell脚本,用于创建在计算机启动时运行choco升级的计划任务

Powershell生成的计划任务在运行时啥都不做

PowerShell 脚本不会作为 Windows 计划任务执行

如何在Oracle中管理计划任务

如何在具有管理员权限的 Windows 任务计划程序中设置 Powershell 脚本?

使用Powershell管理Windows计划任务

(c)2006-2024 SYSTEM All Rights Reserved IT常识