我有一个PowerShell脚本,我每天都要运行一个任务。是否可以打开PowerShell窗口(并且在运行后不关闭),这样我可以确保它运行没有错误?当我使用下面的命令安排时,没有窗口弹出,所以我不知道它是否真的完成了。
powershell -ExecutionPolicy ByPass -File “Q:\myscript.ps1” -NoExit
此外,在脚本本身中,我有一行在记事本中打开文本文件(脚本的文字记录来自Start-Transcript)。当我手动运行脚本时,它会打开记事本,但计划任务没有。是否有设置让它打开?
$validationPath = "Q:\transcript.txt"
& Notepad $validationPath
答案 0 :(得分:3)
要以交互方式运行,您需要在安全选项下选择仅在用户登录时运行。来自Task Security Context help:
即使在触发任务时未登录任务计划运行的帐户,您也可以指定任务应该运行。为此,请选择标记为“运行用户是否已登录”的单选按钮。如果选中此单选按钮,则任务将不会以交互方式运行。要以交互方式运行任务,请选择“仅在用户登录时单击运行”单选按钮。
也就是说,如果它作为计划任务运行,在大多数情况下最好记录输出和/或发送失败的电子邮件。
对于日志记录,您可以使用Start-Transcript
,如下所示:
Start-Transcript -Path ('{0}\TaskName.{1:yyyy-MM-dd}.log' -f $env:temp, (Get-Date))
# Code here
Stop-Transcript
对于电子邮件通知,您可以使用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
}