Работа с программами установки программного обеспечения
Приложения, установленные с помощью установщика Windows, можно найти с помощью запросов WMI, но не все приложения используют установщик Windows. Конкретные методы поиска приложений, установленных с другими инструментами, зависят от программного обеспечения установщика.
Например, приложениями, установленными путем копирования файлов в папку на компьютере, обычно нельзя управлять с помощью описанных здесь методов. Вы можете управлять этими приложениями как файлами и папками, используя методы, описанные в разделе Работа с файлами и папками.
Для программного обеспечения, установленного с помощью пакета установщика, установщик Windows можно найти с помощью классов Win32Reg_AddRemovePrograms или Win32_Product . Однако и то, и другое имеет проблемы. Win32Reg_AddRemovePrograms доступен только при использовании System Center Configuration Manager (SCCM). И класс Win32_Product может быть медленным и иметь побочные эффекты.
Класс Win32_Product не оптимизирован для запросов. Если выполняются запросы, использующие фильтры с подстановочными знаками, то WMI будет использовать поставщика MSI для перечисления всех установленных продуктов, а затем последовательно проанализирует весь список с применением фильтра. При этом также инициируется проверка согласованности установленных пакетов для проверки и исправления установки. Проверка выполняется медленно и может привести к ошибкам в журнале событий. Подробные сведения см. в статье базы знаний 974524.
В этой статье представлен альтернативный способ поиска установленного программного обеспечения.
Запрос раздела реестра удаления для поиска установленного программного обеспечения
Так как большинство стандартных приложений регистрируют программу удаления в Windows, с ними можно работать локально, в реестре Windows. Не существует гарантированного способа найти все приложения в системе. Однако можно найти все программы со списками, отображаемыми в разделе Установка и удаление программ , в следующем разделе реестра:
Количество установленных приложений можно найти, подсчитав количество разделов реестра:
$UninstallPath = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall' (Get-ChildItem -Path $UninstallPath).Count
Мы можем искать в этом списке приложений, используя различные методы. Чтобы отобразить значения значений реестра в разделах Uninstall реестра в , используйте GetValue() метод разделов реестра. Значение метода является записью реестра. Например, чтобы найти отображаемые имена приложений в Uninstall ключе, используйте следующую команду:
Get-ChildItem -Path $UninstallPath | ForEach-Object -Process < $_.GetValue('DisplayName') >| Sort-Object
Нет никакой гарантии, что значения DisplayName уникальны.
В следующем примере выходные данные, аналогичные классу Win32Reg_AddRemovePrograms :
Get-ChildItem $UninstallPath | ForEach-Object < $ProdID = ($_.Name -split '\\')[-1] Get-ItemProperty -Path "$UninstallPath\$ProdID" -ea SilentlyContinue | Select-Object -Property DisplayName, InstallDate, @>, Publisher, DisplayVersion > | Select-Object -First 3
Для краткости в этом примере используется Select-Object для ограничения числа возвращаемых элементов тремя.
DisplayName : 7-Zip 22.01 (x64) InstallDate : ProdID : 7-Zip Publisher : Igor Pavlov DisplayVersion : 22.01 DisplayName : AutoHotkey 1.1.33.10 InstallDate : ProdID : AutoHotkey Publisher : Lexikos DisplayVersion : 1.1.33.10 DisplayName : Beyond Compare 4.4.6 InstallDate : 20230310 ProdID : BeyondCompare4_is1 Publisher : Scooter Software DisplayVersion : 4.4.6.27483
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
PowerShell is an open source project. Select a link to provide feedback:
Обратная связь
Отправить и просмотреть отзыв по
Управление текущим расположением
При навигации по системам папок в проводнике у вас обычно есть определенное рабочее расположение, т. е. текущая открытая папка. Элементами в текущей папке можно легко управлять, щелкая их. Когда в интерфейсе командной строки (например, Cmd.exe) открыта папка, в которой находится определенный файл, вы можете получить к нему доступ, указав короткое имя, а не вводить весь путь к файлу. Текущий каталог называется рабочим.
PowerShell использует существительное Location для ссылки на рабочий каталог и реализует семейство командлетов для проверки расположения и управления им.
Получение текущего расположения (Get-Location)
Чтобы определить путь к текущему каталогу, введите команду Get-Location :
Get-Location
Path ---- C:\Documents and Settings\PowerUser
Командлет Get-Location аналогичен команде pwd в оболочке BASH. Командлет Set-Location аналогичен команде cd в Cmd.exe.
Задание текущего расположения (Set-Location)
Команда Get-Location используется с командой Set-Location . Команда Set-Location позволяет вам указать расположение текущего каталога.
Set-Location -Path C:\Windows
После ввода команды обратите внимание, что вы не получаете никаких прямых отзывов о действии команды. Большинство команд PowerShell, выполняющих действие, не дают практически никаких выходных данных, так как выходные данные не всегда полезны. Чтобы убедиться, что при вводе Set-Location команды произошло успешное изменение каталога, добавьте параметр PassThru при вводе Set-Location команды:
Set-Location -Path C:\Windows -PassThru
Path ---- C:\WINDOWS
Параметр PassThru можно использовать со многими командами Set в PowerShell для возврата сведений о результатах в случаях, когда выходные данные по умолчанию отсутствуют.
Вы можете указать пути относительно текущего расположения так же, как и в большинстве командных оболочек UNIX и Windows. В стандартной нотации для определения относительных путей точка ( . ) представляет текущую папку, а две точки ( .. ) — родительский каталог текущего расположения.
Например, если вы находитесь в папке C:\Windows , точка ( . ) представляет C:\Windows , а две точки ( .. ) представляют C: . Вы можете изменить текущее расположение на корневой каталог диска, C: введя следующую команду:
Set-Location -Path .. -PassThru
Path ---- C:\
Тот же метод работает с дисками PowerShell, которые не являются дисками файловой системы, например HKLM: . В реестре в качестве расположения можно задать раздел HKLM\Software , введя следующий код:
Set-Location -Path HKLM:\SOFTWARE -PassThru
Path ---- HKLM:\SOFTWARE
Затем можно изменить расположение каталога на родительский, используя относительный путь:
Set-Location -Path .. -PassThru
Path ---- HKLM:\
Вы можете ввести Set-Location или использовать любой из встроенных псевдонимов PowerShell для Set-Location ( cd , chdir , sl ). Пример:
cd -Path C:\Windows
chdir -Path .. -PassThru
sl -Path HKLM:\SOFTWARE -PassThru
Сохранение и отзыв последних расположений (push-location и pop-location)
При изменении расположения полезно отслеживать, где вы были, и иметь возможность вернуться в предыдущее расположение. Командлет Push-Location в PowerShell создает упорядоченный журнал («стек») путей к каталогам, где вы были, и вы можете вернуться к журналу путей к каталогам с помощью командлета Pop-Location .
Например, PowerShell обычно запускается в домашнем каталоге пользователя.
Get-Location Path ---- C:\Documents and Settings\PowerUser
Слово стек имеет специальное значение во многих параметрах программирования, включая .NET Framework. Например, в физическом стеке элементов последний элемент, помещенный в стек, является первым элементом, который можно извлечь из него. Добавление элемента в стек в разговорной речи называется «проталкиванием» элемента в стек. Извлечение элемента из стека в разговорной речи называется «выводом» элемента из стека.
Чтобы передать текущее расположение в стек, а затем переместить его в папку локальных параметров, введите:
Push-Location -Path "Local Settings"
После этого можно передать расположение локальных параметров в стек и переместить его в папку Temp, введя следующее:
Push-Location -Path Temp
Чтобы убедиться, что каталоги изменены, введите команду Get-Location :
Get-Location
Path ---- C:\Documents and Settings\PowerUser\Local Settings\Temp
После этого можно перейти в последний открытый каталог, введя команду Pop-Location , и проверить изменение, введя команду Get-Location :
Pop-Location Get-Location
Path ---- C:\Documents and Settings\me\Local Settings
Как и в случае с командлетом Set-Location , вы можете включить параметр PassThru при вводе командлета Pop-Location , чтобы открыть указанный каталог:
Pop-Location -PassThru
Path ---- C:\Documents and Settings\PowerUser
Кроме того, можно использовать командлеты расположения с сетевыми путями. Если у вас есть сервер FS01 с общей папкой Public, можно изменить расположение, введя
Set-Location \\FS01\Public
Push-Location \\FS01\Public
Для изменения расположения на любой доступный диск можно использовать команды Push-Location и Set-Location . Например, если у вас есть локальный дисковод компакт-дисков с буквой диска D, содержащий компакт-диск с данными, вы можете изменить расположение на дисковод компакт-дисков, введя команду Set-Location D: .
Если диск пуст, появится следующее сообщение об ошибке:
Set-Location D:
Set-Location : Cannot find path 'D:\' because it does not exist.
При использовании интерфейса командной строки не удобно использовать проводник для проверки доступных физических дисков. Кроме того, проводник не будут отображать все диски PowerShell. PowerShell предоставляет набор команд для управления дисками PowerShell.
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
PowerShell is an open source project. Select a link to provide feedback:
Обратная связь
Отправить и просмотреть отзыв по
Powershell что это такое и как пользоваться
Powershell — это улучшенная и расширенная версия командной строки Windows. Она позволяет выполнять различные команды ОС, а также наборы команд, оформленные в виде файлов, так называемые скрипты или сценарии. С ее помощью можно реализовывать простейшие конструкции циклов и ветвлений (for и if), перенаправлять ввод-вывод в файлы, считывать параметры из файлов, с клавиатуры, использовать переменные, настраивать локальный и другие компьютеры в сети, менять параметры реестра и т.д.
Чтобы открыть powershell необходимо выбрать соответствующую группу в меню “Пуск”.
Здесь есть сам powershell под каждую разрядность и оболочка для отладки сценариев Powershell ISE (также две версии). Для создания сценариев удобно использовать ISE. Оболочка в принципе похоже на большинство других средств разработки и выглядит так:
Вверху после меню и кнопок находится область сценариев — если ее нет, то включается в меню “Вид”, под ней сама командная строка powershell, являющаяся также и областью вывода ошибок, а справа конструктор выражений.
Powershell использует команды ОС Linux и так называемые апплеты — это команды, позволяющие выполнять какие-то действия в ОС Windows.
Для того чтобы выполнить команду ОС достаточно просто ввести ее в окне powershell. Например:
- pwd — вывод текущего каталога
- ls — вывод списка файлов в текущем каталоге
- Copy-Item — скопировать файл или каталог
- Remove-Item — удалить файл или каталог
У большинства команд и апплетов есть аргументы, например:
cat c:\temp\a1.txt — вывести содержимое файла c:\temp\a1.txt ls с:\windows — вывести список файлов в каталоге \home.
Также у команд есть ключи, меняющие поведение или отображение результатов команд:
Remove-item -Recursive “c:\temp” — удаляет каталог c:\temp вместе с подкаталогами.
Параметры и ключи каждой команды можно посмотреть используя справочную систему get-help, то есть чтобы посмотреть аргументы и ключи команды cp достаточно набрать get-help move-item и т.д.
Также можно объединять команды в последовательность действий, так называемые скрипты или сценарии.
Последнее обновление: 29.01.2019
Средняя оценка: 5,0 , всего оценок: 1 Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже
Установка приложений с помощью менеджера пакетов PowerShell
08.06.2022
itpro
PowerShell, Windows 10
комментариев 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) имеются такие команды:
- Find-Package — поиск пакета (программы) в доступных репозиториях
- Get-Package — получить список установленных пакетов
- Get-PackageProvider — список провайдеров (поставщиков пакетов), доступных на компьютере
- Get-PackageSource — список доступных источников пакетов
- Install-Package — установить пакет (программу) на компьютере
- Register-PackageSource — добавить источник пакетов для провайдера
Провайдеры пакетов
Пакеты обслуживаются различными провайдерам, которые могут получать пакеты из разных источников. Чтобы вывести список всех доступных провайдеров, выполните:
По умолчанию в системе имеются 2 установленных источника пакетов: nuget.org и PSGallery (официальная онлайн галерея скриптов PowerShell от MSFT). Но они предназначены в первую очередь для программистов и системных администраторов.
Примечание. В Nano Server есть специальный еще провайдер NanoServerPackage, о нем в следующей статье.
Чтобы получить доступ к каталогу прикладного ПО, подключим популярный репозитарий ПО – 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:\Chocolatey\lib\. В нашем примере это каталог C:\Chocolatey\lib\sysinternals.2016.11.18\tools
Сразу несколько приложений можно установить всего одной командой:
Find-Package -Name firefox, winrar, notepadplusplus, putty, dropbox | Install-Package
Удаление пакета
Удаление приложения на компьютере выполняется также одной командой. К примеру, для удаления Adobe Reader, выполните команду:
Итак, мы рассмотрели новые возможности установки приложений в Windows из командной строки PowerShell. В ближайшем будущем, вероятно, появятся графические надстройки над модулем PackageManagement, позволяющие легко управлять установкой/удалением ПО и простым пользователям без навыков работы с CLI.
Предыдущая статья Следующая статья