В состав Windows 10 разработчики включили новый PowerShell модуль с именем PackageManagement . Модуль PackageManagement (ранее назывался OneGet) позволяет из консоли PoSh устанавливать, управлять и удалять приложения и программы из некого внешнего (или локального) репозитория, а также управлять списком подключенных репозиториев. Проще говоря, в Windows 10/ Windows Server 2016 появилась возможность устанавливать программы из командной строки по аналогии с известной командой Linux apt-get install .
Модуль менеджера пакетов PackageManagement позволяет существенно упростить процедуру установки нового ПО. Вся установка по сути сводиться к выполнению одной команды PowerShell, и, самое главное, пользователю не нужно самостоятельно искать в интернете и выкачивать дистрибутивы софта, рискуя скачать устаревшую или зараженную версию. Установка проводится из доверенного источника программ. При обновлении программного обеспечения в репозитории, оно может быть автоматически обновлено на клиентах.
Модуль 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). Но они предназначены в первую очередь для программистов и системных администраторов.
Чтобы получить доступ к каталогу прикладного ПО, подключим популярный репозитарий ПО – 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:Chocolateylib . В нашем примере это каталог C:Chocolateylibsysinternals.2016.11.18tools
Сразу несколько приложений можно установить всего одной командой:
Find-Package -Name firefox, winrar, notepadplusplus, putty, dropbox | Install-Package
Удаление пакета
Удаление приложения на компьютере выполняется также одной командой. К примеру, для удаления Adobe Reader, выполните команду:
Uninstall-Package adobereader
Итак, мы рассмотрели новые возможности установки приложений в Windows из командной строки PowerShell. В ближайшем будущем, вероятно, появятся графические надстройки над модулем PackageManagement, позволяющие легко управлять установкой/удалением ПО и простым пользователям без навыков работы с CLI.