我的域控制器上有一个小脚本,它通过SMTP向我发送有关最新安全事件4740的电子邮件。
脚本手动执行时,将按预期运行; 但是,当设置为通过计划任务运行时,尽pipe显示已经执行,但没有任何反应(没有电子邮件)。
脚本如下:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "& '" + $myinvocation.mycommand.definition + "'" Start-Process powershell -Verb runAs -ArgumentList $arguments Break } $Event = Get-EventLog -LogName Security -InstanceId 4740 -Newest 5 $MailBody= $Event.Message + "`r`n`t" + $Event.TimeGenerated $MailSubject= "Security Event 4740 - Detected" $SmtpClient = New-Object system.net.mail.smtpClient $SmtpClient.host = "smtp.domain.com" $MailMessage = New-Object system.net.mail.mailmessage $MailMessage.from = "fromemail@domain.com" $MailMessage.To.add("toemail.domain.com") $MailMessage.IsBodyHtml = 1 $MailMessage.Subject = $MailSubject $MailMessage.Body = $MailBody $SmtpClient.Send($MailMessage)
计划任务设置如下:
RunsAs:LOCAL SYSTEM Trigger: On event - Log: Security, Event ID: 4740 Action: Start Program - C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe Argument: -executionpolicy bypass c:\path\event4740.ps1
我也尝试了以下几点:
Trigger: On event - Log: Security, Event ID: 4740 Action: Start Program - C:\path\event4740.ps1
根据任务历史logging:任务开始,操作启动,创build任务过程,完成操作,任务完成。 我已经通过网站上的一些相同的“问题”的各种链接,但他们似乎都有某种我没有的变数。 我也尝试了一些提到的解决scheme,认为它们可能有些相关,但是唉,什么都没有起作用。 我甚至尝试删除我的计划任务,并重新设置它在这里提到: http : //blogs.technet.com/b/heyscriptingguy/archive/2012/08/11/weekend-scripter-use-the-windows-task-scheduler -to-运行一个窗口,PowerShell的script.aspx
有没有人遇到这种types的错误之前,或知道如何绕过这个问题?
故障排除:
我决定尝试通过计划的任务调用一个.bat文件。 我创build了一个简单的文件,将当前date/时间回显到受监视的文件夹。 手动运行文件并通过4740事件触发的任务实现了预期的结果。 将.bat文件更改为手动调用.ps1文件。 当由4740事件触发时,现在.bat将不再运行。
将您的操作更改为:
powershell -noprofile -executionpolicy bypass -file C:\path\event4740.ps1
编辑:更新
在Windows 2008服务器R2上:在“常规”选项卡下的“任务计划程序”中 – 确保将runAs用户设置为具有执行脚本所需的正确权限的帐户。
此外,我相信你有“只有当用户登录”运行选项签出。 将其更改为“运行用户是否已登录”。 不要选中不存储密码选项,你可能需要标记“运行最高权限”选项。
虽然你可能已经找到了解决你的问题的办法,但是我仍然会发布这个笔记来让别人受益。 我遇到了类似的问题。 我基本上使用不同的域帐户来测试和比较。 任务运行得很好,选中“运行用户是否登录”。
有几件事要牢记,并确保:
检查提供的链接,希望你或其他人可以从这个信息中受益。 注意安全。
https://technet.microsoft.com/en-us/library/cc722152.aspx
除了上面的建议,我得到错误,并找到解决方案,在以下链接http://blog.vanmeeuwen-online.nl/2012/12/error-value-2147942523-on-scheduled.html 。
这也可以帮助:
在任务计划程序中,单击计划的作业属性,然后单击设置。
在最后列出的选项中:“如果任务已经在运行,则下列规则适用:”从下拉列表中选择“停止现有实例”。
我想这个答案也是相关的:
为什么我的预定任务正确更新了“上次运行时间”,并给出了“(0x0)”的“最后运行结果”,但实际上还没有工作?
摘要: Windows 2012计划任务没有看到任务设置为运行的帐户的正确环境变量(包括PATH
。 但是,你可以测试一下,如果正在发生,一旦你明白发生了什么,你可以解决它。
要实现“以管理员身份运行”功能,我实现了以下标志:
-ExecutionPolicy Bypass
这只在执行Powershell文件时才起作用。 所以我把我的命令放到.ps1文件中,用-ExecutionPolicy Bypass运行它,现在我的计划任务按预期工作。
Program: Powershell.exe Add Arguments: -ExecutionPolicy Bypass -File C:\pscommandFile.ps1
找到适用于我的方案的成功解决方法:
不要注销,只要锁定会话!
由于此脚本在域控制器上运行,因此我通过远程桌面控制台登录到服务器,然后注销服务器以终止会话。 在任务计划程序中设置任务时,我使用的是无权访问的用户帐户和本地服务以脱机模式运行,或严格登录以运行脚本。
感谢Cole的一些故障排除帮助,我想到了RunAs函数,并决定尝试解决无法正常工作的登录。
从任务计划程序开始,我删除了手动创建的任务。 使用server 2008 R2中的新功能,我导航到事件查看器中的4740安全事件,并使用右键单击>将任务附加到此事件,然后按照提示操作,指向“操作”页面上的脚本。 任务创建后,我锁定了会话并终止了远程桌面控制台连接。 通过配置文件“锁定”而不是注销,一切都像它应该的工作。
我遇到了几乎相同的问题,但在server 2012 R2上略有不同。 我在Task Scheduler中有一个PowerShell脚本,可以将3个文件从一个位置复制到另一个位置。 如果我从PowerShell手动运行脚本,它就像一个魅力。 但从Task Scheduler运行时,它只复制前两个小文件,然后挂在第三个(大文件)。 而且我也得到了“操作员或管理员拒绝请求”的结果。 而且我在这个论坛上做了几乎所有的事情。
这是情景,我是如何为我修复的。 可能不适用于其他人,但以防万一:
方案:1.任务计划程序中的Powershell脚本2.使用服务器上本地管理员的域帐户3.选择“运行用户是否登录”4.运行最高权限
修复:1.我必须使用域帐户登录到服务器,以便它在C:\ Users中创建一个本地配置文件。 2.检查并使用户能够访问我在脚本中引用的所有驱动器
我相信#1是我的主要修补程序。 我希望这对其他人有用。
如果发现以下情况,我终于徘徊了两天,
1)使powershell.exe以管理员身份运行
2)在actin窗格下的任务计划程序窗口中,将以下脚本作为新命令添加
%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe -NoLogo -NonInteractive -ExecutionPolicy Bypass -noexit -File "C:\ps1\BackUp.ps1"
请确保参数是由Cole9350提到的小写
如果你在WIN 10下遇到这个问题,这可能会解决你的问题。 一个更新搞砸了任务调度。
这个评论解决了我的问题。
“关于”一次性“任务的提示非常有用 – 在MS解决问题之前,这将是一个解决方法。 就我所能看到的,“每日”的唯一优点是缺少与运行时间相关的任意日期。 这可能会让其他人困惑,为什么这个工作将在X日开始。
触发设置“Einmal”意思是“一次”,“Sofort”意思是“一次”
在我的情况下(同样的问题)帮助添加-NoProfile在任务操作命令参数,并选中复选框“以最高权限运行”,因为我的服务器上UAC是(活动)。
更多关于它的信息在这里输入链接描述
尝试了很多时间之后…
任务计划程序:powershell.exe -noexit&。\ your_script.ps1
一定要把你的脚本放在这个文件夹中:windows \ system32
祝你好运 !