获取激活 PowerShell 脚本的计划任务名称

获取激活 PowerShell 脚本的计划任务名称

这可能很简单,但我努力寻找“如何做”,却没有找到任何答案。所以,我的问题是,“如何找到激活我的 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 脚本。这样,我就可以将同一个脚本用于所有任务。

相关内容