No Image

Установка программ через powershell

СОДЕРЖАНИЕ
1 просмотров
11 марта 2020

В отличие от Linux , в которой приложения традиционно устанавливаются из внешних репозиториев, в ОС Windows установка большинство десктопных программ выполняется из EXE или MSI -файла, реже с помощью веб-установщика, загружающего на ПК исполняемый файл. По мнению приверженцев Linux , этот способ имеет целый ряд недостатков, так, во-первых, нужную программу приходится вручную искать в интернете, во-вторых, при этом всегда есть риск загрузить устаревшую или зараженную вирусами версию.

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

Чтобы просмотреть список доступных комадлетов, запустите PowerShell от имени администратора и выполните команду Get-Command -Module PackageManagement .

В текущей версии модуля имеется 13 командлентов. Вот они:

Get-Package — выводит список инсталлированных программ и компонентов.
Get-PackageProvider — с помощью этой команды можно получить список поддерживаемых поставщиков программного обеспечения.
Find-Package — команда выполняет поиск программ в источнике.
Get-PackageSource — получение списка источников.
Install-Package — команда производит установку программы на компьютер.
Uninstall-Package — удаление программы.
Register-PackageSource — добавление источника программ для поддерживаемого поставщика.
Save-Package — сохранение дистрибутива приложения без инсталляции на компьютер.
Set-PackageSource — установка поставщика в качестве источника пакетов.
Unregister-PackageSource — удаление поставщика из списка источников пакетов.

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

Find-PackageProvider

Скорее всего, после выполнения команды вы получите предложение установить поставщика nuget. Nuget, равно как PSGallery и еще целый ряд провайдеров больше ориентированы на системных администраторов, обычным же пользователям больше подойдет Chocolatey , тем не менее, его стоит установить, чтобы в дальнейшем система больше его не предлагала.

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

Install-PackageProvider chocolatey

Обратите также внимание на предупреждение, что поставщик Chocolatey не отмечен как надежный.

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

Set-PackageSource -Name chocolatey -Trusted

При этом в корне системного диска у вас должна появиться папка Chocolatey .

Теперь убедимся, что провайдер установлен и с ним можно работать:

Get-PackageSource

На положительный результат будет указывать флаг true в колонке InTrast. Итак, поставщик подключен, теперь давайте установим на компьютер какое-нибудь приложение. Естественно, для этого нам нужно знать, имеется ли оно в базе Chocolatey . Тут есть два варианта — можно зайти на официальный сайт поставщика chocolatey.org/packages и вбить его название в поисковую форму.

Либо выполнить поиск прямо в консоли PowerShell , воспользовавшись командлетом Find-Package . Найдем и установим браузер Opera. Выполняем команду поиска, указав в качестве параметра Name название программы и название поставщика в качестве параметра Source :

Find-Package -Name *Opera* -Source Chocolatey

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

Политика меняется такой командой:

Set-ExecutionPolicy Unrestricted

Теперь загрузим и инсталлируем нашу программу. Для этого выполняем команду с параметрами Name (название пакета) и ProviderName (название поставщика) :

Install-Package -Name Opera -ProviderName Chocolatey

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

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

Доступ к приложениям, использующим установщик Windows, можно получить в классе Win32_Product WMI, но не все современные приложения используют установщик Windows. Applications that are designed to use Windows Installer can be accessed through WMI’s Win32_Product class, but not all applications in use today use the Windows Installer. Установщик Windows обычно не управляет приложениями, использующими другие процедуры установки. Applications that use alternate setup routines are not usually managed by the Windows Installer. Конкретные техники работы с этими приложениями зависят от программного обеспечения установщика и решений, принятых разработчиком приложения. Specific techniques for working with those applications depends on the installer software and decisions made by the application developer. Например, для управления приложениями, установленными путем копирования файлов в папку на компьютере, обычно не используются описанные здесь методы. For example, applications installed by copying the files to a folder on the computer usually cannot be managed by using techniques discussed here. Вы можете управлять этими приложениями, как файлами и папками, с помощью способов, приведенных в статье Работа с файлами и папками. You can manage these applications as files and folders by using the techniques discussed in Working With Files and Folders.

Читайте также:  Netprint купоны на скидку

Класс Win32_Product не оптимизирован для запросов. The Win32_Product class is not query optimized. Если выполняются запросы, использующие фильтры с подстановочными знаками, то WMI будет использовать поставщика MSI для перечисления всех установленных продуктов, а затем последовательно проанализирует весь список с применением фильтра. Queries that use wildcard filters cause WMI to use the MSI provider to enumerate all installed products then parse the full list sequentially to handle the filter. При этом также инициируется проверка согласованности установленных пакетов для проверки и исправления установки. This also initiates a consistency check of packages installed, verifying and repairing the install. Проверка выполняется медленно и может привести к ошибкам в журнале событий. The validation is a slow process and may result in errors in the event logs. Подробные сведения см. в статье базы знаний 974524. For more information seek KB article 974524.

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

Чтобы создать список приложений, установленных с помощью установщика Windows в локальной или удаленной системе, используйте следующий простой запрос WMI: To list the applications installed with the Windows Installer on a local or remote system, use the following simple WMI query:

Чтобы отобразить все свойства объекта Win32_Product, используйте параметр Properties командлетов форматирования, например Format-List со значением * (все). To display all the properties of the Win32_Product object to the display, use the Properties parameter of the formatting cmdlets, such as the Format-List cmdlet, with a value of * (all).

Также можно использовать параметр Get-CimInstance Filter, чтобы выбрать только Microsoft .NET Framework 2.0. Or, you could use the Get-CimInstance Filter parameter to select only Microsoft .NET Framework 2.0. Для значения параметра Filter используется синтаксис языка запросов WMI (WQL), а не синтаксис Windows PowerShell. The value of the Filter parameter uses WMI Query Language (WQL) syntax, not Windows PowerShell syntax. Например: For example:

Чтобы получить список только интересующих вас свойств, используйте параметр Property командлетов форматирования. To list only the properties that interest you, use the Property parameter of the formatting cmdlets to list the desired properties.

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

Так как большинство стандартных приложений регистрируют программу удаления в Windows, с ними можно работать локально, в реестре Windows. Because most standard applications register an uninstaller with Windows, we can work with those locally by finding them in the Windows registry. Не существует гарантированного способа найти все приложения в системе. There is no guaranteed way to find every application on a system. Но можно найти все программы в списках, отображаемых в окне Установка и удаление программ. However, it is possible to find all programs with listings displayed in Add or Remove Programs. В окне Установка или удаление программ выполняется поиск этих приложений в следующем разделе реестра: Add or Remove Programs finds these applications in the following registry key:

В этом разделе можно найти приложения. We can examine this key to find applications. Чтобы упростить просмотр раздела Uninstall, можно сопоставить диск PowerShell с таким путем реестра: To make it easier to view the Uninstall key, we can map a PowerShell drive to this registry location:

Теперь диск с именем "Uninstall" можно использовать для быстрого и удобного поиска установок приложений. We now have a drive named "Uninstall:" that can be used to quickly and conveniently look for application installations. Количество установленных приложений можно найти, подсчитав количество разделов реестра в разделе "Удаление": Диск PowerShell: We can find the number of installed applications by counting the number of registry keys in the Uninstall: PowerShell drive:

Читайте также:  Распад ссср какие территории были утрачены

С помощью разных методов, начиная с Get-ChildItem, можно дальше выполнять поиск в списке приложений. We can search this list of applications further by using a variety of techniques, beginning with Get-ChildItem. Чтобы получить список приложений и сохранить их в переменную $UninstallableApplications, используйте следующую команду: To get a list of applications and save them in the $UninstallableApplications variable, use the following command:

Чтобы отобразить значения записей реестра в подразделах реестра раздела "Удаление", используйте метод GetValue. To display the values of the registry entries in the registry keys under Uninstall, use the GetValue method of the registry keys. Значение метода является записью реестра. The value of the method is the name of the registry entry.

Например, чтобы найти отображаемые имена приложений в разделе "Удаление", используйте следующую команду: For example, to find the display names of applications in the Uninstall key, use the following command:

Нет никакой гарантии, что эти значения уникальны. There is no guarantee that these values are unique. В следующем примере два установленных элемента отображаются как Windows Media Encoder 9 Series: In the following example, two installed items appear as "Windows Media Encoder 9 Series":

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

Вы можете использовать класс Win32_Product для удаленной или локальной установки пакетов установщика Windows. You can use the Win32_Product class to install Windows Installer packages, remotely or locally.

Чтобы установить приложение, запустите PowerShell, используя параметр "Запуск от имени администратора". To install an application, you must start PowerShell with the "Run as administrator" option.

Если установка выполняется удаленно, используйте сетевой UNC-путь, чтобы указать путь к пакету MSI, так как подсистема WMI не распознает пути PowerShell. When installing remotely, use a Universal Naming Convention (UNC) network path to specify the path to the .msi package, because the WMI subsystem does not understand PowerShell paths. Например, чтобы установить пакет NewPackage.msi, расположенный в сетевой папке \AppServdsp на удаленном компьютере PC01, введите следующую команду в командной строке PowerShell: For example, to install the NewPackage.msi package located in the network share \AppServdsp on the remote computer PC01, type the following command at the PowerShell prompt:

Приложения, которые не используют метод установщика Windows, могут включать специальные методы для автоматического развертывания конкретного приложения. Applications that do not use Windows Installer technology may have application-specific methods for automated deployment. Изучите документацию по приложению или обратитесь в службу поддержки поставщика приложения. Check the documentation for the application or consult the application vendor’s support system.

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

Удаление пакета установщика Windows с помощью PowerShell работает примерно так же, как и установка пакета. Removing a Windows Installer package using PowerShell works in approximately the same way as installing a package. Далее представлен пример, в котором пакет для удаления выбирается на основе имени. В некоторых случаях его может быть проще отфильтровать с помощью IdentifyingNumber: Here is an example that selects the package to uninstall based on its name; in some cases it may be easier to filter with the IdentifyingNumber:

Удаление других приложений не так просто, даже если оно выполняется локально. Removing other applications is not quite so simple, even when done locally. Строки удаления командной строки для этих приложений можно найти путем извлечения свойства UninstallString. We can find the command line uninstallation strings for these applications by extracting the UninstallString property. Этот способ работает для приложений установщика Windows и более старых программ, отображающихся в разделе "Удаление": This method works for Windows Installer applications and for older programs appearing under the Uninstall key:

Выходные данные при необходимости можно отфильтровать по отображаемому имени: You can filter the output by the display name, if you like:

Возможно, что эти строки нельзя будет напрямую использовать из командной строки PowerShell без внесения некоторых изменений. However, these strings may not be directly usable from the PowerShell prompt without some modification.

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

Чтобы обновить приложение, необходимо знать название приложения и путь к пакету обновлений приложения. To upgrade an application, you need to know the name of the application and the path to the application upgrade package. Получив эти сведения, вы можете обновить приложение с помощью одной команды PowerShell: With that information, you can upgrade an application with a single PowerShell command:

Читайте также:  Как делать скриншот на компьютере самсунг

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

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

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

По умолчанию в системе имеются 2 установленных источника пакетов: nuget.org и PSGallery (официальная онлайн галерея скриптов PowerShell от MSFT). Но они предназначены в первую очередь для программистов и системных администраторов.

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

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

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

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

Set-PackageSource -Name chocolatey -Trusted

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

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.18 ools

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

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

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

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

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

Комментировать
1 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
Adblock detector