Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
-
- Любопытный
- Сообщения: 19
- Зарегистрирован: 06 июл 2015 14:06
Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Ситуация следующая:
Есть cкрипт \\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean.ps1.
Создана задача с запуском от имени пользователя «система» с выполнением с наивысшим правами.
Действие: PowerShell -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}"
Если запуская просто из консоли cmd или PowerShell с запуском от админа, действие выполняется.
Если кладу скрипт локально на диск «C:\WSUS_Clean.ps1» и меняю команду в планировщике задач на PowerShell -Command "& {C:\WSUS_Clean.ps1}", то задача тоже выполняется.
НО если выполнять действие с указанием не сетевую шару PowerShell -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}", то задача выполняется моментально и завершается удачно, НО скрипт по факту не отрабатывает.
Вопрос:
Почему может не отрабатывать скрипт PowerShell из планировщика задач, если в действие указан сетевой путь? Прав хватает, ExecutionPolicy вроде тоже. PowerShell -File те же яйца, только в профиль.
Есть cкрипт \\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean.ps1.
Создана задача с запуском от имени пользователя «система» с выполнением с наивысшим правами.
Действие: PowerShell -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}"
Если запуская просто из консоли cmd или PowerShell с запуском от админа, действие выполняется.
Если кладу скрипт локально на диск «C:\WSUS_Clean.ps1» и меняю команду в планировщике задач на PowerShell -Command "& {C:\WSUS_Clean.ps1}", то задача тоже выполняется.
НО если выполнять действие с указанием не сетевую шару PowerShell -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}", то задача выполняется моментально и завершается удачно, НО скрипт по факту не отрабатывает.
Вопрос:
Почему может не отрабатывать скрипт PowerShell из планировщика задач, если в действие указан сетевой путь? Прав хватает, ExecutionPolicy вроде тоже. PowerShell -File те же яйца, только в профиль.
Последний раз редактировалось AlektroNik 25 фев 2016 11:10, всего редактировалось 2 раза.
- Алексей Максимов
- Администратор сайта
- Сообщения: 572
- Зарегистрирован: 14 сен 2012 06:50
- Откуда: г.Сыктывкар
- Контактная информация:
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
А как Вы определили, что "прав хватает"? Если джоб шедулера запускает скрипт от имени SYSTEM, то соответственно, как минимум, у доменной учётной записи компьютера (например SERVER$) должны быть права на чтение указанного сетевого каталога и на уровне разрешений SMB и на уровне разрешений NTFS.
-
- Любопытный
- Сообщения: 19
- Зарегистрирован: 06 июл 2015 14:06
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Зашел в свойства всей цепочки папок включая сам скрипт и проверил действующие права для SERVER$ \\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1 ... чтение выполнение.
- Алексей Максимов
- Администратор сайта
- Сообщения: 572
- Зарегистрирован: 14 сен 2012 06:50
- Откуда: г.Сыктывкар
- Контактная информация:
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Проверьте запуск скрипта интерактивно, запустив команду шедулера от имени SYSTEM. Для этого можно воспользоваться утилитой PsExec.exe с ключом -s
Код: Выделить всё
PsExec.exe -s <команда>
-
- Любопытный
- Сообщения: 19
- Зарегистрирован: 06 июл 2015 14:06
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Я немного по другому сделал. Создал батника и запустил через него ... Psexec -s как то вылетело из головы
К моему удивлению вылезло "... не имеет цифровой подписи". А удивился я потому, что даже указав все равно выдает туже самую ошибку.
Вот вывод настроек:
Сейчас припоминаю ... но смутно, что вроде сетевые скрипты должны быть в любом случае подписаны иначе не будут выполняться. Так? Или все таки можно без подписи выполнить скрипт из сетевой шары?
И если не сложно вкратце командочку как подписывать?
К моему удивлению вылезло "... не имеет цифровой подписи". А удивился я потому, что даже указав
Код: Выделить всё
PowerShell -ExecutionPolicy Bypass -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}"
Вот вывод настроек:
Код: Выделить всё
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy RemoteSigned
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Bypass
И если не сложно вкратце командочку как подписывать?
- Алексей Максимов
- Администратор сайта
- Сообщения: 572
- Зарегистрирован: 14 сен 2012 06:50
- Откуда: г.Сыктывкар
- Контактная информация:
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Однако текста ошибки я от Вас так и не дождался.
Как вариант, перед выполнением скрипта понизить уровень безопасности, а после выполнения - вернуть его в прежнее состояние.
Другой вариант (более правильный с точки зрения безопасности) - подписать свои скрипты. Пример того, как это сделать, можно найти в статье Подписывание скриптов PowerShell – практическое руководство (часть 1)
Как вариант, перед выполнением скрипта понизить уровень безопасности, а после выполнения - вернуть его в прежнее состояние.
Код: Выделить всё
Set-ExecutionPolicy -ExecutionPolicy Unrestricted
...
<команды работы с сетевыми скриптами>
...
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
-
- Любопытный
- Сообщения: 19
- Зарегистрирован: 06 июл 2015 14:06
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Я же написал "... не имеет цифровой подписи", лишнее повыкидывал ...
Если полностью то так:
Дописал ...
1. Пришлось отключить политику GPO, которая централизованно включала "RemoteSigned" - иначе не давал менять. Видимо поэтому в одну строчку не хотел , странно что ничего не написал в ошибке про политику.
2. Запустил и все заработало. Теперь пока выполняется скрипт политики выглядят так:
И куда теперь рыть? В сторону исправления политик и их понижения централизованно через GPO или лучше в сторону подписывания скриптов?
Если полностью то так:
Код: Выделить всё
C:\Windows\system32>PowerShell -ExecutionPolicy Bypass -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}"
Не удается загрузить файл \\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean
\WSUS_Clean.ps1. Файл \\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSU
S_Clean.ps1 не имеет цифровой подписи. Скрипт не будет выполнен в данной систем
е. Введите "get-help about_signing" для получения дополнительных сведений..
строка:1 знак:72
+ & {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1 <<<<
}
+ CategoryInfo : NotSpecified: (:) [], PSSecurityException
+ FullyQualifiedErrorId : RuntimeException
Дописал ...
1. Пришлось отключить политику GPO, которая централизованно включала "RemoteSigned" - иначе не давал менять. Видимо поэтому в одну строчку не хотел , странно что ничего не написал в ошибке про политику.
Код: Выделить всё
PowerShell -ExecutionPolicy Bypass -Command "& {\\domain.local\SYSVOL\domain.local\scripts\WSUS_Clean\WSUS_Clean.ps1}"
Код: Выделить всё
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Unrestricted
- Алексей Максимов
- Администратор сайта
- Сообщения: 572
- Зарегистрирован: 14 сен 2012 06:50
- Откуда: г.Сыктывкар
- Контактная информация:
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
А это уже Вы у себя спрашивайте
-
- Любопытный
- Сообщения: 19
- Зарегистрирован: 06 июл 2015 14:06
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Ну я ожидал, что вы именно так и ответите Просто я бы тоже так ответил .
А вы как предпочитаете делать?
Большое спасибо за помощь.
А вы как предпочитаете делать?
Большое спасибо за помощь.
- Алексей Максимов
- Администратор сайта
- Сообщения: 572
- Зарегистрирован: 14 сен 2012 06:50
- Откуда: г.Сыктывкар
- Контактная информация:
Re: Как запустить из планировщика задач PowerShell скрипт расположенный в сетевой шаре?
Чтобы говорить о предпочтениях, нужно понимать суть задачи, которую выполняет скрипт.