Как запустить скрипт powershell
Перейти к содержимому

Как запустить скрипт powershell

  • автор:

Как запустить скрипт PowerShell в Windows

Настройка серверов windows и linux

Всем привет сегодня хочу рассказать как запустить скрипт PowerShell в Windows. Представьте ситуацию вы написали скрипт который сильно упрощает вам вывод информации по Active Directory, вы открываете оснастку powershell прописываете путь к своему скрипту нажимаете enter и получаете ошибку.

Не удается загрузить файл , так как выполнение скриптов запрещено для данной системы. Введите «get-help about_signing» для получения дополнительных сведений.

Смотрим как ее решить.

Ошибки при запуске скрипта PowerShell

Как запустить скрипт PowerShell в Windows-02

Как запустить скрипт PowerShell в Windows-02

Import-Module : Невозможно загрузить файл C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.2.0.17
531155\VMware.VimAutomation.Sdk.psm1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies по адресу https:/go.microsoft.com/fwlink/?LinkID=135170.
строка:1 знак:1
+ Import-Module VMware.PowerCLI
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : Ошибка безопасности: (:) [Import-Module], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess,Microsoft.PowerShell.Commands.ImportModuleCommand

так как выполнение сценариев отключено в этой системе

PowerShell обладает рядом режимов исполнения, которые определяют, какой тип кода разрешается выполнять. Все это управляется ключом реестра, живущим в HKLM. Существует 4 различных режима исполнения:

  • Ограниченный (Restricted): Политика исполнения по умолчанию, не допускает работу скриптов и разрешает работу лишь интерактивных команд.
  • Все подписанные (All Signed): Допускает работу всех скриптов. Правда, все скрипты и файлы конфигурации должны быть подписаны издателем, которому вы доверяете; данный режим подвергает вас риску работы подписанных (но вредоносных) скриптов, после получения подтверждения доверия издателю.
  • Удаленные подписанные (Remote Signed): Локальные скрипты работают без подписи. Все скачанные скрипты должны иметь цифровую подпись.
  • Неограниченный (Unrestricted): Все скрипты и файлы конфигурации, полученные из коммуникационных приложений, вроде Microsoft Outlook, Internet Explorer, Outlook Express и Windows Messenger работают после подтверждения, что вы понимаете, что файл исходит из Интернета; никакие цифровые подписи не требуются; данный режим подвергает вас риску работу неподписанных, вредоносных скриптов.

По умолчанию для PowerShell используется режим «Ограниченный». В этом режиме, PowerShell работает лишь как интерактивная оболочка. Он не допускает работу скриптов, и загружает лишь те файлы конфигурации, которые подписаны издателем, которому вы доверяете.

Разрешить выполнение скриптов powershell

Чтобы запускать созданные собою скрипты, необходимо разрешить выполнение ненадежных скриптов с помощью команды Set-ExecutionPolicy remotesigned и подтверждением (Внимание. для выполнения этой команды необходимо запустить PowerShell с правами администратора). После этого можно вновь запустить выполнения скрипта.

Как запустить скрипт PowerShell в Windows-03

Как запустить скрипт PowerShell в Windows-03

На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт. То же самое я проделал и для PowerCLI, что в результате дало возможность теперь его запускать без проблем.

Set-ExecutionPolicy remotesigned

Как запустить скрипт PowerShell по расписанию

Запуск taskschd.msc

Далее вы щелкаете по библиотеке правым кликом и из контекстного меню выбираете пункт «Создать задачу«.

Создание задачи в планировщике для запуска скрипта PowerShell

Задаете имя задания, советую запускать скрипт PowerShell от имени учетной записи «СИСТЕМА (SYSTEM)«, это будет гарантировать, что задание точно отработает.

Как запустить скрипт PowerShell в планировщике

Поставьте галку «Выполнять с наивысшими правами»

Настройка задачи в планировщике Windows

Переходим на вкладку тригеры и создаем новый. В параметрах выберите «При событии«

Запуск скриптов powershell по расписанию

  • Журнал — Приложение
  • Источник — MsiInstaller
  • Код события — 11707

Тут тригер будет срабатывать, когда в логах появится событие 11707.

параметры запуска скрипта PowerShell по расписанию

В действие оставляем «Запуск программы». В программе указываем powershell, а в параметрах задайте путь до самого скрипта, через параметр -File c:\scripts\id11707.ps1.

run powershell script

В итоге у меня вышло вот так.

Задание по запуску скрипта PowerShell

Как видим, мое задание по запуску скрипта PowerShell успешно создано и отработало в планировщике Windows.

Как выполнить скрипт powershell

Запуск скрипта PowerShell через исполняемый файл exe

Так же вы можете воспользоваться конвертированием скрипта PowerShell из формата ps1 в exe файл, после чего даже не потребуется менять политику запуска не подписанных скриптов. Так же exe скрипт можете запускать и через планировщик.

Популярные Похожие записи:
  • Как установить vSphere PowerCLI последнюю версиюКак установить vSphere PowerCLI последнюю версию
  • Установка и управление модулями PowerShell
  • Как массово поменять пароль локального администратора в домене
  • Не открывается пуск в Windows 10, 100% решениеНе открывается пуск в Windows 10, 100% решение
  • Как открыть PowerShell, все методыКак открыть PowerShell, все методы
  • Ошибка установки Unable to resolve package source в PowerShellОшибка установки Unable to resolve package source в PowerShell

Июл 16, 2021 15:22 Автор — Сёмин Иван

3 Responses to Как запустить скрипт PowerShell в Windows

PowerShell script :

Если вы используете Windows в качестве хоста, вы можете использовать powershell -noexit «& «»C:\my_path\yada_yada\run_import_script.ps1″»» (enter)

Выполнить PowerShell скрипт на компьютере с помощью GPO

date

15.11.2022

user

itpro

directory

PowerShell, Windows 10, Windows Server 2019, Групповые политики

comments

комментариев 18

Вы можете использовать групповые политики Windows для выполнения файлов различных скриптов при загрузке/выключении компьютера или входе/выходе пользователя. С помощью GPO вы можете исполнять на компьютерах домена не только классические файлы скриптов (.bat, .cmd, ,vbs), но и Startup/Shutdown/Logon/Logoff скрипты PowerShell (.ps1)

В современных версиях Windows вы можете настроить запуск логон/логоф скриптов PowerShell напрямую из редактора групповых политик (ранее приходилось вызывать ps1 скрипты из bat файлов через параметр исполняемого файла powershell.exe).

Запустите консоль управления доменными политиками GPMC.msc (Group Policy Management сonsole). Создайте новую политику (GPO) и назначьте ее на нужный контейнер с пользователями или компьютерами (можно использовать WMI фильтры GPO для более тонкого нацеливания политики). Перейдите в режим редактирования политики.

Вы должны выбрать раздел GPO для запуска PowerShell скрипта в зависимости от того, когда вы хотите выполнить ваш скрипт.

  • Если PS скрипт должен быть запущен при входе пользователя на компьютер (настройка параметров окружения пользователя, программ, например: вы хотите при входе пользователя автоматическое создавать подпись в Outlook на основе данных из пользователя AD, настроить параметры экранной заставки или стартового экрана) или при выходе пользователя, вам нужно перейти в раздел GPO: UserConfiguration-> Policies-> WindowsSettings-> Scripts(Logon/ Logoff);
  • Если вы хотите запускать скрипт PowerShell при загрузке компьютера (отключение устаревших протоколов: NetBIOS, SMBv1, настройка параметров безопасности компьютера и т.д.) или перед корректным выключением компьютера, вам нужно перейти в секцию GPO с настройками компьютера: Computer Configuration -> Policies -> Windows Settings -> Scripts (Startup / Shutdown).

Запуск PowerShell скрипта при загрузке компьютера с помощью групповой политики

Допустим, нам нужно запускать PowerShell скрипт при загрузке Windows. Для этого нужно выбрать Startup и в открывшемся окне перейди на вкладку PowerShell Scripts.

Запус скриптов PowerShell при загрузке компьютера групповыми политиками

Теперь нужно скопировать файл с вашим PowerShell скриптом на контроллер домена. Скопируйте ваш файл ps1 в каталог Netlogon на контроллере домена (например, \\winitpro.ru\netlogon ).

Т.к. мы настраиваем запуск Startup скрипта PowerShell, нужно в разрешениях ps1 файла (или всего каталога Machine\Scripts\Startup) проверить NTFS права доступа на чтение и выполнение (Read & Execute) для группы Domain Computers и/или Authenticated Users .

Теперь нужно нажать кнопку Add и укажите UNC путь к вашему файлу скрипта ps1 в Netlogon.

запуск скрипта powershell через групповые политики при загрузке компьютера

Если вы запускаете несколько PowerShell скриптов через GPO, вы можете управлять порядком из запуска с помощью кнопок Up/Down.

Для корректного выполнения скриптов PowerShell при загрузке компьютера нужно настроить время задержки перед запуском с помощью политики в разделе Computer Configuration -> Administrative Templates -> System -> Group Policy. Включите политику Configure Logon Script Delay (Настроить задержку сценария входа в систему) и укажите задержку в минутах перед запуском логон-скриптов (достаточное для окончания инициализации и загрузки всех необходимых служб). Обычно достаточно поставить здесь 1-2 минуты.

Если в вашем PowerShell скрипте используются сетевые инструменты Windows, для некоторых GPO нужно включить политику “Specify startup policy processing wait time” в разделе Computer Configuration -> Policies -> Administrative Templates -> System -> Group Policy. Попробуйте начать со значения 60 сек. После включения этой политики компьютер будет ждать 60 секунд прежде, чем начать применять стартап скрипты. Обычно этого достаточно для инициализации сетевой подсистемы Windows.

параметр gpo задержка запуска скриптов

В Windows Server 2012R2 и Windows 8.1 и выше PowerShell скрипты в GPO запускаются из каталога NetLogon в режиме Bypass. Это означает, что настройки политики запуска сценариев PowerShell игнорируются. Если вы хотите запустить скрипт из другого каталога, или в вашей сети остались клиенты с Windows 7 или Windows Server 2008R2, вам нужно настроить политику выполнения PowerShell скриптов.

По умолчанию в настройках безопасности Windows запрещен запуск PowerShell скриптов. Значение текущей настройки политики запуска сценариев PowerShell можно получить командой Get-ExecutionPolicy. Если политика не настроена, команда вернет Restricted (блокируются любые скрипты). Параметры безопасности запуска PowerShell скриптов можно настроить через политику “Включить выполнение сценариев” / “Turn On Script Execution” (в разделе GPO Computer Configuration -> Administrative Templates -> Windows Components -> Windows PowerShell). Возможные значения политики:

  • Allowonlysignedscripts (AllSigned)– можно запускать только подписанные скрипты PowerShell (“Как подписать скрипт PowerShell?”) –самый лучший сценарий с точки зрения безопасности;
  • Allowlocalscriptsandremotesignedscripts (RemoteSigned)– можно запускать любые локальные и подписанные удаленные скрипты;
  • Allowallscripts (unrestricted) – самый небезопасный вариант, т.к. разрешает запуск любых PowerShell скриптов.

политика запуска powershell скриптов Turn On Script Execution

Если вам не подходит не один из предложенных сценариев настройки политики запуска PowerShell скриптов, вы можете запускать PowerShell скрипты в режиме Bypass (скрипты не блокируются, предупреждения не появляются).

Для этого PowerShell скрипт нужно запускать из секции Startup -> Scripts. В этой секции вы можете настроить запуск ps1 сценария с помощью создания обычного Startup скрипта, запускающего исполняемый файл powershell.exe (по аналогии со сценарием, описанным в статье). Укажите:

  • Script name: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe
  • Script Parameters: -Noninteractive -ExecutionPolicy Bypass –Noprofile -file %~dp0MyPSScript.ps1

powershell.exe -Noninteractive -ExecutionPolicy Bypass

Символы %~dp0 при запуске на клиенте автоматически преобразуются в UNC путь до каталога со скриптом на SYSVOL.

В данном случае вы принудительно разрешили запуск любого (даже ненадежного) скрипта PowerShell с помощью параметра Bypass.

Перезагрузите компьютер, чтобы обновить настройки GPO и проверьте, что ваш PowerShell скрипт запустился после загрузки.

Выполнить PowerShell скрипт при входе пользователя в Windows

Рассмотрим сценарий автоматического запуска PowerShell скрипта при входе пользователя в Windows (или при выходе).

Если вам нужно запустить скрипт не при загрузке компьютера, а после входа пользователя в Windows (для каждого пользователя компьютера), вам нужно привязать GPO к OU Active Directory с пользователями. В этом случае PowerShell нужно настроить в следующем разделе User Configuration вашей GPO

Если вы хотите, чтобы политика выполнялась для всех пользователей определенного компьютера, нужно привязать политику к OU с компьютерами и включить режим замыкания групповой политики (параметр Configure User Group Policy Loopback Processing mode в разделе Computer Configuration -> Administrative Templates -> System -> Group Policy). Если не включать режим замыкания, то параметры из раздела User Configuration не будут применены к пользователю. Подробнее об этом в статье Почему GPO не применяется к пользователю или компьютеру?

В этом примере для теста я буду использовать простой PowerShell скрипт, который пишет в текстовый лог файл время входа пользователя.

выполнить powershell скрипт при входе пользователя в windows

  1. Скопируйте файл скрипта PowerShell в каталог \\winitpro.ru\NETLOGON\ на контроллере домена AD
  2. Перейдите в раздел User Configuration -> Policies -> Windows Settings -> Scripts -> Logon;
  3. Перейдите на вкладку PowerShell Scripts и добавьте ваш PS1 файл скрипта (используйте UNC путь, например \\winitpro.ru\NETLOGON\UserLog.ps1 );
  4. Выполните логофф пользователя на целевом компьютере и выполните вход;
  5. Ваш PowerShell скрипт будет запущен автоматически через GPO при входе пользователя;
  6. Вы можете убедится, что логон скрипт выполнен успешно под пользователем по событию с Event ID 5018 в журнале Microsoft-Windows-GroupPolicy/Operational Event Viewer:

