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

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

27.09.2017, 09:28. Показов 18832. Ответов 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
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
27.09.2017, 18:07
Студворк — интернет-сервис помощи студентам
PajGUN, Здесь по идее job не нужен
Можно обойтись invoke-command, если я все правильно понял
У него ведь тоже есть параметр credential
PowerShell
1
2
$scriptblock={echo "lol"}
Invoke-Command $scriptblock -Credential $cred
Добавлено через 9 минут
PowerShell
1
Invoke-Command $scriptblock -Credential $cred
хм, проверил, эта конструкция не работает.
Зачем тогда вообще ключ -credential реализован у командлета invoke-command?
0
Любознательный
 Аватар для YuS_2
7405 / 2255 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
27.09.2017, 20:45
Цитата Сообщение от v_svitere Посмотреть сообщение
Зачем тогда вообще ключ -credential реализован у командлета invoke-command?
PowerShell
1
man invoke-command -full
PowerShell
1
2
PS C:\>$LiveCred = Get-Credential
PS C:\>Invoke-Command -ConfigurationName Microsoft.Exchange -ConnectionUri [url]https://ps.exchangelabs.com/PowerShell[/url] -Credential $LiveCred -Authentication Basic -ScriptBlock {Set-Mailbox Dan -DisplayName "Dan Park"}
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
28.09.2017, 10:23
YuS_2,
man invoke-command -full
Да, и правда, я невнимательно прочитал справку.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
28.09.2017, 11:01
PajGUN, v_svitere,

1. Использовать через планировщик Start-Job с другими credential, действительно не получится. Вот здесь подробно описана эта проблема. Правда вывод в конце, что это не баг, в фича
2. Если использовать Invoke-Command с ключом -AsJob, тогда эта багофича отлично обходится. Получаем job с альтернативными credential:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$cred = Import-CliXml -Path 'C:\Temp\cred.xml'
$ScriptBlock = {$env:UserName}
 
"$((Get-Date).DateTime) ScriptResult: $env:UserName" | ac C:\Temp\log.txt
 
$Result = Start-Job -Name Test -ScriptBlock $ScriptBlock -Credential $cred -Authentication Default | Wait-Job | Receive-Job
Remove-Job -Name Test
"$((Get-Date).DateTime) JobResult: $Result" | ac C:\Temp\log.txt
 
$Job = Invoke-Command -ScriptBlock $ScriptBlock -Credential $cred -ComputerName localhost -AsJob | Wait-Job | Get-Job
$Result = $Job | Receive-Job
Remove-Job $Job
"$((Get-Date).DateTime) InvokeResult: $Result" | ac C:\Temp\log.txt
Проверяем просто из шелла:

28 сентября 2017 г. 10:49:26 ScriptResult: adm
28 сентября 2017 г. 10:49:27 JobResult: test-user
28 сентября 2017 г. 10:49:28 InvokeResult: test-user
Проверяем это же, но из планировщика (с галочкой "Выполнять для всех пользователей"):

28 сентября 2017 г. 10:49:33 ScriptResult: adm
28 сентября 2017 г. 10:49:34 JobResult:
28 сентября 2017 г. 10:49:35 InvokeResult: test-user
1
 Аватар для v_svitere
774 / 423 / 137
Регистрация: 03.06.2009
Сообщений: 1,223
Записей в блоге: 4
28.09.2017, 11:20
KDE777,
Invoke-Command с ключом -AsJob
Это, именно так как я предлагал в 3 посте)

Добавлено через 12 минут
Только с New-PSSession
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
28.09.2017, 11:22
Цитата Сообщение от v_svitere Посмотреть сообщение
Это, именно так как я предлагал в 3 посте)
Только можно обойтись одним Invoke-Command, без использования New-PSSession
1
0 / 0 / 0
Регистрация: 16.07.2015
Сообщений: 10
28.09.2017, 15:27  [ТС]
Цитата Сообщение от KDE777 Посмотреть сообщение
Если использовать Invoke-Command с ключом -AsJob, тогда эта багофича отлично обходится. Получаем job с альтернативными credential:
Вы можете попробовать выполнить примерно следующее:
PowerShell
1
2
3
4
5
$cred = Import-CliXml -Path 'C:\Temp\cred.xml'
$ScriptBlock = {
Get-ADComputer -Filter {(Name -like "<someone pc>")}
}
Invoke-Command -JobName "example" -ScriptBlock $ScriptBlock -Credential $cred -ComputerName localhost -AsJob | Wait-Job | Get-Job | receive-job
У меня просто новый затык, СкриптБлок теперь ADшные командлеты не отрабатывает.
WARNING: Error initializing default drive: 'Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Ac
tive Directory Web Services running.'.
0
 Аватар для KDE777
1886 / 1108 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
28.09.2017, 18:15
Цитата Сообщение от PajGUN Посмотреть сообщение
У меня просто новый затык, СкриптБлок теперь ADшные командлеты не отрабатывает.
WARNING: Error initializing default drive: 'Unable to contact the server. This may be because this server does not exist, it is currently down, or it does not have the Ac
tive Directory Web Services running.'.
Попробовал, такая же ошибка.

Вот так её можно обойти в Start-Job, но в Invoke-Command такой фокус уже не проходит...

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$cred = Import-CliXml -Path 'C:\Temp\cred.xml'
 
$ScriptBlock =
{
    Import-Module ActiveDirectory
    Remove-PSDrive AD
    New-PSDrive -Name 'AD' -PSProvider 'ActiveDirectory' -Root "//RootDSE/" -ErrorAction Stop | Out-Null
    Set-Location AD:
    $AD_PC = Get-ADComputer 'TEST'
    Set-Location $env:HOMEDRIVE
    Remove-PSDrive AD
    return $AD_PC
}
 
Start-Job -Name Test -ScriptBlock $ScriptBlock -Credential $cred | Wait-Job | Receive-Job
Remove-Job -Name Test
Добавлено через 23 минуты
Вернее, через Start-Job работает и без всяких трюков:

PowerShell
1
2
3
4
5
6
7
8
$ScriptBlock =
{
    Import-Module ActiveDirectory
    Get-ADComputer 'VCS-02'
}
 
Start-Job -Name Test -ScriptBlock $ScriptBlock -Credential $cred | Wait-Job | Receive-Job
Remove-Job -Name Test
А вот для Invoke-Command, видимо нужно включать поддержку CredSSP и использовать связку с New-PSSession, предложенную v_svitere

Добавлено через 11 минут
PajGUN, вот тут ещё больше подробностей + пример похожий на ваш случай:

PowerShell
1
2
Enter-PSSession -ComputerName con-rt-ts.contoso.com -Credential (Get-Credential) -Authentication CredSSP
Invoke-Command –ComputerName con-rt-ts.contoso.com –Credential (Get-Credential) –Authentication CredSSP –ScriptBlock {Import-Module ActiveDirectory; get-aduser administrator}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.09.2017, 18:15
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru