Установка msi через powershell

Обновлено: 04.07.2024

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Разработчики включили в 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:

В текущей версии модуля (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 — удаляет провайдера из списка источников пакетов


Поставщики пакетов

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


Примечание. В Nano Server есть специальный провайдер NanoServerPackage, о котором пойдёт речь в следующей статье.

Чтобы получить доступ к репозиторию прикладного программного обеспечения, давайте подключим популярный репозиторий программного обеспечения — Chocolatey, содержащий более 4500 различных программ.

Установите нового провайдера, Chocolatey:

Обратите внимание, что PowerShell (или Windows Terminal) нужно запускать с правами администратора. Как это сделать смотрите в статье «Как запустить PowerShell с правами администратора».

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


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


Убедитесь, что Chocolatey теперь доступен среди репозиториев приложений:


Установка приложений из репозитория Chocolatey

Давайте посмотрим, как установить приложение (пакет) от Chocolatey.

Вы также можете найти и установить приложения прямо из консоли PowerShell. Например, для просмотра файлов PDF необходимо установить Adobe Acrobat Reader. Поскольку мы не знаем полного имени приложения, нам нужно было получить имя пакета в каталоге для его установки. Выполните поиск в репозитории по ключевому слову «adobe»:


Список всех пакетов, содержащих это ключевое слово, появится в консоли. Нам нужен adobereader (это имя пакета из столбца Name, которое нам нужно использовать).

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


В верхней части окна PowerShell появится ползунок, указывающий, что пакет Adobe Reader загружается. Сразу после завершения загрузки приложение устанавливается в системе.


Другой пример. Допустим, вам нужен набор инструментов SysInternals. Чтобы не загружать его вручную, найдите в Chocolatey пакет SysInternals и установите его.


Поскольку пакет не требует установки, он сохраняется на вашем компьютере и хранится в папке C:\ProgramData\chocolatey\bin\.


Вы можете установить несколько приложений одновременно, используя одну команду:

Как удалить пакет

Вы также можете удалить пакет, используя всего одну команду. Например, чтобы удалить Adobe Reader, выполните эту команду:

Итак, мы рассмотрели новые способы установки приложений Windows из командной строки PowerShell. В ближайшее время могут появиться графические надстройки для PackageManagement, которые позволят легко управлять установкой/удалением программного обеспечения для обычных пользователей без навыков работы с интерфейсом командной строки.

Описание проблемы

Я работаю в очень крупной организации, и поэтому у нас легко привлекают для каких-то работ подрядчиков. Появилась задача модернизировать сервис Directum, это такой документооборот. Нашли подрядчика, создали для него виртуальную машину и выдали полные административные права. Через какое-то время подрядчик обратился с проблемой, что у него нет прав на установку программ и он получал ошибку:

Для установки клиентской части системы DIRECTUM необходимо запустить инсталлятор от имени администратора

Необходимо запустить инсталлятор от имени администратора

В английском варианте это выглядит вот так:

You must be logged in as an administrator when installing this program

You must be logged in as an administrator when installing this programm

В качестве операционной системы выступает Windows 10 1909.

Просмотр свойств системы Windows 10

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

Свойства MSI файла

Попробуем зажать клавишу Shift и выбрать из меню пункт "Запуск от имени другого пользователя".

Запуск MSI от имени другого пользователя

Даже обладая так же административными правами на данной системе вы получите ошибку:

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

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

Как обойти ошибку "Необходимо запустить инсталлятор от имени администратора"

Самый простой и действенный метод, который я использую в своей практике, это запуск командной строки или оболочки PowerShell в режиме администратора. Благодаря этому методу вы обойдете ограничение на запуск MSI пакетов в режиме администратора. Далее, когда вы запустили, например командную строку, вам необходимо перейти в каталог, где лежит ваш MSI пакет. В моем примере, это папка C:\Share. Выполним команду:

Командой dir мы выведем содержимое каталога.

Как обойти ошибку "Необходимо запустить инсталлятор от имени администратора"

Запускаем ваш MSI пакет.

В PowerShell это просто .\имя.MSI в cmd это просто имя.MSI

Как видите, теперь ошибка "You must be logged in as an administrator when installing this program" не появилась и наш дистрибутив готов к дальнейшей установке.

Запуск MSI пакета в PowerShell

Установка MSI через msiexec

Есть такая утилита командной строки msiexec, если вы ее запустите со специальным ключом, то она сразу установит MSI пакет, вам даже не нужно запускать командную строку в режиме администратора, для этого есть ключ /a. Выполните команду в cmd, PowerShell или вообще окне выполнить.

msiexec /a C:\Share\Client.msi (Где C:\Share\Client.msi путь до вашего MSI)

Установка MSI через msiexec

Добавление пункта Install as Administrator

Еще у вас есть возможность внести изменение в реестр Windows и добавить в принудительном порядке пункт "Install as Administrator" для MSI пакетов. Для этого вы можете скачать у меня готовый reg файл или создать собственный вот с таким содержимым:

[HKEY_CLASSES_ROOT\Msi.Package\shell\runas]
@="Install &As Administrator. "

[HKEY_CLASSES_ROOT\Msi.Package\shell\runas\command]
@="msiexec /i \"%1\""

Далее запускаем его и соглашаемся с внесением изменений.

Добавление через реестр пункта Install as Administrator для MSI

Теперь у вас при правом клике по MSI пакету, будет высвечиваться пункт "Install as Administrator"

Доступ к приложениям, использующим установщик Windows, можно получить в классе Win32_Product WMI, но не все современные приложения используют установщик Windows. Установщик Windows обычно не управляет приложениями, использующими другие процедуры установки. Конкретные техники работы с этими приложениями зависят от программного обеспечения установщика и решений, принятых разработчиком приложения. Например, для управления приложениями, установленными путем копирования файлов в папку на компьютере, обычно не используются описанные здесь методы. Вы можете управлять этими приложениями, как файлами и папками, с помощью способов, приведенных в статье Работа с файлами и папками.

Класс Win32_Product не оптимизирован для запросов. Если выполняются запросы, использующие фильтры с подстановочными знаками, то WMI будет использовать поставщика MSI для перечисления всех установленных продуктов, а затем последовательно проанализирует весь список с применением фильтра. При этом также инициируется проверка согласованности установленных пакетов для проверки и исправления установки. Проверка выполняется медленно и может привести к ошибкам в журнале событий. Подробные сведения см. в статье базы знаний 974524.

Создание списков приложений установщика Windows

Чтобы создать список приложений, установленных с помощью установщика Windows в локальной или удаленной системе, используйте следующий простой запрос WMI:

Чтобы отобразить все свойства объекта Win32_Product, используйте параметр Properties командлетов форматирования, например Format-List со значением * (все).

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

Создание списка всех удаленных приложений

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

В этом разделе можно найти приложения. Чтобы упростить просмотр раздела Uninstall, можно сопоставить диск PowerShell с таким путем реестра:

Теперь диск с именем "Uninstall" можно использовать для быстрого и удобного поиска установок приложений. Количество установленных приложений можно найти, подсчитав количество разделов реестра в разделе "Удаление": Диск PowerShell:

С помощью разных методов, начиная с Get-ChildItem , можно дальше выполнять поиск в списке приложений. Чтобы получить список приложений и сохранить их в переменную $UninstallableApplications , используйте следующую команду:

Чтобы отобразить значения записей реестра в подразделах реестра раздела "Удаление", используйте метод GetValue. Значение метода является записью реестра.

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

Нет никакой гарантии, что значения DisplayName уникальны.

Установка приложений

Вы можете использовать класс Win32_Product для удаленной или локальной установки пакетов установщика Windows.

Чтобы установить приложение, запустите PowerShell, используя параметр "Запуск от имени администратора".

Если установка выполняется удаленно, используйте сетевой UNC-путь, чтобы указать путь к пакету MSI, так как подсистема WMI не распознает пути PowerShell. Например, чтобы установить пакет NewPackage.msi, расположенный в сетевой папке \\AppServ\dsp на удаленном компьютере PC01, введите следующую команду в командной строке PowerShell:

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

Удаление приложений

Удаление пакета установщика Windows с помощью PowerShell работает примерно так же, как и установка пакета. Далее представлен пример, в котором пакет для удаления выбирается на основе имени. В некоторых случаях его может быть проще отфильтровать с помощью IdentifyingNumber:

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

Выходные данные при необходимости можно отфильтровать по отображаемому имени:

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

Обновление приложений установщика Windows

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

Установка программ средствами PowerShell в Windows 10

Несмотря на то, что эта функциональная возможность появилась еще в апреле 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 ограничивает использование большинства доступных поставщиков, предоставляя базовый набор, позволяющий обнаружить и установить дополнительные поставщики для управления программным обеспечением. Среди базовых поставщиков можно выделить:

Полный список поставщиков OneGet с их кратким описанием вы можете найти по следующей ссылке.

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

Сам модуль OneGet включает в себя 10 командлетов Windows PowerShell, большинство которых будут рассмотрены в следующем разделе настоящей статьи. К этим командлетам относятся:

Установка программного обеспечения при помощи OneGet

Вот и настало время самого процесса установки программных продуктов. Далее вы увидите, как можно установить поставщик пакетов, найти требуемое программное обеспечение, установить его, а также как можно удалить ненужное приложение и загрузить себе на компьютер инсталляционный пакет программного продукта. Начнем по порядку.

Установка поставщика пакетов Chocolatey

Установка программ средствами PowerShell в Windows 10

Установка программ средствами PowerShell в Windows 10

Теперь мы можем сгенерировать полный список всех доступных в поставщиках пакетов и передать его по конвейеру командлету 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

Установка программ средствами PowerShell в Windows 10

Рис. 4. Просмотр списка пакетов, доступных для установки.

Так как поставщик уже установлен, можно переходить к следующей части данной процедуры, а именно к

Установке программного обеспечения средствами PowerShell

Прежде чем устанавливать программные продукты нам следует посмотреть, что же уже установлено на компьютере. Для выполнения этой задачи вы можете воспользоваться командлетом Get-Package, который возвращает список всех пакетов программного обеспечения, установленных на локальном компьютере как с помощью OneGet, так и другими средствами инсталляции приложений. При желании вы также можете запускать командлет Get-Package и на удаленных компьютерах, запустив его как часть Invoke-Command, команды Enter-PSSession или скрипта.

В том случае, если вы хотите получить информацию по конкретному программному обеспечению, например, по установленным продуктам Microsoft Office 2013, вы можете наряду с данным командлетом использовать параметр –Name с соответствующим значением, например, Get-Package -Name «office 2013». Выходные данные этого командлета видны ниже:

Установка программ средствами PowerShell в Windows 10

Рис. 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, переопределяет ограничения, препятствующие выполнению команды до тех пор, пока изменения не начнут нарушать требования безопасности. Выходные данные этих команд можно увидеть на следующей иллюстрации:

Установка программ средствами PowerShell в Windows 10

Рис. 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 с соответствующим значением. Вывод этих команд виден на следующей иллюстрации:

Установка программ средствами PowerShell в Windows 10

Рис. 7. Установка программного продукта определенной версии

Если вам нужно установить свежайшую версию программного продукта и в то же время вы не хотите вводить в оболочке PowerShell несколько команд, вы можете обобщить поиск и установку пакета при помощи конвейера. Например, в случае с установкой последней версии текстового редактора Notepad++ вы можете выполнить следующую команду: Find-Package -Name NotepadPlusPlus | Install-Package –Force. Таким образом, вы выполняете поиск пакета в репозитории и в случае нахождения результата сразу инсталлируете его в тихом режиме. Процесс выполнения установки этого программного продукта виден ниже:

Установка программ средствами PowerShell в Windows 10

Рис. 8. Установка Notepad++

Теперь, так как согласно указанному выше заданию осталось установить еще Process Explorer, Process Monitor и WinRar, попробуем установить сразу несколько программных пакетов. Для этого желательно точно знать, как называются эти пакеты в самом репозитории. Как я уже писал ранее, это можно проверить при помощи командлета Find-Package | Out-GridView. После того как будут известны имена пакетов можно заняться самой установкой. Для этого вы можете выполнить следующую команду: Find-Package -Name procexp, procmon, winrar | Install-Package. В данном примере, как видно на следующей иллюстрации, я специально не указываю параметр Force, чтобы вы могли обратить внимание на весь процесс установки нескольких программных пакетов одновременно.

Установка программ средствами PowerShell в Windows 10

Рис. 9. Установка нескольких программ одновременно

Сохранение и удаление программ

Последние два командлета, которые будут рассмотрены в этой статье отвечают за сохранение инсталляционного пакета и удаление проинсталлированной программы. Начнем с сохранения.

Для того чтобы сохранить инсталляционный пакет можно воспользоваться очередным командлетом модуля OneGet, а именно модулем Save-Package. Данный командлет позволяет сохранить пакеты на локальном компьютере без их последующей установки. По умолчанию данный командлет сохраняет последнюю версию программного продукта, однако если вы к текущему командлету добавите параметр AllVersions, у вас на компьютере будут сохранены все размещенные в репозитории версии выбранной вами программы. Более того, аналогично параметрам командлетов поиска и установки программ, помимо сохранения всех версий, при помощи параметров -MaximumVersion и –MinimumVersion, вы еще можете выбрать диапазон версий пакета, который желаете сохранить. Чтобы сохранить пакет на своем компьютере, помимо параметра Name и, в случае необходимости, параметра, отвечающего за версию продукта, вы должны указать параметр Path с будущим расположением вашего инсталлятора.

Как видно на следующей иллюстрации, команда Save-Package –Name Procexp –Path C:\TestPosh сохранит последнюю версию Process Explorer в папке C:\TestPosh:

Установка программ средствами PowerShell в Windows 10

Рис. 10. Сохранение Process Explorer на компьютере

Если вы случайно установили не тот пакет, вы всегда можете при помощи модуля OneGet его удалить. Для этого используется командлет Uninstall-Package. Как и в случае с остальными командлетами данного модуля, для удаления программы вам нужно указать параметр Name с соответствующим именем приложения, а также, для тихого удаления, вы можете использовать параметр Force. Например, чтобы удалить с компьютера установленный ранее WinRAR вам нужно выполнить следующую команду: Uninstall-Package –Name WinRAR –Force, как показано ниже:

Установка программ средствами PowerShell в Windows 10

Рис. 11. Удаление установленной программы

Заключение

Из этой статьи вы узнали об одной из особенностей новой операционной системы от Microsoft, а именно об инсталляции программных продуктов средствами командной оболочки Windows PowerShell. Я вам рассказал о самом модуле OneGet, об основной терминологии, используемой наряду с этой технологией и о том, какие существуют предустановленные поставщики пакетов. Вы узнали о том, как можно подключить к OneGet сторонний поставщик пакетов и как при его помощи можно находить, устанавливать, сохранять и удалять программные продукты.

date

14.03.2017

directory

PowerShell, Windows 10

comments

комментариев 10

В состав 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) имеются такие команды:

Командлеты модуля Powershell PackageManagement

Провайдеры пакетов

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

Примечание. В Nano Server есть специальный еще провайдер NanoServerPackage, о нем в следующей статье.

Чтобы получить доступ к каталогу прикладного ПО, подключим популярный репозитарий ПО – Chocolatey, содержащий на данный момент более 4500 различных программ.

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

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

Установка провайдера chocolatey

Сделаем Chocolatey доверенным источником пакетов, чтобы каждый раз при установке пакета не приходилось подтверждать установку.

Set-PackageSource -Name chocolatey -Trusted

Убедимся, что Chocolatey теперь присутствует среди доступных репозитариев приложений:

Get-PackageSource

Установка приложений из репозитория Chocolatey

Рассмотрим теперь, как установить приложение (пакет) из репозитория Chocolatey.

Репозиторий приложений Chocolatey

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

Find-Package -Name *adobe* -Source Chocolatey

В консоли появится список всех пакетов по данному ключу. Нам нужен пакет adobereader (нужно использовать именно имя пакета из столбца Name).

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

Install-Package -Name adobereader -ProviderName Chocolatey

Установка пакета adobereader из репозитория Chocolatey

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

acrobat- eader dc в windows 10

Еще один пример. Допустим, нам понадобилось иметь на компьютере набор утилит SysInternals. Чтобы не качать его вручную, найдем пакет SysInternals в репозитарии Chocolatey и установим его.

Find-Package -Name Sysinternals | Install-Package

Т.к. пакет не требует установки, он сохраняется на компьютер и хранится в каталоге C:\Chocolatey\lib\. В нашем примере это каталог C:\Chocolatey\lib\sysinternals.2016.11.18\tools

Установка sysinternals из каталога Chocolatey

Сразу несколько приложений можно установить всего одной командой:

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

Удаление пакета

Удаление приложения на компьютере выполняется также одной командой. К примеру, для удаления Adobe Reader, выполните команду:

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

Читайте также: