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

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

Как запустить скрипт 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
На вопрос жмем Y, для разрешения выполнения скриптов. После этих манипуляций вы сможете запустить ваш скрипт. То же самое я проделал и для PowerCLI, что в результате дало возможность теперь его запускать без проблем.

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

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

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

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

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

- Журнал — Приложение
- Источник — MsiInstaller
- Код события — 11707
Тут тригер будет срабатывать, когда в логах появится событие 11707.

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

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

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

Запуск скрипта PowerShell через исполняемый файл exe
Так же вы можете воспользоваться конвертированием скрипта PowerShell из формата ps1 в exe файл, после чего даже не потребуется менять политику запуска не подписанных скриптов. Так же exe скрипт можете запускать и через планировщик.
Популярные Похожие записи:
Как установить vSphere PowerCLI последнюю версию
Как запустить скрипт PowerShell на удаленном компьютере через SCCM- Установка и управление модулями PowerShell
- Как массово поменять пароль локального администратора в домене
Не открывается пуск в Windows 10, 100% решение
Как открыть PowerShell, все методы
Июл 16, 2021 15:22 Автор — Сёмин Иван
4 Responses to Как запустить скрипт PowerShell в Windows
PowerShell script :
Если вы используете Windows в качестве хоста, вы можете использовать powershell -noexit «& «»C:\my_path\yada_yada\run_import_script.ps1″»» (enter)
Написание и запуск сценариев в интегрированной среде сценариев Windows PowerShell
В этой статье описано как создавать, редактировать, выполнять и сохранять скрипты в области скриптов.
Создание и выполнение сценариев
В области скриптов можно открывать и редактировать файлы Windows PowerShell. Сейчас нас интересуют следующие типы файлов Windows PowerShell: файлы скриптов ( .ps1 ), файлы данных скриптов ( .psd1 ) и файлы модулей скриптов ( .psm1 ). Эти типы файлов имеют цветовую подсветку синтаксиса в редакторе области сценариев. Другие стандартные файлы, которые можно открыть в области сценариев, — это файлы конфигурации ( .ps1xml ), XML-файлы и текстовые файлы.
Политика выполнения Windows PowerShell определяет, можно ли выполнять сценарии, загружать профили Windows PowerShell и файлы конфигурации. Политика выполнения по умолчанию, Restricted, запрещает выполнение сценариев и блокирует загрузку профилей. Чтобы изменить эту политику выполнения и разрешить загрузку и использование профилей, см. описание Set-ExecutionPolicy и about_Signing.
Создание файла сценария
Нажмите кнопку Создать на панели инструментов или откройте меню Файл и выберите Создать. Созданный файл появится на вкладке «Новый файл» под текущей вкладкой PowerShell. Помните, что вкладки PowerShell отображаются, только если их несколько. По умолчанию создается файл сценария ( .ps1 ), но его можно сохранить с новым именем и расширением. На одной вкладке PowerShell может быть создано несколько файлов сценариев.
Открытие существующего сценария
Нажмите кнопку Открыть. на панели инструментов или откройте меню Файл и выберите пункт Открыть. В диалоговом окне Открыть выберите файл, который требуется открыть. Открытый файл появится в новой вкладке.
Закрытие вкладки сценария
На вкладке файла, которую нужно закрыть, щелкните значок закрытия (X) или откройте меню File (Файл) и выберите Close (Закрыть).
Если файл был изменен с момента последнего сохранения, будет предложено сохранить или отменить изменения.
Отображение пути к файлу
На вкладке файла наведите курсор на его имя. Появится подсказка с полным путем к файлу сценария.
Запуск сценария
Нажмите кнопку Выполнить сценарий на панели инструментов или откройте меню Файл и выберите пункт Выполнить.
Выполнение части сценария
- Выберите часть сценария в области сценариев.
- Нажмите кнопку Выполнить выделенный фрагмент на панели инструментов или откройте меню Файл и выберите пункт Выполнить выделенный фрагмент.
Остановка выполняемого сценария
Есть несколько способов остановить выполняемый скрипт.
- На панели инструментов щелкните Остановить операцию.
- Нажмите CTRL + BREAK .
- В меню Файл выберите Остановить операцию.
Нажатие клавиш CTRL + C также сработает, если нет выделенного текста. В противном случае нажатие клавиш CTRL + C приведет к копированию выделенного текста.
Написание и редактирование текста в области сценариев
В области скриптов текст можно копировать, вырезать, вставлять, искать и заменять. Также можно отменить и повторить последнее выполненное действие. Для этого используются те же клавиши, как и во всех других приложениях Windows.
Ввод текста в области сценариев
- Установите курсор в область сценариев, щелкнув кнопкой мыши любую ее часть или выбрав пункт Перейти в область сценариев в меню Вид.
- Создайте сценарий. Цветовая подсветка синтаксиса и заполнение нажатием клавиши TAB обеспечивают более широкие возможности для редактирования в интегрированной среде скриптов Windows PowerShell.
- Подробную информацию о заполнении нажатием клавиши TAB, помогающем при вводе кода, см. в статье How to Use Tab Completion in the Script Pane and Console Pane (Использование заполнения нажатием клавиши TAB в областях сценариев и консоли).
Поиск текста в области сценариев
- Чтобы найти текст в любой части скрипта, нажмите клавиши CTRL + F или выберите Find in Script (Найти в сценарии) в меню Edit (Правка).
- Чтобы найти текст после курсора, нажмите клавишу F3 или выберите Найти следующее в сценарии в меню Правка.
- Чтобы найти текст до курсора, нажмите клавиши SHIFT + F3 или выберите Find Previous in Script (Найти предыдущее в сценарии) в меню Edit (Правка).
Поиск и замена текста в области сценариев
Нажмите клавиши CRTL + H или в меню Edit (Правка) выберите Replace in Script (Заменить в сценарии). Введите текст, который нужно найти, и замещающий текст, затем нажмите клавишу ВВОД .
Переход к определенной строке текста в области сценариев
- В области сценариев нажмите клавиши CTRL + G или выберите Go to Line (Перейти к строке) в меню Edit (Правка).
- Введите номер строки.
Копирование текста в области сценариев
- В области сценариев выделите текст, который требуется скопировать.
- Нажмите клавиши CTRL + C , щелкните значок Copy (Копировать) на панели инструментов или выберите Copy (Копировать) в меню Edit (Правка).
Вырезание текста в области сценариев
- В области сценариев выделите текст, который требуется вырезать.
- Нажмите клавиши CTRL + X , щелкните значок Cut (Вырезать) на панели инструментов или выберите Cut (Вырезать) в меню Edit (Правка).
Вставка текста в области сценариев
Нажмите клавиши CTRL + V , щелкните значок Paste (Вставить) на панели инструментов или выберите Paste (Вставить) в меню Edit (Правка).
Отмена действия в области сценариев
Нажмите клавиши CTRL + Z , щелкните значок Undo на панели инструментов или выберите Отменить в меню Правка.
Повторное выполнение действия в области сценариев
Нажмите клавиши CTRL + Y , щелкните значок Повторить на панели инструментов или выберите Повторить в меню Правка.
Сохранение сценария
Звездочка рядом с именем скрипта обозначает, что файл не был сохранен после изменения. После сохранения звездочка исчезает.
Сохранение сценария
Нажмите клавиши CTRL + S , щелкните значок Сохранить на панели инструментов или выберите Сохранить в меню Файл.
Сохранение сценария с определенным именем
- В меню Файл выберите пункт Сохранить как. Появится диалоговое окно Сохранить как.
- В поле Имя файла введите имя файла.
- В поле Тип файла выберите тип файла. Например, в поле Тип сохраняемого файла выберите «Скрипты PowerShell ( *.ps1 )».
- Нажмите Сохранить.
Сохранение сценария в кодировке ASCII
По умолчанию интегрированная среда сценариев Windows PowerShell сохраняет новые файлы скриптов ( .ps1 ), файлы данных скриптов ( .psd1 ) и файлы модулей скриптов ( .psm1 ) в кодировке Юникод (BigEndianUnicode). Чтобы сохранить сценарий в другой кодировке, например ASCII (ANSI), используйте методы Save или SaveAs объекта $psISE.CurrentFile.
Следующая команда сохраняет новый сценарий в кодировке ASCII и с именем MyScript.ps1:
$psISE.CurrentFile.SaveAs("MyScript.ps1", [System.Text.Encoding]::ASCII)
Следующая команда заменяет текущий файл сценария на файл с таким же именем, но в кодировке ASCII:
$psISE.CurrentFile.Save([System.Text.Encoding]::ASCII)
Следующая команда возвращает кодировку текущего файла:
$psISE.CurrentFile.encoding
Интегрированная среда скриптов Windows PowerShell поддерживает следующие параметры кодировки: ASCII, BigEndianUnicode, Unicode, UTF32, UTF7, UTF8 и Default. Значение параметра Default зависит от системы.
Интегрированная среда скриптов Windows PowerShell не изменяет кодировку файлов скриптов при использовании команд «Сохранить» или «Сохранить как».
См. также:
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как запускать скрипты через консоль
Довольно часто мне задают вопрос о том, как запустить скрипт через консоль Windows. Многие запускают скрипты двойным кликом и не могут понять, почему скрипт прекращает свою работу. Поэтому решил написать небольшую инструкцию по запуску Perl-скриптов через консоль.
Как запустить консоль:

2. Ввести «cmd» и нажать Enter

Появится подобное окно
Консоль поддерживает множество команд — ntcmds
Однако, для того, чтобы запустить скрипт, достаточно уметь пользоваться одной — cd.
Как запустить скрипт:
Предположим, на диске C: есть директория script, и в ней лежит скрипт test.pl.
Для того, чтобы его запустить, требуется предварительно перейти в директорию со скриптом, набрав в консоли:
cd c:\script
и нажать Enter. На экране отобразится нечто подобное:

Теперь нужно ввести имя скрипта (test.pl) и нажать Enter:

Если скрипт не запустился, и консоль выдала подобный текст:
«test.pl» не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
или
‘test.pl’ is not recognized as an internal or external command,
operable program or batch file.
То запускать придется так:
c:\perl\bin\perl.exe test.pl
c:\perl\bin\perl.exe — путь до интерпретатора Perl, test.pl — запускаемый скрипт. Естественно, у вас в системе должен стоять ActivePerl или какой-нибудь другой интерпретатор.
Надеюсь, теперь мне перестанут задавать вопросы про консоль.
Автор Kaimi Опубликовано 9 марта, 2010 8 марта, 2010 Рубрики Windows Метки cmd, Perl, командная строка, консоль, консоль windows
Запуск скриптов Windows PowerShell из файлов проекта MSBuild
Этот раздел является частью серии учебников, основанных на требованиях к развертыванию на предприятии вымышленной компании Fabrikam, Inc. В этой серии учебников используется пример решения диспетчера контактов для представления веб-приложения с реалистичным уровнем сложности, включая приложение ASP.NET MVC 3, службу Windows Communication Foundation (WCF) и проект базы данных.
Метод развертывания в основе этих учебников основан на подходе с разделением файлов проекта, описанном в разделе Основные сведения о файле проекта, в котором процесс сборки управляется двумя файлами проекта: один содержит инструкции сборки, которые применяются к каждой целевой среде, а второй содержит параметры сборки и развертывания для конкретной среды. Во время сборки файл проекта для конкретной среды объединяется с файлом проекта, не зависящим от среды, чтобы сформировать полный набор инструкций по сборке.
Обзор задачи
Чтобы запустить скрипт Windows PowerShell в рамках автоматизированного или одношагового процесса развертывания, необходимо выполнить следующие высокоуровневые задачи:
- Добавьте скрипт Windows PowerShell в решение и в систему управления версиями.
- Создайте команду, которая вызывает скрипт Windows PowerShell.
- Экранирование всех зарезервированных XML-символов в команде.
- Создайте целевой объект в пользовательском файле проекта MSBuild и выполните команду с помощью задачи Exec .
В этом разделе показано, как выполнить эти процедуры. В задачах и пошаговых руководствах в этом разделе предполагается, что вы уже знакомы с целевыми объектами и свойствами MSBuild и понимаете, как использовать пользовательский файл проекта MSBuild для управления процессом сборки и развертывания. Дополнительные сведения см. в разделах Общие сведения о файле проекта и Общие сведения о процессе сборки.
Создание и добавление скриптов Windows PowerShell
В задачах в этом разделе используется пример скрипта Windows PowerShell с именем LogDeploy.ps1, чтобы проиллюстрировать выполнение скриптов из MSBuild. Скрипт LogDeploy.ps1 содержит простую функцию, которая записывает однострочные записи в файл журнала:
function LogDeployment < param([string]$filepath,[string]$deployDestination) $datetime = Get-Date $filetext = "Deployed package to " + $deployDestination + " on " + $datetime $filetext | Out-File -filepath $filepath -Append >LogDeployment $args[0] $args[1]
Скрипт LogDeploy.ps1 принимает два параметра. Первый параметр представляет полный путь к файлу журнала, в который требуется добавить запись, а второй — назначение развертывания, которое требуется записать в файл журнала. При запуске скрипт добавляет строку в файл журнала в следующем формате:
Deployed package to TESTWEB1 on 02/11/2012 09:28:18
Чтобы сделать скрипт LogDeploy.ps1 доступным для MSBuild, необходимо:
- Добавьте скрипт в систему управления версиями.
- Добавьте скрипт в решение в Visual Studio 2010.
Вам не нужно развертывать скрипт с содержимым решения, независимо от того, планируете ли вы запускать скрипт на сервере сборки или на удаленном компьютере. Один из вариантов — добавить скрипт в папку решения. В примере Диспетчера контактов, так как вы хотите использовать скрипт Windows PowerShell в процессе развертывания, имеет смысл добавить сценарий в папку решения Публикация.

