В состав 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.
- Install Software in PowerShell
- Install Software Using the
Start-Process
Cmdlet in PowerShell - Install Software Silently in PowerShell
PowerShell scripting language automates multiple Windows operating system tasks and processes. For example, PowerShell can execute various files like installation files with format MSI or .exe.
This article will demonstrate several methods and approaches to installing Windows PowerShell software.
Install Software in PowerShell
The following are the steps to install software using PowerShell:
-
Open your Windows PowerShell terminal.
-
Find the location of the .exe file and change the working directory to this.
-
Then, use the change directory or
cd
command to change the current working directory of the console. -
Once we have adjusted our working directory, we may run our executable file by calling it to the command line.
Command:
However, this method’s caveat would be that it will not suffice if we want to pass specific arguments when installing. Before, we had a legacy command called msiexec
executed in the command prompt.
The following section will teach us the similar counterpart to msiexec
in Windows PowerShell.
Install Software Using the Start-Process
Cmdlet in PowerShell
The Start-Process
command can run executable files in Windows PowerShell. The PowerShell cmdlet stated above and the -FilePath
parameter takes the complete path of the .exe installation file.
Moreover, the -ArgumentList
parameter provides the internal parameters used by the executable file when the installation process starts in Windows PowerShell. Lastly, the -PassThru
parameter is used to verify that the command worked as we intended.
Suppose we want to open an executable file named installer_setup.exe
.
Example:
Start-Process -Wait -FilePath '.\installer_setup.exe' -ArgumentList '/s' -PassThru
Once the above script is executed, Windows PowerShell will run the defined executable file.
Install Software Silently in PowerShell
Running installation software in Windows PowerShell takes advantage of the msiexec
legacy command that we usually use to run installation software in the command prompt.
To execute the installation software silently, we must use specific msiexec
command parameters and pass them to the -ArgumentList
parameter in Windows PowerShell.
Below are the parameters and descriptions we need to run to install software silently in Windows PowerShell.
/s
: runs the installation in silent mode./v
: passes command-line values and public properties options through the Msiexec.exe facility./q
: sets user interface level.n
: interface level of the/q
parameter; will run the installation with no graphical user interface.
Combining all of the parameters above in one command is how the PowerShell script should look.
Start-Process -Wait -FilePath '.\setup.exe' -ArgumentList '/s /v/qn' -PassThru
The installation should run in silent mode with no window or wizard prompts by executing the code snippet above.
It is worth noting that both the /v
and /qn
parameters are executed with no spaces between them because the /qn
parameter is executed as a subfunction of the /v
parameter.
The above parameters are not the only existing parameters under the msiexec
command. You may run the msiexec
command in PowerShell for more info.
Разработчики включили в PowerShell новый модуль PackageManagement в Windows 10. PackageManagement (ранее называвшийся OneGet) позволяет устанавливать, управлять и удалять приложения и программы из внешнего (или локального) репозитория, а также управлять списком подключённых репозиториев из консоли PoSh. Другими словами, теперь вы можете устанавливать программы из командной строки в Windows 10/Windows Server 2016, как это делается в Linux, с помощью известной команды apt-get install.
Модуль PackageManagement упрощает установку нового программного обеспечения. Установка сводится к запуску одной команды PowerShell, и пользователю не нужно искать и загружать установочные файлы программного обеспечения в Интернете, что снижает риск загрузки устаревших или заражённых программ. Программное обеспечение устанавливается из надёжного источника. Когда программное обеспечение обновляется в репозитории, оно может автоматически обновляться на клиентах.
Модуль PackageManagement
Модуль PackageManagement уже интегрирован в Windows 10, и для него требуется PowerShell 5 и выше. Чтобы PackageManagement работал под Windows 8.1, сначала необходимо установить Windows Management Framework 5.0. Microsoft также выпустила отдельный модуль PackageManagement для работы в PowerShell v.3 и 4.
Посмотрим список доступных командлетов PowerShell в модуле PackageManagement:
Get-Command -Module PackageManagement
В текущей версии модуля (v 1.4.7) доступны следующие команды:
- Find-Package — поиск пакета (программы) в доступных репозиториях
- Find-PackageProvider — поиск провайдеров распространения пакетов
- Get-Package — показывает список установленных пакетов
- Get-PackageProvider — выводит список поставщиков пакетов, доступных на компьютере
- Get-PackageSource — выводит список доступных источников пакетов
- Import-PackageProvider — добавляет поставщиков пакетов управления пакетами в текущий сеанс
- Install-Package — устанавливает пакет (программу) на компьютер
- Install-PackageProvider — устанавливает одного или нескольких поставщиков пакетов управления пакетами.
- Register-PackageSource — добавляет источник пакета для поставщика
- Save-Package — сохраняет пакет локально, не устанавливая его
- Set-PackageSource — устанавливает поставщика в качестве источника пакета
- Uninstall-Package — удаляет программу (пакет)
- Unregister-PackageSource — удаляет провайдера из списка источников пакетов
Поставщики пакетов
Пакеты обслуживаются разными поставщиками, которые могут получать пакеты из разных источников. Чтобы отобразить список доступных поставщиков, выполните эту команду:
Find-PackageProvider
По умолчанию в системе установлено два источника пакетов: NuGet (nuget.org) и PowerShellGet (официальная онлайн-галерея скриптов PowerShell от MSFT). В первую очередь они рассчитаны на программистов и системных администраторов.
Примечание. В Nano Server есть специальный провайдер NanoServerPackage, о котором пойдёт речь в следующей статье.
Чтобы получить доступ к репозиторию прикладного программного обеспечения, давайте подключим популярный репозиторий программного обеспечения — Chocolatey, содержащий более 4500 различных программ.
Установите нового провайдера, Chocolatey:
Install-PackageProvider ChocolateyGet
Обратите внимание, что PowerShell (или Windows Terminal) нужно запускать с правами администратора. Как это сделать смотрите в статье «Как запустить PowerShell с правами администратора».
Если вы получили следующее сообщение об ошибке, то это означает, что PowerShell запущен без прав администратора:
Install-PackageProvider: Administrator rights are required to install packages in ''. Log on to the computer with an account that has Administrator rights, and then try again, or install in 'C:\Users\MiAl\AppData\Local\PackageManagement\ProviderAssemblies' by adding "-Scope CurrentUser" to your command. You can also try running the Windows PowerShell session with elevated rights (Run as Administrator).
Подтвердите установку провайдера, нажав Y.
Сделайте Chocolatey надёжным источником пакетов, чтобы каждый раз не подтверждать установку пакета из этого репозитория.
Set-PackageSource -Name chocolatey -Trusted
Убедитесь, что Chocolatey теперь доступен среди репозиториев приложений:
Get-PackageSource
Установка приложений из репозитория 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 ChocolateyGet
В верхней части окна PowerShell появится ползунок, указывающий, что пакет Adobe Reader загружается. Сразу после завершения загрузки приложение устанавливается в системе.
Другой пример. Допустим, вам нужен набор инструментов SysInternals. Чтобы не загружать его вручную, найдите в Chocolatey пакет SysInternals и установите его.
Find-Package -Name Sysinternals | Install-Package
Смотрите также: Что такое инструменты SysInternals и как их использовать?
Поскольку пакет не требует установки, он сохраняется на вашем компьютере и хранится в папке C:\ProgramData\chocolatey\bin\.
Вы можете установить несколько приложений одновременно, используя одну команду:
Find-Package -Name firefox, 7zip, notepadplusplus, putty, dropbox | Install-Package
Как удалить пакет
Вы также можете удалить пакет, используя всего одну команду. Например, чтобы удалить Adobe Reader, выполните эту команду:
Uninstall-Package adobereader
Итак, мы рассмотрели новые способы установки приложений Windows из командной строки PowerShell. В ближайшее время могут появиться графические надстройки для PackageManagement, которые позволят легко управлять установкой/удалением программного обеспечения для обычных пользователей без навыков работы с интерфейсом командной строки.
- Уникальная статья
Package Manager is a new feature in PowerShell 5.0 that allows you to download and install software packages from various sources. It also includes a provider for Microsoft installer and update files (MSI and MSU) to help manage Win32 programs.
Contents
- Modular architecture
- Cmdlets for all package management tasks
- Viewing sources and installing providers
- Searching and installing software
- The execution policy hurdle
- Displaying installed programs
- Conclusion
- Author
- Recent Posts
Wolfgang Sommergut has over 20 years of experience in IT journalism. He has also worked as a system administrator and as a tech consultant. Today he runs the German publication WindowsPro.de.
On the one hand, Microsoft wants to provide a counterpart to Linux package managers such as RPM or apt-get that can download and install packages together with their dependencies from online resources.
Modular architecture
On the other hand, this new PowerShell feature is supposed to enable you to manage conventional MSI packages or updates in the MSU format. Thus, in theory, Package Manager can also serve as an alternative to the Control Panel’s software management GUI.
Because Package Manager has to be able to process different kinds of formats, Microsoft adopted a modular approach where, depending on source and type, different providers come into play. Each provider can be responsible for one or multiple package sources. It already includes those providers for PowerShellGet, MSI, and MSU.
Displaying package providers with Get PackageProvider
Cmdlets for all package management tasks
You can perform the following tasks with Package Manager:
- Managing package sources and the corresponding providers
- Searching software packages
- Installing programs
- Viewing and removing installed software
For these purposes, Package Manager gathers several cmdlets in the PackageManagement module. To get an overview of the available cmdlets, you can execute this command:
Get-Command -Module PackageManagement
Viewing sources and installing providers
To get started, you probably will want to know which sources are available. Get-PackageSource is the cmdlet you need here.
Displaying sources with Get PackageSource
You will learn which provider to use for a certain source and whether this source is trustworthy or not.
If you then want to display the available programs of an online repository like Chocolatey, you have to run the following command:
Find-Package -Provider chocolatey
By default, PowerShell does not install the corresponding provider. However, it asks if you want to download and install the provider automatically when you first call it. To avoid this message, you can use the ForceBootstrap switch.
Automatically installing a Package Manager provider
Searching and installing software
Because most of the package sources offer a large number of packages, you’ll want to limit your search in most cases. You can use the parameter —Name for this purpose.
Find-Package -Provider chocolatey -name notepad*
This example would find the MSI package for Notepad++. If you want to install the package, you can pass the result of this call through a pipe to Install-Package.
Find-Package -Provider chocolatey -name notepadplusplus | Install-Package
If you used a public repository, PowerShell will ask you if you trust the source and if you want to install software from it.
The execution policy hurdle
Package Manager then appears to download and install the program. However, sometimes you will then quickly realize that the procedure failed without giving any error message.
The reason is often the execution policy. To ensure that all scripts will run without any prompting, you can configure the Bypass policy:
Set-ExecutionPolicy Bypass
Alternatively, you can manually download the MSI installer with a web browser and then execute the setup program via PowerShell:
Install-Package -Name ".\7z920.msi" -force
The parameter -Force suppresses the question if you really want to install the package.
Package Manager treats all package formats equally. Thus, adding a PowerShell module through the PowerShellGet provider works in just the same way. The only difference is that you would then use PSGallery as source.
Displaying installed programs
After you install a Win32 application, it usually appears in the Control Panel under Programs and Features > Uninstall a program. You can display the same list of programs with this PowerShell command:
Get-Package -Provider Programs -IncludeWindowsInstaller
Displaying installed programs with PowerShell and in the Control Panel
Like before, the -Name parameter allows you to restrict the output:
Get-Package -Provider Programs -IncludeWindowsInstaller -Name "7-Zip*"
In theory, you could pass the result of this command to Uninstall-Package to remove the software:
Get-Package -Provider Programs -IncludeWindowsInstaller -Name "7-Zip*" | Uninstall-Package
However, in my tests the cmdlet always failed to uninstall the program.
In addition to applications, you can list the installed updates through the MSU provider:
Get-Package -Provider MSU | fl -Property name, summary
The output of this command is more informative than that of Get-Hotfix because the property Summary gives you a description of the patches.
Conclusion
PowerShell’s Package Manager (v5.0) is a comprehensive framework for adding and removing various software packages. You can also install it on older Windows versions through the WMF.
However, because of Package Manager’s universal approach, you have to fiddle with different providers and package sources. This sometimes makes it a bit cumbersome to use. You also have to consider that the default repositories Microsoft provides are community projects and are therefore not trustworthy.
Subscribe to 4sysops newsletter!
Finally, managing Win32 programs with Package Manager is unreliable and often requires working with an execution policy of the lowest security level.
Содержание
Несмотря на то, что эта функциональная возможность появилась еще в апреле 2014-го года вместе с выходом Windows Management Framework 5.0 Preview, нативной она смогла стать только с окончательным релизом «десятки». Итак, давайте же посмотрим, какой модуль отвечает за эту функциональную возможность и как можно проинсталлировать программные продукты, не загружая инсталляционные файлы.
Модуль Windows PowerShell OneGet
Еще с выходом Windows Management Framework 5.0 Preview у командной оболочки Windows PowerShell появилось несколько новых возможностей, предназначенных для упрощения управления компьютерами. К таким возможностям относятся две занимательные технологии, а именно: Windows PowerShell Desired State Configuration и Certified for Windows Network Switches.
В случае с технологией Certified for Windows Network Switches – был добавлен ряд командлетов Windows PowerShell, отвечающих за управление сертифицированными для Windows сетевыми коммутаторами. То есть, появилось 19 новых командлетов, которые вы можете найти, выполнив в оболочке PowerShell команду «Get-Command *-NetworkSwitch*». Так как технология достаточно серьезная и заслуживает отдельного внимания, в данной статье я ограничусь лишь небольшим описанием и не буду рассматривать эту технологию более подробно.
А вот на второй технологии следует остановиться подробнее. В случае установки Windows Management Framework 5 или операционной системы Windows 10 вы можете воспользоваться средством, позволяющим существенно упростить на ваших компьютерах поиск и установку программного обеспечения. Таким средством является OneGet. OneGet – это агрегатор управления пакетами, то есть модуль, использующий специальные репозитории, предоставляющий единый интерфейс для обнаружения, установки и инвентаризации программного обеспечения. Иначе говоря, эта технология с одной стороны предоставляет набор командлетов, позволяющих конечному пользователю управлять инсталляционными пакетами (о которых мы с вами будем говорить немного ниже), а с другой стороны она предоставляет интерфейс для написания пакетов поставщиков.
Прежде чем мы с вами начнем разбираться с самим модулем, следует обратить внимание на несколько определений, которые тесно связаны с этой технологией, а именно:
- Пакет. Если говорить в двух словах, то пакет представляет собой программу, которая собирается и устанавливается из определенного источника при помощи любой доступной системой управления пакетами. Как правило, пакет предоставляет собой скомпилированный код, с дополнительной мета информацией, к которой может относиться описание пакета, его версия или «зависимости». Система управления пакетами, например, для выполнения автоматического обновления программного продукта до новой версии, для того чтобы удостовериться в том, что все зависимости пакета будут установлены, должна обработать такую мета информацию и, в случае необходимости, должна автоматически установить все отсутствующие пакеты;
- Репозиторий. Согласно википедии, репозитории представляют собой место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети. Изначально репозитории использовались Linux-системами, позволяя устанавливать пакеты, необходимые для работы системы из других расположений. Большинство репозиториев бесплатны, однако некоторые компании предоставляют доступ к собственным репозиториям за платную подписку. О репозиториях OneGet мы с вами поговорим немного ниже;
- Диспетчер пакетов. Представляет собой набор программных инструментов, отвечающий за автоматизацию процесса установки, обновления, настройки и удаления пакетов программного обеспечения. Как правило, пакеты включают в себя базу данных, в которой указываются предварительные требования и зависимости программного обеспечения, а также информацию о версии продукта, предотвращающую использование нерабочих программных продуктов. К диспетчерам пакетов можно отнести линуксовский apt-get или NuGet, который позже появился в Windows-системах. В свою очередь, OnetGet представляет собой логическое продолжение NuGet, работающее в качестве агрегатора для всех доступных диспетчеров пакетов, именуемых поставщиками.
Изначально Microsoft ограничивает использование большинства доступных поставщиков, предоставляя базовый набор, позволяющий обнаружить и установить дополнительные поставщики для управления программным обеспечением. Среди базовых поставщиков можно выделить:
- Bootstrap – поставщик, позволяющий обнаруживать остальных поставщиков;
- MSI – поставщик, предназначенный для обработки файлов MSI;
- MSU – в свою очередь, поставщик, отвечающий за обработку файлов обновлений Microsoft;
- ARP (Add/Remove programs) – поставщик, отвечающий за инвентаризационные данные о любом программном продукте, который зарегистрирован в компоненте системы «Удаление или изменение программы»;
- PowerShellGet – поставщик, позволяющий управлять различными модулями PowerShell.
Полный список поставщиков OneGet с их кратким описанием вы можете найти по следующей ссылке.
Далее в этой статье мы будем работать с поставщиком Chocolatey, который позволяет выполнять автоматическую установку большинства программных продуктов.
Сам модуль OneGet включает в себя 10 командлетов Windows PowerShell, большинство которых будут рассмотрены в следующем разделе настоящей статьи. К этим командлетам относятся:
-
- Find-Package – выполнение поиска пакетов;
- Get-Package – возвращает список всех установленных на компьютере пакетов;
- Get-PackageProvider – возвращает список поставщиков, которые на данном компьютере подключены к OneGet;
- Get-PackageSource — возвращает список источников пакетов, которые зарегистрированы для определенного поставщика пакетов;
- Install-Package – позволяет устанавливать один или несколько программных продуктов;
- Register-PackageSource – добавление для указанного поставщика пакетов источник пакета;
- Save-Package – позволяет сохранить пакет на локальный компьютер без последующей установки;
- Set-PackageSource – изменение для указанного поставщика пакетов источник пакета;
- Uninstall-Package – удаление одного или нескольких пакетов программных продуктов;
- Unregister-PackageSource – удаление зарегистрированного источника пакета.
Установка программного обеспечения при помощи OneGet
Вот и настало время самого процесса установки программных продуктов. Далее вы увидите, как можно установить поставщик пакетов, найти требуемое программное обеспечение, установить его, а также как можно удалить ненужное приложение и загрузить себе на компьютер инсталляционный пакет программного продукта. Начнем по порядку.
Установка поставщика пакетов Chocolatey
-
-
- Откройте оболочку Windows PowerShell и для отображения списка источников пакетов, которые зарегистрированы в OneGet на локальном компьютере выполните команду Get-PackageSource. Обратите внимание на то, что если в команде вы указываете конкретный поставщик пакета, то в таком случае командлет Get-PackageSource отобразит для вас только те источники, которые связаны с указанным вами поставщиком. В противном случае команда возвращает все источники пакетов, которые зарегистрированы в OneGet. Так как нам нужно просмотреть источники пакетов для всех провайдеров, команда будет выполняться без каких-либо дополнительных параметров. Обязательно обратите внимание на то, что на данном этапе у вас дополнительный поставщик пакетов, который будет использоваться для инсталляции программных продуктов еще не установлен. Выходные данные команды вы можете посмотреть на следующем изображении:
-
- Рис. 1. Команда Get-PackageSource.
- Как видно на предыдущей иллюстрации, поставщик Chocolatey не установлен на нашем локальном компьютере. Следовательно, это нужно исправить. Обратите внимание на то, что для добавления поставщика пакетов у параметра ExecutionPolicy оболочки PowerShell должно быть установлено значение Unrestricted. В противном случае добавить поставщик не получится. Напомню, что командлет Get-ExecutionPolicy позволяет вам отобразить политики выполнения для текущего сеанса. Политика выполнения – это часть стратегии безопасности оболочки Windows PowerShell, которая определяет, можно ли загружать файлы конфигурации и выполнять скрипты, а также определяет, для выполнения каких скриптов требуется цифровая подпись. По умолчанию используется значение «Restricted» (не загружает файлы конфигурации и не выполняет скрипты), поэтому если вы у себя не изменяли значение политики выполнения – выполните команду Set-Executionpolicy Unrestricted. Так как по умолчанию областью политики выполнения является значение LocalMachine, чтобы параметры политики распространялись только на текущего пользователя, вы можете к применяемой команде еще добавить параметр –Scope со значением CurrentUser. Выходные данные этих двух команд видно на следующей иллюстрации:
- Рис. 2. Изменение параметров политики выполнения.
- На этом этапе мы можем посмотреть список поставщиков, которые зарегистрированы в OneGet на текущем компьютере. Для этого вы можете воспользоваться командлетом Get-PackageProvider. Данный командлет, как я уже успел упомянуть немного выше, возвращает список поставщиков пакетов, которые уже подключены в OneGet. При желании вы можете отфильтровать результаты, основанные на всех или на части одного (нескольких) имени поставщика. Например, чтобы посмотреть, какие поставщики подключены на данный момент, вы должны выполнить командлет Get-PackageProvider без каких-либо дополнительных параметров. Как видно на следующей иллюстрации, изначально на компьютере у меня подключено 4 таких поставщика, о которых я уже сегодня вам рассказывал. Теперь, чтобы установить поставщик Chocolatey на компьютере вам нужно выполнить команду Get-PackageProvider –Name Chocolatey –ForceBootstrap, где параметр –ForceBootstrap отвечает за автоматическую установку поставщика. Обратите внимание на то, что, как правило, при установке поставщика Chocolatey также должен быть просинталлирован поставщик NuGet. Как видно на следующей иллюстрации, после повторного использования командлета Get-PackageProvider, устанавливаемый нами поставщик уже должен фигурировать в списке:
-
-
- Рис. 3. Установка поставщика пакетов Chocolatey.
-
Теперь мы можем сгенерировать полный список всех доступных в поставщиках пакетов и передать его по конвейеру командлету Export-CliXML для создания XML-представления объектов и их сохранения в XML-файле. Учтите, что экспортируемый вами список будет постоянно меняются и со временем все больше и больше пакетов будут добавляться в используемые вами репозитории. Соответственно, не забывайте время от времени заменять экспортируемый вами файл. Для того чтобы выполнить экспорт списка пакетов и сохранить этот список в папке C:\TestPosh вам нужно выполнить следующую команду: Find-Package | Export-CliXML C:\TestPosh\Test.xml
Учтите, что процедура экспорта обязательно займет у вас какое-то время. После того как команда закончит выполняться и у вас на компьютере будет создан XML файл, импортируйте его и, для удобства просмотра, при помощи конвейера и команды GridView, отвечающей за отображение результатов выполнения команды в окне в виде интерактивной таблицы, можете посмотреть, какие пакеты будут доступны для установки. Естественно, этот список пакетов вы можете открыть при помощи любого приложения, которое способно обрабатывать XML файлы, например, средствами того же Excel. Данная команда, как вы видите на следующей иллюстрации, выглядит следующим образом: Import-CliXML С:\TestPosh\Test.xml | Out-GridView
Рис. 4. Просмотр списка пакетов, доступных для установки.
Так как поставщик уже установлен, можно переходить к следующей части данной процедуры, а именно к
Установке программного обеспечения средствами PowerShell
Прежде чем устанавливать программные продукты нам следует посмотреть, что же уже установлено на компьютере. Для выполнения этой задачи вы можете воспользоваться командлетом Get-Package, который возвращает список всех пакетов программного обеспечения, установленных на локальном компьютере как с помощью OneGet, так и другими средствами инсталляции приложений. При желании вы также можете запускать командлет Get-Package и на удаленных компьютерах, запустив его как часть Invoke-Command, команды Enter-PSSession или скрипта.
В том случае, если вы хотите получить информацию по конкретному программному обеспечению, например, по установленным продуктам Microsoft Office 2013, вы можете наряду с данным командлетом использовать параметр –Name с соответствующим значением, например, Get-Package -Name «office 2013». Выходные данные этого командлета видны ниже:
Рис. 5. Вывод командлета Get-Package.
Перед инсталляцией программного обеспечения попробуем определиться с тем, что же нам нужно установить. Так как на машине установлен только офис 2013 и еще несколько приложений, далее я вам покажу, как можно установить такие программные продукты, как Adobe Creative Cloud, Adobe Reader, Notepad++, а также Process Explorer, Process Monitor и WinRar.
Ввиду того, что до самого процесса инсталляции нам нужно сами пакеты локализовать, следует воспользоваться возможностями командлета Find-Package. Как вы уже заметили немного ранее, данный командлет позволяет выполнять поиск инсталляционных пакетов в доступных на локальном компьютере источниках пакетов. В том случае, если вы не будете использовать с данным командлетом какие-либо параметры, вам будет выведен командой полный список всех приложений, как было заметно ранее.
Например, для начала попробуем найти приложения Adobe, которые доступны для инсталляции из добавленного нами поставщика Chocolatey. Для этого достаточно помимо самого командлета указать параметр –Name и в качестве его значения ввести искомый программный продукт. Так как после слова Adobe у инсталляционных пакетов может быть указано имя продукта, следует ввести имя продукта следующим образом: Adobe*, как показано на следующей иллюстрации. Как вы видите, модуль OneGet обнаружил в репозитории следующий инсталляционный пакет: adobe-creative-cloud версии 1.0. В принципе, это один из искомых продуктов, а это значит, что его следует проинсталлировать. Для этого, как также можно заметить на следующей иллюстрации, нужно воспользоваться возможностями командлета Install-Package. Чтобы установить Creative Cloud выполняется следующая команда Install-Package -Name adobe-creative-cloud –Force, где параметр Force, как принято в PowerShell, переопределяет ограничения, препятствующие выполнению команды до тех пор, пока изменения не начнут нарушать требования безопасности. Выходные данные этих команд можно увидеть на следующей иллюстрации:
Рис. 6. Установка Adobe Creative Studio
Теперь, после того как первый программный продукт был установлен попробуем выполнить поиск определенной версии Adobe Reader. Для этого помимо уже известной команды Find-Package –Name AdobeReader следует добавить параметр –AllVersions, который возвращает все доступные версии пакета, или все версии пакета, которые находятся в диапазоне, указанном в параметрах MinimumVersion и MaximumVersion. Обратите внимание на то, что этот параметр не является обязательным, так как изначально поиск отображает свежайшую версию программного продукта. Теперь из всех доступных версий нам следует выбрать ту, которая должна быть проинсталлирована на компьютере, например, пусть это будет версия 2015.007.20033. для того, чтобы установить именно эту версию ридера, следует для команды Install-Package -Name AdobeReader добавить параметр –RequiredVersion со значением 2015.007.20033, который определяет точную версию пакета, который вы хотите установить. Также вы можете установить максимально доступную версию продукта, добавив параметр MaximumVersion с соответствующим значением. Вывод этих команд виден на следующей иллюстрации:
Рис. 7. Установка программного продукта определенной версии
Если вам нужно установить свежайшую версию программного продукта и в то же время вы не хотите вводить в оболочке PowerShell несколько команд, вы можете обобщить поиск и установку пакета при помощи конвейера. Например, в случае с установкой последней версии текстового редактора Notepad++ вы можете выполнить следующую команду: Find-Package -Name NotepadPlusPlus | Install-Package –Force. Таким образом, вы выполняете поиск пакета в репозитории и в случае нахождения результата сразу инсталлируете его в тихом режиме. Процесс выполнения установки этого программного продукта виден ниже:
Рис. 8. Установка Notepad++
Теперь, так как согласно указанному выше заданию осталось установить еще Process Explorer, Process Monitor и WinRar, попробуем установить сразу несколько программных пакетов. Для этого желательно точно знать, как называются эти пакеты в самом репозитории. Как я уже писал ранее, это можно проверить при помощи командлета Find-Package | Out-GridView. После того как будут известны имена пакетов можно заняться самой установкой. Для этого вы можете выполнить следующую команду: Find-Package -Name procexp, procmon, winrar | Install-Package. В данном примере, как видно на следующей иллюстрации, я специально не указываю параметр Force, чтобы вы могли обратить внимание на весь процесс установки нескольких программных пакетов одновременно.
Рис. 9. Установка нескольких программ одновременно
Сохранение и удаление программ
Последние два командлета, которые будут рассмотрены в этой статье отвечают за сохранение инсталляционного пакета и удаление проинсталлированной программы. Начнем с сохранения.
Для того чтобы сохранить инсталляционный пакет можно воспользоваться очередным командлетом модуля OneGet, а именно модулем Save-Package. Данный командлет позволяет сохранить пакеты на локальном компьютере без их последующей установки. По умолчанию данный командлет сохраняет последнюю версию программного продукта, однако если вы к текущему командлету добавите параметр AllVersions, у вас на компьютере будут сохранены все размещенные в репозитории версии выбранной вами программы. Более того, аналогично параметрам командлетов поиска и установки программ, помимо сохранения всех версий, при помощи параметров -MaximumVersion и –MinimumVersion, вы еще можете выбрать диапазон версий пакета, который желаете сохранить. Чтобы сохранить пакет на своем компьютере, помимо параметра Name и, в случае необходимости, параметра, отвечающего за версию продукта, вы должны указать параметр Path с будущим расположением вашего инсталлятора.
Как видно на следующей иллюстрации, команда Save-Package –Name Procexp –Path C:\TestPosh сохранит последнюю версию Process Explorer в папке C:\TestPosh:
Рис. 10. Сохранение Process Explorer на компьютере
Если вы случайно установили не тот пакет, вы всегда можете при помощи модуля OneGet его удалить. Для этого используется командлет Uninstall-Package. Как и в случае с остальными командлетами данного модуля, для удаления программы вам нужно указать параметр Name с соответствующим именем приложения, а также, для тихого удаления, вы можете использовать параметр Force. Например, чтобы удалить с компьютера установленный ранее WinRAR вам нужно выполнить следующую команду: Uninstall-Package –Name WinRAR –Force, как показано ниже:
Рис. 11. Удаление установленной программы
Заключение
Из этой статьи вы узнали об одной из особенностей новой операционной системы от Microsoft, а именно об инсталляции программных продуктов средствами командной оболочки Windows PowerShell. Я вам рассказал о самом модуле OneGet, об основной терминологии, используемой наряду с этой технологией и о том, какие существуют предустановленные поставщики пакетов. Вы узнали о том, как можно подключить к OneGet сторонний поставщик пакетов и как при его помощи можно находить, устанавливать, сохранять и удалять программные продукты.
источник