Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/90: Рейтинг темы: голосов - 90, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10

Запуск Джоба от другого имени через шедулер

27.09.2017, 09:28. Показов 18814. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Есть отлично работающий скрипт в котором происходит выполнение Job'а от другого пользователя.

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
# Создаём переменную со свойствами пользователя (логин, пароль)
$strScriptUser = "domain\script_user"
$strPass = "Pa$$w0rd"
$PSS = ConvertTo-SecureString $strPass -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $strScriptUser,$PSS
 
# Запускаем скрипт от имени script_user
start-job -Name "Exemple" -ScriptBlock {
 
...
 
} -Credential $cred
Но если попробовать запустить этот сценарий шедулером то СкриптБлок не отрабатывает, Джоб фэйлится. Всё что вне этого СкриптБлока работает, проблема именно с работой Джоба от другого пользователя через шедулер. Кто-нибудь натыкался на такое? Может быть есть способ обойти такое поведение?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.09.2017, 09:28
Ответы с готовыми решениями:

Запуск скрипта Python через шедулер
Добрый день. Прошу помочь с постановкой питон-скрипта на запуск по расписанию, так как вылезло две ошибки: 1. При прописывании в...

Запуск приложения от имени другого пользователя через BAT файл, с сохранением путей для Log & INI файлов
Запуск приложения от имени другого пользователя через BAT-файл, с сохранением путей для Log & INI файлов. Проблема: На ПК имеется...

Запуск от имени другого пользователя
Привет!!! Сегодня решил установить uTorrent. Скачал установщик с официального сайта. И после открытия вижу вот это Как решить...

27
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 10:54
Цитата Сообщение от PajGUN Посмотреть сообщение
Но если попробовать запустить этот сценарий шедулером то СкриптБлок не отрабатывает
В свойствах задания пробовали менять настройки: "Выполнять с наивысшими правами", "Выполнять только для пользователей вошедших в систему", "Выполнять для всех пользователей"?
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
27.09.2017, 10:58
PajGUN,
Попробуйте вместо start-job использовать New-PSsession, хотя по идее со start-job тоже не должно быть проблем
PowerShell
1
2
3
4
5
$strScriptUser = "PC2000000071701\admin"
$PSS = ConvertTo-SecureString "Pass" -AsPlainText -Force
$cred = new-object system.management.automation.PSCredential $strScriptUser,$PSS
$session=New-PSSession -Name exp -Credential $cred
Invoke-Command -Session $session {whoami;sleep 300} -AsJob
В планировщеке добавьте ключ -noexit для запуска powershell.exe, этот ключ не закроет хост после выполнения задания.
А далее проверьте результат выполнения через get-job и receive-job
1
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
27.09.2017, 12:41  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
В свойствах задания пробовали менять настройки: "Выполнять с наивысшими правами", "Выполнять только для пользователей вошедших в систему", "Выполнять для всех пользователей"?
С наивысшими правами только что попробовал, результат тот же.
Выполнять только для пользователей вошедших в систему мне не подходит (результат тот же) использую всегда для всех пользователей как вошедших так и нет.

Цитата Сообщение от v_svitere Посмотреть сообщение
В планировщеке добавьте ключ -noexit для запуска powershell.exe, этот ключ не закроет хост после выполнения задания.
А далее проверьте результат выполнения через get-job и receive-job
Не, я просто вывод в файл сделал и вижу что джоб фэйлится
PowerShell
1
2
3
4
Id     Name            PSJobTypeName   State         HasMoreData     Location  
--     ----            -------------   -----         -----------     --------  
1      Example          BackgroundJob   Running       True            localhost 
1      Example          BackgroundJob   Failed        False           localhost
Завершается с ошибкой он сразу, внутри СкриптБлока ничего не выполняется, от сюда сделал вывод что проблема именно со стартом от другой учётной записи.

После обеда попробую с помощью PSSession, плохо только что нет командлета wait-PSSession аналогичному wait-job.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
27.09.2017, 12:44
PajGUN, а все-таки что внутри scriptblock-а?
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 12:50
Цитата Сообщение от v_svitere Посмотреть сообщение
а все-таки что внутри scriptblock-а?
Так он пишет:

Цитата Сообщение от PajGUN Посмотреть сообщение
внутри СкриптБлока ничего не выполняется
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
27.09.2017, 12:51
для всех пользователей как вошедших так и нет.
Выполнять вне зависимости от регистрации, накладывает некоторые ограничения на выполнение задания, возможно именно поэтому, и происходит проблема.
Попробуйте в качестве эксперимента выбрать вариант только для зареганных пользователей

