我有两个batch file发送电子邮件旨在通知服务器关机或启动。 batch file调用带有单个参数的exe文件,要发送的消息。 该exe文件来自使用system.net.mail的vb.net程序。
batch file在命令提示符下正常工作并收到电子邮件。
现在,我希望这些batch file在操作系统启动时以及操作系统正在closures时自动运行,而无需任何用户login。
我试图在Win 8.1机器上testing这个,我相信它应该和Server 2012 R2一样。 如果这是一个错误的假设,请告知。
所以这是我的尝试:
1)任务计划程序(但仅用于启动,没有关机选项)
2)本地组策略编辑器>计算机configuration> Windows设置>脚本(启动/closures)
在这两种情况下,设置看起来非常简单,但电子邮件永远不会被发送。
有人能给我关于我明显没有想到的考虑的想法吗?
是问题的权限? 我怎么知道?
问题是“它看起来安排,但不是”?
batch file不能以这种方式使用的问题?
由于这是我第一次这样做,我很确定我错过了一些基本的东西。
这实际上不是一个答案,由于下面提到的两个限制,但它太长的评论,所以..
我做了一个简单的testing,有以下两个缺点:
在Local Group Policy Editor > Computer Configuration > Windows Settings > Scripts (Startup/Shutdown) ,我已经把startup目录中的一个启动powershell脚本和shutdown目录中的一个shutdown powershell脚本。
我特别注意在每个启动和closures策略节点内的Powershell Scripts选项卡下添加脚本。
我已经确定我有一个名为c:\temp的目录,因为我懒得编写它的存在。
我也确保PowerShell脚本允许运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
这是启动脚本:
if (!(Test-Path c:\temp\log.txt)) {New-Item -ItemType file -Path c:\temp\log.txt} $timestamp = get-date $string = "$timestamp UP!" $string | Out-File -FilePath c:\temp\log.txt -Append -NoClobber
这是关机脚本:
if (!(Test-Path c:\temp\log.txt)) {New-Item -ItemType file -Path c:\temp\log.txt} $timestamp = get-date $string = "$timestamp DOWN!" $string | Out-File -FilePath c:\temp\log.txt -Append -NoClobber
然后我重新启动电脑。 这里是c:\temp\log.txt文件的内容:
06/01/2015 00:07:45 DOWN! 06/01/2015 00:08:10 UP!
我期望有相同的结果发送邮件,但是一个不能确定,直到一个实际上尝试..
学习和使用每个人的意见和答案实际上帮助解决了我的问题,但有时真实的问题有些不同。 所以,如果有人被同样的“陷阱”所困住,我觉得自己有义务发布对我来说真正的问题。
在脚本testing中,在我的Win 8.1机器上工作似乎更方便; 事实certificate,这不是。 我以为我的Win 8.1机器实际上与服务器2012 R2的工作方式相同; 我的假设是错误的。
我把所有的东西都转移到了我的2012 R2服务器上,这些脚本完美无缺地运行起来。 我无法解释为什么Win 8.1的机器反应不同,它只是。
所以我的解决scheme是不再使用Win 8或8.1机器来testing启动/closures脚本,只需在目标服务器上执行即可。
(对不起,迟到的回复,我出差了)
转到eventviewer,searchlogin和注销安全事件,右键单击它,并添加一个任务发送此电子邮件的事件。
它是最好的方法。