Esu*_*ncy 2 powershell scheduled-tasks taskscheduler
我有一个 PowerShell 脚本,我制定了每天运行的任务。是否可以打开 PowerShell 窗口(运行后不关闭),以便确保它运行时没有错误?当我使用以下命令进行调度时,没有弹出窗口,所以我不知道它是否真的完成了。
powershell -ExecutionPolicy ByPass -File “Q:\myscript.ps1” -NoExit
Run Code Online (Sandbox Code Playgroud)
此外,在脚本本身中,我有一行在记事本中打开一个文本文件(来自 Start-Transcript 的脚本脚本)。当我手动运行脚本时,它会打开记事本,但计划任务没有。有没有设置可以打开?
$validationPath = "Q:\transcript.txt"
& Notepad $validationPath
Run Code Online (Sandbox Code Playgroud)
要以交互方式运行,您需要在安全选项下选择仅在用户登录时运行。从任务安全上下文帮助:
您可以指定即使在触发任务时计划运行任务的帐户未登录时也应运行任务。为此,请选择标有“运行用户是否登录”的单选按钮。如果选中此单选按钮,则任务将不会以交互方式运行。要使任务以交互方式运行,请选择仅在用户登录时运行单选按钮。
也就是说,如果它作为计划任务运行,在大多数情况下,最好记录输出和/或在失败时发送电子邮件。
对于日志记录,您可以使用Start-Transcript,如下所示:
Start-Transcript -Path ('{0}\TaskName.{1:yyyy-MM-dd}.log' -f $env:temp, (Get-Date))
# Code here
Stop-Transcript
Run Code Online (Sandbox Code Playgroud)
对于电子邮件通知,您可以使用 Send-MailMessage
try {
# Code here
} catch {
Send-MailMessage -To 'errors@domain.com' -From 'alerting@domain.com' -Subject 'Error in script TaskName' -Body "Error $($_.Message) received while running TaskName" -SmtpServer smtp.domain.com
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4655 次 |
| 最近记录: |