У меня отрабатывает и Get-job и New-PSSession, никаких проблем
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 12:55
Цитата Сообщение от v_svitere Посмотреть сообщение
Выполнять вне зависимости от регистрации, накладывает некоторые ограничения на выполнение задания, возможно именно поэтому, и происходит проблема.
Попробуйте в качестве эксперимента выбрать вариант только для зареганных пользователей
Как раз поэтому, я уже предлагал попробовать такой запуск, но опять же PajGUN утверждает, что и такой вариант не помогает:

Цитата Сообщение от PajGUN Посмотреть сообщение
Выполнять только для пользователей вошедших в систему мне не подходит (результат тот же)
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
27.09.2017, 14:01
внутри СкриптБлока ничего не выполняется
Плотненько не изучал Start-Job, но чисто логически:
Если задание запускается в нулевой сессии(без залогиненных пользователей), а в Scriptblock-е, скажем будет, что-нибудь интерактивное или какая-нибудь переменная окружения, что тогда?

а все-таки что внутри scriptblock-а?
Это для того, чтобы смоделировать проблему у себя, потому как у меня в скриптблоке все выполняется с разными cred-ами
0
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
27.09.2017, 14:35  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Как раз поэтому, я уже предлагал попробовать такой запуск, но опять же PajGUN утверждает, что и такой вариант не помогает:
Очень извиняюсь за дезинформацию, торопился и не обратил внимание на саму ошибку. Не запускалось банально из-за того что юзер был разлогинен.
Итак если стартовать с опцией - Запускать только когда пользователь залогинен, то всё работает! Но в таком варианте оставлять не хочется.

Цитата Сообщение от v_svitere Посмотреть сообщение
а все-таки что внутри scriptblock-а?
самое первое действие в блоке это запись в лог-фалй даты и времени, которое не отрабатывает. Все разрешения к файлу лога имеются, ну и как я писал этот скрипт вне шедулера отлично работает.

Добавлено через 18 минут
А так этот скрипт добавляет нового пользователя на компьютеры компании через ADSI и задаёт ему пароль. Через GP потом добавляем его в группу Админов.
Всё то же самое можно гораздо проще сделать через GP но есть одно но, абсолютно любой человек в компании (если задастся целью) сможет узнать пароль этого локального админа, чего мы конечно позволить никак не можем.
у.з локального админа созданная во время установки (SID*500) блокируется.

В скрипте в начале генерируется новый пароль для учётной записи script_user, далее эта у.з. включается и под ней запускается Джоб, после выполнения учётка блокируется.
0
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
27.09.2017, 14:36
PajGUN,
Итак если стартовать с опцией - Запускать только когда пользователь залогинен, то всё работает! Но в таком варианте оставлять не хочется.
Вообщем про, что мы вам с товарищем KDE777, и говорили.

А какой вывод у
PowerShell
1
Receive-Job (get-job exemple)
Еще как вариант, отладить можно через утилиту PSEXEC, запустив Хост от имени localsystem, именно так запускает планировщик при варианте "Вне зависимости от зареганных пользователей"
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 14:59
Цитата Сообщение от PajGUN Посмотреть сообщение
Всё то же самое можно гораздо проще сделать через GP но есть одно но, абсолютно любой человек в компании (если задастся целью) сможет узнать пароль этого локального админа, чего мы конечно позволить никак не можем.
Поэтому MS в 2012R2 даже не даёт создать политику назначающую пароль локальной УЗ.

Вы про AdmPwd слышали?

Local admin password management solution works using GPO and custom Client-Side GPO Extension. Solution periodically changes pwd of admin account to random value; it stores current builtin admin password in AD confidential attribute on computer account
Вот здесь очень подробно расписано это решение...

Ну или вариант попроще - создавать УЗ локального администратора и генерировать ему пароль удалённо.
0
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
27.09.2017, 15:23  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Вы про AdmPwd слышали?
Нет не слышал, написал сам, блин.
Здорово! только напрягают меня такие слова - "Modifying the Schema"
А так да частичное решение моей проблемы. Большое спасибо за ссылки.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 15:57
Цитата Сообщение от PajGUN Посмотреть сообщение
только напрягают меня такие слова - "Modifying the Schema"
Ну хотя бы описано, что именно изменяется: для AD-объекта "Компьютер" добавляют два новых атрибута: ms-MCS-AdmPwd, ms-MCS-AdmPwdExpirationTime