Completed Logon script for winitpro\kbuldogov in 11 seconds.

событие запуска логон скрипта в event viewer

Если вы хотите, чтобы пользователь не мог получить доступ к своему рабочему столу до окончания работы скрипта, нужно включить параметр Run logon scripts synchronously = Enable (Computer Configuration\Administrative Templates\System\Logon). В этом случае explorer не закончится, пока не отработают все политики и логон скрипты (это увеличивает время входа!).

Обратите внимание, что скрипт выполняется с правами текущего пользователя. Если у пользователя есть права администратора на компьютере и на него действуют политики User Account Control (UAC), PowerShell скрипт не сможет внести изменения, требующие повышенных привилегий.

Для запуска PowerShell скриптов с привилегированными правами при входе простых пользователей, можно использовать назначенные задания планировщика. Для этого нужно:

  1. Создать задание Task Scheduler в разделе User Configuration -> Preferences -> Control Panel Settings -> Scheduled Task;
  2. На вкладке General указать что задание запускается от имени пользователя %LogonDomain%\%LogonUser и включите опцию Run with highest privileges ;запуск кода powerhell через задание планировщика групповых политик
  3. На вкладке Trigger укажите, что задание должно запускаться At log on;запуск задания при входе пользователя
  4. И на вкладке Actions укажите путь к вашему PowerShell скрипту:

Action: Start a program
Program/Script: C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe
Add Arguments (optional): -ExecutionPolicy Bypass -command «& \\winitpro.ru\Netlogon\yourscript.ps1»

Подробнее о настройке заданий планировщика Windows через GPO.

Такой PowerShell скрипт будет запускаться с правами администратора (если пользователь добавлен в группу локальных администраторов Windows).

Некоторые скрипты нужно запускать для каждого пользователя только один раз при первом входе на компьютер (инициализация рабочего окружения, копирование папок или конфигурационных файлов, создание ярлыков и т.д.). В одной из статей мы рассматривали cпособ запуска логон скрипт через GPO только один раз.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Как запустить Powershell: команды, скрипты, автоматизация.

Как запустить Powershell: команды, скрипты, автоматизация.

Мы открыли специальный раздел на форуме, http://www.linuxshop.ru/forum/f23-avtomatizacija-administrirovanija-windows.html где публикуем скрипты для windows автоматизирующие некоторые задачи, но windows не Linux и тут недостаточно в cmd просто записать фаил скрипт и запустить его ./ test . ps 1 он не исполнится т.к мы не в оболочке powershell это как bash или sh только в линукс она по умолчанию запущенны а тут нужна запустить.

Как запустить Powershell

Для запуска пуск-программ-стандартные- Windows PowerShell и тут есть два вариант PowerShell – консоль и PowerShell ISE удобная оболочка для запуска сценариев и их отладки. Для запуска повер шел из консоли: powershell_ise.exe

Запуск повершела в таск

powershell.exe -FILE путь _ к _ файлу .ps1

Команды:

Set-ExecutionPolicy

В PowerShell по умолчанию отключена возможность выполнять сценарии изменить настройка можно при помощи Set-ExecutionPolicy. Доступно 4 опции безопасности:

• Restricted — выполнение сценариев запрещено. Эта опция установлена по умолчанию. Команды в таком случае можно выполнять только в интерактивном режиме.

• All Signed — разрешено выполнение только сценариев, подписанных доверенным издателем.

• Remote Signed — разрешено выполнение любых сценариев, созданных локально, а сценарии, созданные на удаленных системах, выполняются только в том случае, если подписаны доверенным издателем.

• Unrestricted — разрешено выполнение абсолютно любых сценариев.

Запуск скрипта в среде PowerShell

Необходимо организовать запуск скриптов Powershell. Для примера запустим скрипт ps1, в котором получаем результат работы другого скрипта ps1 и работаем с этим значением.

Напишем первый скрипт, который будет что то возвращать, например json значение какого либо ключа

GetSomeValue.ps1
$answer = $ResponseAnswer.Content | Out-String | ConvertFrom-Json return $answer.someJsonKey

Теперь напишем скрипт, который запустить первый скрипт получит значение и выведет его на экран

CheckValue.ps1

$GetValue = & «$PSScriptRoot\GetSomeValue.ps1» If ($GetValue -eq «Ice») < write-Host "Success Value is " $GetValue >Else

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *