Встановлення програм за допомогою менеджера пакетів PowerShell

До складу Windows 10 розробники включили новий PowerShell модуль з ім'ям PackageManagement. Модуль PackageManagement (раніше називався OneGet) дозволяє з консолі PoSh встановлювати, управляти і видаляти програми та програми з якогось зовнішнього (або локального) сховища, а також керувати списком підключених репозиторіїв. Простіше кажучи, в Windows 10 / Windows Server 2016 з'явилася можливість встановлювати програми з командного рядка за аналогією з відомою командою Linux  apt-get install.

Модуль менеджера пакетів PackageManagement дозволяє істотно спростити процедуру установки нового ПЗ. Вся установка по суті зводитися до виконання однієї команди PowerShell, і, найголовніше, користувачеві не потрібно самостійно шукати в інтернеті і викачувати дистрибутиви софта, ризикуючи завантажити застарілу або заражену версію. Установка проводиться з довіреного джерела програм. При оновленні програмного забезпечення в репозиторії, воно може бути автоматично оновлено на клієнтах.

зміст:

  • модуль PackageManagement
  • провайдери пакетів
  • Встановлення програм з репозиторію Chocolatey
  • видалення пакета

модуль PackageManagement

Модуль PackageManagement вже вбудований в Windows 10, а для його роботи потрібно PowerShell 5. Тому для роботи менеджера пакетів в Windows 8.1 потрібно спочатку встановити Windows Management Framework 5.0. Також Microsoft випустила окремий модуль для роботи менеджера пакетів і на PowerShell версій 3 і 4.

Виведемо список доступних командлетів PowerShell в модулі PackageManagement:

Get-Command -Module PackageManagement

У поточній версії модуля (v 1.0.0.1) є такі команди:

  • Find-Package - пошук пакета (програми) в доступних репозиторіях
  • Get-Package - отримати список встановлених пакетів
  • Get-PackageProvider - список провайдерів (постачальників пакетів), доступних на комп'ютері
  • Get-PackageSource - список доступних джерел пакетів
  • Install-Package - встановити пакет (програму) на комп'ютері
  • Register-PackageSource - додати джерело пакетів для провайдера
  • Save-Package - зберегти пакет локально без його установки
  • Set-PackageSource - задати провайдер в якості джерела пакетів
  • Uninstall-Package - видалити програму (пакет)
  • Unregister-PackageSource - видалити постачальника зі списку джерел пакетів

провайдери пакетів

Пакети обслуговуються різними провайдерам, які можуть отримувати пакети з різних джерел. Щоб вивести список всіх доступних провайдерів, виконайте:

Find-PackageProvider

За замовчуванням в системі є 2 встановлених джерела пакетів: nuget.org і PSGallery (офіційна онлайн галерея скриптів PowerShell від MSFT). Але вони призначені в першу чергу для програмістів і системних адміністраторів.

Примітка. В Nano Server є спеціальний ще провайдер NanoServerPackage, про нього в наступній статті.

Щоб отримати доступ до каталогу прикладного ПО, підключимо популярний репозитарій ПО - Chocolatey, містить на даний момент більше 4500 різних програм.

Встановимо новий провайдер Chocolatey:

Install-PackageProvider chocolatey

Підтвердимо установку провайдера, натиснувши Y.

Зробимо Chocolatey довіреною джерелом пакетів, щоб кожен раз при установці пакета не доводилося підтверджувати установку.

Set-PackageSource -Name chocolatey -Trusted

Переконаємося, що Chocolatey тепер присутній серед доступних репозитаріїв додатків:

Get-PackageSource

Name ProviderName IsTrusted Location
----                             ------------     ---------  --------
PSGallery PowerShellGet False https://www.powershellgallery.com/api/v2/
chocolatey Chocolatey True http://chocolatey.org/api/v2/

Встановлення програм з репозиторію Chocolatey

Розглянемо тепер, як встановити додаток (пакет) зі сховищ Chocolatey.

Список доступних для установки програми можна отримати безпосередньо на офіційному веб сайті Chocolatey (https://chocolatey.org/packages)

Також можна знайти і встановити потрібну програму прямо з консолі PowerShell. Наприклад, для перегляду pdf файлів нам знадобилося встановити додаток Adobe Acrobat Reader. Оскільки ми не знаємо повної назви додатка, для його установки нам потрібно отримати ім'я пакета в каталозі. Виконаємо пошук в репозиторії за ключовим словом 'adobe':

Find-Package -Name * adobe * -Source Chocolatey

В консолі з'явиться список всіх пакетів з даного ключу. Нам потрібен пакет  adobereader (Потрібно використовувати саме ім'я пакета з шпальти Name).

Запускаємо установку пакета Adobe Reader:

Install-Package -Name adobereader -ProviderName Chocolatey

Вгорі вікна PowerShell з'явиться повзунок, який сповіщає про початок завантаження пакета Adobe Reader. Відразу після закінчення завантаження, додаток встановиться в системі.

Ще один приклад. Припустимо, нам знадобилося мати на комп'ютері набір утиліт SysInternals. Щоб не качати його вручну, знайдемо пакет SysInternals в репозитарії Chocolatey і встановимо його.

Find-Package -Name Sysinternals | Install-Package

Оскільки пакет не вимагає установки, він зберігається на комп'ютер і зберігається в каталозі C: \ Chocolatey \ lib \. У нашому прикладі це каталог C: \ Chocolatey \ lib \ sysinternals.2016.11.18 \ tools

Відразу кілька додатків можна встановити всього однією командою:

Find-Package -Name firefox, winrar, notepadplusplus, putty, dropbox | Install-Package

видалення пакета

Видалення програми на комп'ютері виконується також однією командою. Наприклад, для видалення Adobe Reader, виконайте команду:

Uninstall-Package adobereader

Отже, ми розглянули нові можливості установки додатків в Windows з командного рядка PowerShell. У найближчому майбутньому, ймовірно, з'являться графічні надбудови над модулем PackageManagement, що дозволяють легко управляти установкою / видаленням ПО і простим користувачам без навичок роботи з CLI.