2017-01-06 7 views
1

У меня есть сценарий PowerShell, который я поставил перед собой задачу работать каждый день. Возможно ли открыть окно PowerShell (и не закрыть после запуска), чтобы я мог убедиться, что он работает без ошибок? Когда я планирую с помощью следующей команды, окно не появляется, поэтому я не могу сказать, действительно ли он действительно закончен.Открытие окна PowerShell и планировщик заданий

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

Кроме того, внутри самого скрипта, у меня есть строка, которая открывает текстовый файл в блокноте (стенограмма сценария из Start-Transcript). Когда я запускаю сценарий вручную, он открывает Блокнот, но запланированной задачи нет. Есть ли настройка, чтобы открыть это?

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

задача выполнена с возможностью работать только когда пользователь вошел в систему? –

+0

У меня установлено значение «Запустить, был ли пользователь включен или нет». – Esuriency

+0

Тогда он не может взаимодействовать с рабочим столом текущего пользователя. –

ответ

3

Для запуска в интерактивном режиме необходимо выбрать только Run, когда пользователь вошел в систему под параметры безопасности. Из 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 '[email protected]' -From '[email protected]' -Subject 'Error in script TaskName' -Body "Error $($_.Message) received while running TaskName" -SmtpServer smtp.domain.com 
} 
+0

Спасибо, это приятно знать. К сожалению, я не думаю, что могу запускаться, когда пользователь вошел в систему, так как наши ИТ регулярно устанавливают обновления и перезагружают компьютеры. Я попробую настроить его с помощью уведомлений по электронной почте! – Esuriency