Для чего нужен Windows PowerShell – как его использовать

Установка приложений в Windows занимает много времени. Пользователь должен пройти серию шагов по исправлению программного обеспечения — выполнить поиск последней версии приложения, загрузить файл установщика, вручную установить приложение (несколько раз подряд) и снять флажки с нежелательных пакетов или рекламы.

Решение: Chocolatey (менеджер пакетов)

Диспетчер пакетов — это набор инструментов для автоматизации всего процесса установки, настройки и обновления приложений. Пакет состоит из двоичных файлов программного обеспечения, файлов конфигурации и метаданных. Метаданные, в свою очередь, содержат все детали приложения (имя, описание, номер версии и т. Д.) И список зависимостей, чтобы оно работало должным образом.

Несмотря на то, что существует много менеджеров пакетов для Windows, ни один из них не обладает простотой и безопасностью Chocolatey . С помощью небольшого количества кода вы можете развернуть приложение в каждой системе, а также отслеживать или управлять обновлениями этого программного обеспечения с течением времени.

Вот несколько причин, почему мы предпочитаем Шоколад:

  • Он имеет самую большую онлайн базу данных пакетов Windows. На данный момент существует 11 166 пакетов, поддерживаемых сообществом. Вы даже можете установить пакеты от NuGet и MyGet .
  • Представления пакетов проходят строгий процесс проверки модератором , включая проверку пакетов, проверку, проверку на вирусы с помощью VirusTotal и многое другое. Для организации использование репозитория пакетов сообщества не является обязательным.
  • Шоколад работает с более чем 20 технологиями инсталлятора для Windows. Он знает, как настроить приложение, реестр, управлять файлами и конфигурацией или любой комбинацией.
  • Chocolatey может работать даже с установленными приложениями. Он может принимать существующие файлы приложения в каталоге «Программы», а также обрабатывать удаления. Однако это зависит от используемого упаковщика и установщика программного обеспечения.

Что такое PowerShell и чем он хорош

Пользователи UNIX и Linux, а с какого-то мoмента и macOS привыкли к тому, что под рукой всегда есть Bash — немного старомодное, но универсальное и мощное средство, при помощи которого всего парой строк можно творить удивительные вещи. Прописываешь новый скрипт в cron — и готово, он уже крутится на твоем компьютере или на сервере и незаметно делает что-нибудь полезное.

Возвращаясь в Windows (а без этого иногда никак), понимаешь, что скрипты .bat хоть и хороши, но спасают не всегда: очень уж ограниченны их возможности. И если ты до сих пор считал, что PowerShell — это неведомая штуковина, ради которой нужно что-то там поднимaть и настраивать, то не спеши с выводами — он, если разобраться, совсем неплох.

Windows PowerShell — это расширяемое средство автоматизации с открытыми исходниками, которое состоит из оболочки (командной строки) и скриптового языка. Впервые он был показан в 2003 году (тогда он назывался Monad). PowerShell 2.0 вышел в составе Windows 7 и Windows Server 2008 R2 и с тех пор присутствует в Windows в качестве стандартного компонента. Его даже включили в Windows XP SP3. PowerShell построен на основе .NET Framework и интегрирован с ним. PowerShell может обращаться к COM, WMI и ADSI, а также, конечно же, исполняет консольные команды.

Читайте также:  Как переустановить Windows с диска или флешки

[ad name=»Responbl»]

В общем, «пошик» имеет крепкие связи с продуктами Microsoft, будь то Active Directory или почтовый сервер Exchange. Это позволяет без подключения к оснастке сервера обращаться к ним через консоль и отдaвать команды.

Если раньше ты не интересовался PowerShell, то, скорее всего, у тебя стоит вторая версия. Я рекомендую обновиться как минимум до третьей — она содержит куда больше возможностей и полезных фишек. Если не вдаваться в подробности, то в PowerShell 2.0 входит около десятка модулей и примерно 350 команд, а в PowerShell 3.0 уже около 2300 командлетов из более чем 70 модулей. «Хакер» также писал о том, чем отличается самый новый PowerShell пятой версии из Windows 10.

[ad name=»Responbl»]

Написание и запуск скриптов

Скрипты сохраняются в виде файлов с расширением .ps1. Несмотря на то, что PowerShell уже давно является нативной частью ОС Windows, вы не сможете запустить его скрипты простым двойным щелчком. Для этого надо кликнуть правой кнопкой по скрипту и выбрать «Запустить в PowerShell».

Курс по веб-разработке от Logitech и GeekBrains

1–3 марта, Онлайн, Беcплатно

События и курсы на

Также существуют системные политики, ограничивающие выполнение скриптов. Можно проверить текущие параметры политики, введя команду Get-ExecutionPolicy. Результатом будет одно из следующих значений:

  • Restricted — выполнение скриптов запрещено. Стандартная конфигурация;
  • AllSigned — можно запускать скрипты, подписанные доверенным разработчиком; перед запуском скрипта PowerShell запросит у вас подтверждение;
  • RemoteSigned — можно запускать собственные скрипты или те, что подписаны доверенным разработчиком;
  • Unrestricted — можно запускать любые скрипты.

Для начала работы необходимо изменить настройку политики запуска на RemoteSigned, используя команду Set-ExecutionPolicy:

Командлеты

Командлеты — это команды с предопределённой функцией, подобные условным операторам в языках программирования. У них есть несколько ключевых особенностей:

  • существуют системные, пользовательские и опциональные командлеты;
  • результатом выполнения командлета будет объект или массив объектов;
  • командлеты могут обрабатывать данные и передавать их другим командлетам с помощью конвейеров;
  • командлеты нечувствительны к регистру, так что нет никакой разницы между Get-ADUser, get-aduser и gEt-AdUsEr;
  • в качестве разделителя используется символ ; .

Каждый командлет содержит в себе глагол и существительное, разделяемые дефисом. Например:

  • Get-Process — отобразить текущие процессы, запущенные на компьютере;
  • Get-Service — отобразить список служб и их статус;
  • Get-Content — отобразить содержимое указанного файла, например Get-Content C:\Windows\System32\drivers\etc\hosts.

При необходимости список всех доступных командлетов можно вывести с помощью Get-Help-Category:

Также можно создавать и свои собственные командлеты.

Параметры

У каждого командлета есть несколько параметров, определяющих его работу. PowerShell ISE автоматически предлагает все доступные параметры с отображением их типа. Например, Get-Service-NameW* выводит список служб, у которых имя начинается с W. Если вы забыли, какие параметры у введённого командлета, воспользуйтесь Get-Member. Например, Get-Process | Get-Member:

Если вы не нашли того, что нужно, или не уверены в том, как правильно задаются параметры, можно даже запросить примеры с помощью параметра -Examples:

Читайте также:  Файл BOOT.INI: для чего он нужен, где его найти и как отредактировать

Некоторые командлеты также могут вызываться с помощью алиасов, например вместо Get-Help можно просто написать Help.

При написании больших скриптов или коллективной разработке можно пользоваться комментариями. Каждый комментарий начинается с символа #, а блок комментариев ограничивается комбинациями символов <# и #> в начале и в конце соответственно.

Конвейер

PowerShell позволяет осуществлять обмен данными между командлетами с помощью конвейера. Например:

  • GetService | SortObject -property Status — сортировка запущенных служб по статусу;
  • “Hello World!” | Out-File C:\ps\ — запись текста в файл.

Можно использовать несколько конвейеров. Например, следующий скрипт выводит список имён всех служб за исключением остановленных:

Get-Service | WHERE {$_.status -eq “Running”} | SELECT displayname

Что такое Windows PowerShell ISE

Windows PowerShell ISE (интегрированная среда сценариев) – это приложение, появившееся в PowerShell 2.0. Она позволяет запускать команды и писать, тестировать и отлаживать сценарии в едином графическом интерфейсе пользователя на базе Windows.

Этот ISE включает командную панель, одну для сценариев и одну для вывода. Панель вывода отображает результаты команд, запущенных в двух других панелях. Кроме того, графическое окружение можно изменить, выбрав расположение блоков.

PowerShell ISE поддерживает многострочное редактирование, окрашивание синтаксиса, завершение с помощью клавиши TAB и выборочное выполнение и использует собственный профиль, отличный от того, который используется для настройки PowerShell.

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

  1. Нажмите на клавиатуре компьютера клавиши Win (это клавиша с логотипом Windows) и R одновременно. Откроется окно «Выполнить».
  2. В поле Открыть: введите powershell_ise и нажмите кнопку ОК.

Как создать скрипт winget для установки нескольких программ.

В данном примере будет подготовлен пакетный скрипт для установки 3 программ: AIMP, Chrome, Notepad++

Вы можете самостоятельно добавить нужные приложения добавив в конец строки: winget install —id= <id приложения> -e ;

ID приложения можно посмотреть выполнив команду: winget install

Шаг 1: Откройте текстовый редактор

Шаг 2: Скопируйте и вставьте следующий код для PowerShell:

winget install —id= -e ; winget install —id= -e ; winget install —id=Notepad++.Notepad++ -e ;

Или если вы предпочитаете cmd скопируйте и вставьте следующий код для Командной строки:

winget install —id= -e && winget install —id= -e && winget install —id=Notepad++.Notepad++ -e &&

Шаг 3: Не забудьте поставить .bat или .ps1 в конце имени файла в зависимости от выбранного синтаксиса.

Шаг 4: Выберите опцию «Сохранить как тип» как «Все файлы» и нажмите «Сохранить».

Шаг 5: Запустите созданный файл и дождитесь завершения для установки выбранных вами программ.

В своем первоначальном выпуске репозитории winget уже были заполнены приличным объемом популярных классических программ. Вы найдете все, от обычных приложений до инструментов для разработчиков. Список включает в себя Google Chrome, Mozilla Firefox, Zoom, Steam, медиаплеер VLC, Spotify, терминал Windows, код Visual Studio, Ruby, Microsoft PowerToys и многие другие.

Просмотр списка доступных приложений winget

Чтобы управлять источниками, выполните winget source. Вы увидите список команд. Например, чтобы просмотреть текущие источники, выполните:

winget source list

В начальной версии winget есть только встроенный источник winget, управляемый Microsoft, расположенный по адресу В будущем вы сможете добавлять сторонние источники с помощью winget source add.

Вы можете увидеть больше информации о том, как использовать одну из встроенных команд winget, добавив к ней -?. Например, чтобы увидеть различные опции, которые вы можете использовать с winget, выполните следующую команду:

Читайте также:  Как включить технологию FreeSync на видеокартах Nvidia?

winget search -?

Microsoft наверняка добавит дополнительные функции в диспетчер пакетов Windows в будущем. В Windows 10 вполне удобно получать приложения из Магазина Microsoft, но даже через несколько лет после выпуска, система чувствует себя незаконченной. Диспетчер пакетов Windows должен это исправить упростив процесс быстрого получения программ и приложений.

Как установить PowerShell в Linux

PowerShell работает также и в Linux, но некоторые команды PowerShell отсутствуют в Linux. При запуске скриптов PowerShell в Linux возникнут проблемы в следующих случаях:

  • в скрипте используются команды, которые отсутствуют в Linux версии PowerShell (например, из-за того, что связаны с настройками Windows или неприменимы для Linux по другим причинам)
  • скрипт обращается к переменным окружения Windows
  • в скрипте используются утилиты Windows, отсутствующие в Linux

Могут быть и другие причины проблем, но много всё равно работает.

Многие дистрибутивы Linux поддерживаются официально и простые инструкции по установке PowerShell в свой дистрибутив, а также установочные файлы вы найдёте здесь:

Установка PowerShell в Kali Linux

PowerShell добавлен в стандартные репозитории Kali Linux, поэтому установка очень простая:

Установка PowerShell в Arch Linux, BlackArch

Чтобы узнать версию PowerShell выполните команду:

Фоновое исполнение заданий

В Windows PowerShell есть возможность фонового исполнения заданий, она представляет собой механизм, с помощью которого можно запустить на выполнение команду (например, которая долго выполняется ) в фоновом режиме, т.е. после запуска Вы возвращаетесь в текущую сессию и можете продолжить работу, не дожидаясь окончания работы команды. Данная возможность Вам понадобится тогда, когда у Вас возникнет необходимость запустить команду, работа которой занимает достаточно продолжительное время, а как Вы знаете, в течение этого времени сессия оболочки PowerShell блокируется до завершения работы команды, а Вам нужно продолжать работать.

Всеми заданиями, которые запущенны в фоновом режиме, Вы можете управлять, например, посмотреть список заданий, остановить работу задания, удалить задание, и, конечно же, посмотреть результат работы задания.

В Windows PowerShell для работы с фоновыми заданиями есть следующие командлеты:

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.

Для запуска в фоновом режиме необходимо написать команду Start-Job, а в фигурных скобках {} команду или набор команд, которые необходимо выполнить в фоновом режиме.

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

Запуск задачи в фоновом режиме

Фоновое исполнение заданий

Start-Job {Get-Service}

Смотрим на список задач запущенных в фоновом режиме

Отображаем результат работы задания Job1

Receive-Job Job1

Как видим, у нас появилась задача со статусом «Completed », т.е. она уже выполнилась (просто Get-Service отрабатывает быстро ).

Для того чтобы посмотреть результат работы фоновой задачи, т.е. командлета Get-Service, мы выполнили команду Receive-Job и передали ей имя задания (можно и значение идентификатора ). В результате у нас отобразился список служб.