2017-01-06 118 views
1

我有一个PowerShell脚本,我为每天运行一个任务。是否可以打开PowerShell窗口(并且在运行后不关闭),这样我可以确保它运行时没有错误?当我按照下面的命令进行安排时,没有窗口弹出,所以我不能分辨它是否真的完成了。保持打开PowerShell窗口和任务计划程序

powershell -ExecutionPolicy ByPass -File “Q:\myscript.ps1” -NoExit 

此外,剧本本身,我打开记事本中的文本文件(从启动成绩单脚本的成绩单)一行。当我手动运行脚本时,它会打开记事本,但计划的任务不会。有没有一个设置让它打开?

$validationPath = "Q:\transcript.txt" 
& Notepad $validationPath 
+2

是任务配置为仅在用户登录时运行? –

+0

我将它设置为“运行用户是否登录”。 – Esuriency

+0

然后它不能与当前用户的桌面进行交互。 –

回答

3

交互运行,你需要时,在安全选项登录用户只能运行选择。从Task Security Context help

即使在触发任务时没有登录任务计划运行的帐户,也可以指定应运行任务。要做到这一点,选择标有Run的用户是否登录的单选按钮。如果选择此单选按钮,任务将不会交互式运行。要使任务以交互方式运行,请选择仅在用户登录时运行单选按钮。

也就是说,如果它作为计划任务运行,在大多数情况下,最好记录输出和/或发送失败的电子邮件。

进行日志记录,你可以使用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 '[email protected]' -From '[email protected]' -Subject 'Error in script TaskName' -Body "Error $($_.Message) received while running TaskName" -SmtpServer smtp.domain.com 
} 
+0

谢谢,很高兴知道。不幸的是,我不认为我可以在用户登录时运行,因为我们的IT经常安装更新并重新启动计算机。我会尝试使用电子邮件通知进行设置! – Esuriency

相关问题