+ обнадёживает, что это решение описано на technet.microsoft.com и размещено оно на msdn.microsoft.com

А чем всё-таки не устраивает самый простой вариант - удалённое создание нужной УЗ?
0
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
27.09.2017, 16:19  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
А чем всё-таки не устраивает самый простой вариант - удалённое создание нужной УЗ?
Всем устраивает я как раз этот скрипт и пытаюсь в шедулере прописать.

Цитата Сообщение от v_svitere Посмотреть сообщение
А какой вывод у Receive-Job (get-job exemple)
А у меня никакого вывода нет, что при успешно отработанном скрипте что нет. В консоль в этом СкриптБлоке ничего не выводится! или я не правильно понимаю функционал receive-job.

Цитата Сообщение от v_svitere Посмотреть сообщение
Еще как вариант, отладить можно через утилиту PSEXEC, запустив Хост от имени localsystem, именно так запускает планировщик при варианте "Вне зависимости от зареганных пользователей"
Согласен, попробую ещё вместо Job с PSSession поиграться.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 16:27
Цитата Сообщение от PajGUN Посмотреть сообщение
Всем устраивает я как раз этот скрипт и пытаюсь в шедулере прописать.
А зачем тогда такие сложности? Запускайте задание от имение пользователя имеющего адм. права на требуемых компьютерах. И зачем job? Или скрипт обрабатывает очень много ПК?
0
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
27.09.2017, 17:20  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Запускайте задание от имение пользователя имеющего адм. права на требуемых компьютерах. И зачем job?
Мы боимся мимикаса, поэтому была создана отдельная учётка (пусть будет script_user) под данный скрипт.

В начале скрипт стартует под нормальной админской у.з. под которой происходит смена пароля у у.з script_user и её разблокировка.
Дальше от имени script_user запускается Job, после того как он пробежит несколько сот ПКашек, учётка script_user блокируется.

Скорость скрипта 100 машин в минуту.

Добавлено через 12 минут
Job нам нужен чтобы продолжить выполнение от другого пользователя и заблокировать у.з сразу же после его выполнения (wait-job)
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 17:26
Цитата Сообщение от PajGUN Посмотреть сообщение
В начале скрипт стартует под нормальной админской у.з. под которой происходит смена пароля у у.з script_user и её разблокировка.
Дальше от имени script_user запускается Job, после того как он пробежит несколько сот ПКашек, учётка script_user блокируется.
А если так - делаете два задание в планировщике: Задание #1 в нужное время разблокирует УЗ script_user и затем запускает Задание #2, которое настроено запускаться от имени script_user. В конце Задания #2 блокируете УЗ script_user.
0
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
27.09.2017, 17:34  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
делаете два задание в планировщике:
Job'ом мне показалось более элегантным решением, но тогда я ещё не знал что будут проблемы с запуском через шедулер.
Сейчас наверно так и буду делать, только с PSSession поиграюсь еще..
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
27.09.2017, 17:49
Цитата Сообщение от PajGUN Посмотреть сообщение
Job'ом мне показалось более элегантным решением, но тогда я ещё не знал что будут проблемы с запуском через шедулер.

Не по теме:

А я думал, что вам job-ы нужны для лучшей производительности, чтобы не ждать создания/изменения пользователя на каждом из ПК...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2017, 17:49
Помогаю со студенческими работами здесь

Запуск от имени другого пользователя
Меня задобала вечно вылезающая панель. "Запуск от имени другого пользователя". Почти при каждой попытке открыть любую программу. Ну...

Запуск программы от имени другого пользователя
У меня 2 виртуальные машины XP и Server. Мне нужно на ХР открыть программу от имени администратора Server. Проблема в том, что когда я...

Запуск .ps1 от имени другого пользователя
Доброе утро, Возможно этот вопрос похож на другие, но я не нашел корректного ответа. Нужно запустить скрипт test.ps1 от имени...

Запуск агента от имени другого пользователя.
Подскажите как реализовать? Проблема в следующем. Есть 2е базы: база1 и база2. Через базу1 агентом есть возможность генерить...

Запуск программы от имени другого пользователя
Добрый день. Подскажите пожалуйста как запустить программу от имени администратора, указав в скрипте пароль, но не используя runas...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru