这可能很简单,但我努力寻找“如何做”,却没有找到任何答案。所以,我的问题是,“如何找到激活我的 Powershell 脚本的计划任务名称”
因此,我在 Windows 2012 R2 服务器上配置了一个计划任务,它运行一个 XYZ 程序,还执行一个 Powershell 脚本来发送电子邮件通知,其中任务名称在脚本内硬编码。
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = "smtp.mydomain.com"
$mailmessage.from = ("[email protected]")
$mailmessage.To.add("[email protected]")
$mailmessage.Subject = “Task XYZ has started”
$mailmessage.Body = “This is to notify that task XYZ has been started”
$smtpclient.Send($mailmessage)
现在,我有 100 个不同的任务需要此电子邮件通知,并且我只需使用一个 PowerShell 脚本即可触发电子邮件。此电子邮件应包含计划任务的名称,以便了解哪个任务已开始运行并收到电子邮件通知。
那么,是否有任何内置的 Powershell 变量/函数来查找执行我的 Powershell 脚本的计划任务的名称?
答案1
谢谢西蒙斯在评论中提供解决方案。以下是我为将来想要这样做的人所做的 -
我修改了我的 Powershell 脚本如下 -
Function Send_Email([string[]$TaskName)
{
$SmtpClient = new-object system.net.mail.smtpClient
$MailMessage = New-Object system.net.mail.mailmessage
$SmtpClient.Host = "smtp.mydomain.com"
$mailmessage.from = ("[email protected]")
$mailmessage.To.add("[email protected]")
$mailmessage.Subject = “Task $TaskName has started”
$mailmessage.Body = “This is to notify that task $TaskName has been started”
$smtpclient.Send($mailmessage)
}
Send_Email $args
现在,在计划任务中我定义了以下内容的操作 -
- 操作类型 - 启动程序
- 程序名称 - Powershell.exe
- 参数 - C:\Temp\Send_Email.ps1'Send_Email_Task'
现在,当计划任务启动时,它会使用任务名称执行我的 Powershell 脚本。这样,我就可以将同一个脚本用于所有任务。