none
PowerShell не выполняется через планировщик. RRS feed

  • Общие обсуждения

  • Добрый день! Столкнуться с проблемой при создании задач powershell в планировщике.

    Созданы задачи от учетной записи доменного администратора, настроены на запуск независимо от входа пользователя в систему с наивысшими правами.
    Однако, если пользователь, от чьего имени запускается задача не вошел в систему, то задача выполняется, но ничего не происходит, даже простейшая запись в текстовый файл. Если вход в систему этим пользователем был произведен, то задание отрабатывает без проблем.

    Проблема проявляется на Windows Server 2012/Windows Server 2012R2

    Скрипт пробовал даже пустой, с содержанием

    "Test Message" > log.txt

    Трек ручного запуска проблемной задачи:

    15:13:32 129 Обработка созданной задачи

    15:13:32 100 Задача запущена

    15:13:32 200 Действие запущено

    15:13:32 110 Задача вызвана пользователем

    15:13:33 330 Остановка задачи по запросу пользователя

    15:13:33 201 Действие выполнено

    15:13:33 102 Задача завершена

    15:13:33 111 Задача прекращена

    При нормальной отработке (после входа пользователя в систему или запуска, к примеру, cmd от имени этого пользователя) задача выполняется несколько часов.

    В журналах ошибок и предупреждений нет.

    Задачу в планировщик добавлял следующим образом:

    unRegister-ScheduledJob -Name Backup
    $t = New-JobTrigger -Weekly -DaysOfWeek 1,2,3,4,5 -At 11:00PM
    $cred = Get-Credential domain\FooBar
    $o = New-ScheduledJobOption -RunElevated
    Register-ScheduledJob -Name Backup -FilePath D:\Backup\Backup.ps1 -Trigger $t -Credential $cred -ScheduledJobOption $o

    Если войти в свойства задачи, то значение "Действие" следующее:запуск программы "powershell.exe" с параметрами: -NoLogo -NonInteractive -WindowStyle Hidden -Command "Import-Module PSScheduledJob; $jobDef = [Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition]::LoadFromStore('Backup', 'C:\Users\FooBar\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs'); $jobDef.Run()"

    Причем на Windows Server 2008R2 такой проблемы нет.

    p.s.: Вход в качестве пакетного задания для пользователя domain\FooBar предоставлен, хотя он нужен только при установленном флажке "Не сохранять пароль" (используется расширение Service-for-User для протокола проверки подлинности Kerberos).



    18 февраля 2014 г. 11:24

Все ответы

  • Ради эксперимента разлил новую машину W2012, создал новый домен test.wan в изолированной сети.

    - Создал пользователя adm, назначил его администратором домена.

    - Создал каталог c:\temp

    - Создал скрипт d:\backup\test.ps1 с содержанием:

    get-date >> c:\temp\log.txt

    - Для верности, залогинился под test\adm, запустил PowerShell от имени админа и выполнил следующее:

    Set-ExecutionPolicy RemoteSigned

    unRegister-ScheduledJob -Name Backup $t = New-JobTrigger -Weekly -DaysOfWeek 1,2,3,4,5 -At 11:00PM $cred = Get-Credential test\adm $o = New-ScheduledJobOption -RunElevated Register-ScheduledJob -Name Backup -FilePath d:\backup\test.ps1 -Trigger $t -Credential $cred -ScheduledJobOption $o

    - Запустил планировщик и вручную запустил задание - запись в файл сработала.

    - Вылогинился test\adm из системы

    - Залогинился под test\Администратор

    - Запустил планировщик и вручную запустил задание - запись в файл НЕ сработала, в журнале задания все ок.

    - Запустил cmd от имени test\adm

    - Запустил планировщик и вручную запустил задание - запись в файл сработала.

    Почему?!?

    p.s.: Повторюсь, на Windows Server 2008R2 такой проблемы нет.
    • Изменено АБВ 21 февраля 2014 г. 7:36
    19 февраля 2014 г. 13:06
  • Рауф, как успехи?

    Мнения, высказанные здесь, являются отражением моих личных взглядов, а не позиции корпорации Microsoft. Вся информация предоставляется "как есть" без каких-либо гарантий. Не забывайте помечать сообщения как ответы и полезные, если они Вам помогли.

    25 февраля 2014 г. 7:08
    Модератор
  • Проблема воспроизводится на чистой системе, неужели никто с ней не сталкивался?
    5 марта 2014 г. 5:28
  • А не включен ли случаем чекбокс Run only when user is logged on?
    5 марта 2014 г. 6:14
  • Нет, стоит "Выполнять для всех пользователей"
    6 марта 2014 г. 8:12
  • попробуйте использовать CPAU, либо такой вот скрипт на VBS

    Set oShell = WScript.CreateObject("WScript.Shell")
    oShell.Run "RUNAS /env /user:test\adm "+CHR(34)+"путь_до_задачи.bat"+CHR(34) 
    WScript.Sleep 2000
    oShell.SendKeys "тут пароль" & chr(13)
    WScript.Sleep 1000
    Wscript.Quit 1

    из минусов - хранение пароля в открытом виде

    6 марта 2014 г. 8:35
  • У меня заработало только в таком написании powershell.exe -command "&{<Путь_до_ps_файла>\<file>.ps1}"

    Innovation distinguishes between a leader and a follower - Steve Jobs

    • Изменено Ilya Ershov 6 марта 2014 г. 8:53
    6 марта 2014 г. 8:53
  • Спасибо, это конечно не полностью решает мою проблему (с такими же симптомами зависает вызванный из командного файла процесс 1cv8.exe), но описанный Вами способ работает!
    • Изменено АБВ 11 марта 2014 г. 12:30 коррекция
    11 марта 2014 г. 10:47