Содержимое папок решений копируется для создания серверов в качестве исходного материала. Однако они не входят ни в какие выходные данные проекта.
Выполнение скрипта Windows PowerShell на сервере сборки
В некоторых сценариях может потребоваться выполнить Windows PowerShell скрипты на компьютере, который выполняет сборку проектов. Например, можно использовать скрипт Windows PowerShell для очистки папок сборки или записи в пользовательский файл журнала.
С точки зрения синтаксиса выполнение скрипта Windows PowerShell из файла проекта MSBuild аналогично запуску скрипта Windows PowerShell из обычной командной строки. Необходимо вызвать исполняемый файл powershell.exe и использовать параметр –command, чтобы предоставить команды, которые Windows PowerShell выполнять. (В Windows PowerShell версии 2 можно также использовать параметр –file. Команда должна иметь следующий формат:
powershell.exe –command "& < [Path to script] 'parameter1' 'parameter2' . >"
powershell.exe –command "& < C:\LogDeploy.ps1 'C:\DeployLogs\log.txt' 'TESTWEB1' >"
Если путь к скрипту содержит пробелы, необходимо заключить путь к файлу в одинарные кавычки, предшествующие амперсанду. Вы не можете использовать двойные кавычки, так как вы уже использовали их для заключения команды:
powershell.exe –command "& < &'C:\Path With Spaces\LogDeploy.ps1' 'C:\Path With Spaces\log.txt' 'TESTWEB1' >"
При вызове этой команды из MSBuild есть несколько дополнительных рекомендаций. Во-первых, необходимо включить флаг –NonInteractive , чтобы убедиться, что скрипт выполняется тихо. Затем следует включить флаг –ExecutionPolicy с соответствующим значением аргумента. Это указывает политику выполнения, которая Windows PowerShell будет применяться к скрипту, и позволяет переопределить политику выполнения по умолчанию, что может помешать выполнению скрипта. Вы можете выбрать один из следующих значений аргументов:
- Значение Unrestricted позволит Windows PowerShell выполнять скрипт независимо от того, подписан ли скрипт.
- Значение RemoteSigned позволит Windows PowerShell выполнять неподписанные скрипты, созданные на локальном компьютере. Однако скрипты, созданные в другом месте, должны быть подписаны. (На практике вы вряд ли создали скрипт Windows PowerShell локально на сервере сборки.
- Значение AllSigned позволит Windows PowerShell выполнять только подписанные скрипты.
Политика выполнения по умолчанию ограничена, что не позволяет Windows PowerShell запускать какие-либо файлы скриптов.
Наконец, необходимо экранировать все зарезервированные XML-символы, которые встречаются в команде Windows PowerShell:
- Замените одинарные кавычки ‘
- Замените двойные кавычки &кавычками;
- Замените амперсанды &
- При внесении этих изменений команда будет выглядеть следующим образом:
powershell.exe –NonInteractive –ExecutionPolicy Unrestricted –command "& < &'[Path to script]' '[parameter1]' '[parameter2]' >"
В пользовательском файле проекта MSBuild можно создать новый целевой объект и использовать задачу Exec для выполнения следующей команды:
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe C:\Path With Spaces\LogDeploy.ps1 C:\Path With Spaces\ContactManagerDeployLog.txt "" />
В этом примере обратите внимание на следующее:
- Все переменные, такие как значения параметров и расположение исполняемого файла Windows PowerShell, объявляются как свойства MSBuild.
- Включены условия, позволяющие пользователям переопределять эти значения из командной строки.
- Свойство MSDeployComputerName объявляется в другом месте файла проекта.
При выполнении этого целевого объекта в процессе сборки Windows PowerShell выполнит команду и запишет запись журнала в указанный файл.
Выполнение скрипта Windows PowerShell на удаленном компьютере
Windows PowerShell может выполнять скрипты на удаленных компьютерах с помощью удаленного управления Windows (WinRM). Для этого необходимо использовать командлет Invoke-Command . Это позволяет выполнять скрипт на одном или нескольких удаленных компьютерах без копирования скрипта на удаленные компьютеры. Все результаты возвращаются на локальный компьютер, с которого был запущен скрипт.
Прежде чем использовать командлет Invoke-Command для выполнения Windows PowerShell скриптов на удаленном компьютере, необходимо настроить прослушиватель WinRM для приема удаленных сообщений. Это можно сделать, выполнив команду winrm quickconfig на удаленном компьютере. Дополнительные сведения см. в статье Установка и настройка удаленного управления Windows.
В окне Windows PowerShell можно использовать следующий синтаксис для запуска скрипта LogDeploy.ps1 на удаленном компьютере:
Invoke-Command –ComputerName 'REMOTESERVER1' –ScriptBlock
Существует несколько других способов использования Invoke-Command для запуска файла скрипта, но этот подход является наиболее простым, когда необходимо указать значения параметров и управлять путями с пробелами.
При запуске из командной строки необходимо вызвать исполняемый файл Windows PowerShell и использовать параметр –command для предоставления инструкций:
powershell.exe –command "& "
Как и раньше, при выполнении команды из MSBuild необходимо предоставить дополнительные параметры и экранировать все зарезервированные XML-символы:
powershell.exe -NonInteractive -executionpolicy Unrestricted -command "& Invoke-Command –ComputerName 'REMOTESERVER1' -ScriptBlock < &'C:\Path With Spaces\LogDeploy.ps1' ' C:\Path With Spaces\Log.txt ' 'TESTWEB1' >"
Наконец, как и раньше, можно использовать задачу Exec в пользовательском целевом объекте MSBuild для выполнения команды:
%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe C:\Path With Spaces\LogDeploy.ps1 C:\Path With Spaces\ContactManagerDeployLog.txt ""/>
При выполнении этого целевого объекта в процессе сборки Windows PowerShell будет выполнять скрипт на компьютере, указанном в аргументе –computername.
Заключение
В этом разделе описывается выполнение скрипта Windows PowerShell из файла проекта MSBuild. Этот подход можно использовать для запуска скрипта Windows PowerShell локально или на удаленном компьютере в рамках автоматизированного или одношагового процесса сборки и развертывания.
Дополнительные материалы
Рекомендации по подписи скриптов Windows PowerShell и управлению политиками выполнения см. в статье Выполнение скриптов Windows PowerShell. Инструкции по выполнению Windows PowerShell команд с удаленного компьютера см. в статье Выполнение удаленных команд.
Дополнительные сведения об использовании пользовательских файлов проекта MSBuild для управления процессом развертывания см. в разделах Общие сведения о файле проекта и Общие сведения о процессе сборки.