Как удалить программы в командной строке или Windows PowerShell
На компьютеры, работающие под управлением Windows, пользователи устанавливают различные прикладные программы для выполнения тех или иных задач. Сразу после установки, в операционной системе доступны только базовые приложения.
Естественно, что этого недостаточно для выполнения многих видов деятельности на компьютере. Чтобы решить эту проблему, на ПК устанавливается дополнительное программное обеспечение.
Новые программы позволяют выполнять необходимые операции, делают работу более комфортной и продуктивной. Постепенно на компьютере оказывается установленными больное количество разных программ.
Часть приложений регулярно используется, другой софт задействован время от времени, а остальными программами не пользуются по разным причинам. Ненужные программы необходимо деинсталлировать с ПК, чтобы они не занимали место на дисковом пространстве или не влияли на производительность устройства.
Чтобы удалить программу с компьютера можно воспользоваться системными средствами Windows или сторонним программным обеспечением. Можно использовать любой из этих способов. Сторонние приложения-деинсталляторы имеют дополнительный функционал, это позволяет им более тщательно подчищать следы от удаленных программ на компьютере.
В этом руководстве мы рассмотрим один из способов деинсталляции ненужных приложений: удаление программы через командную строку и удаление программ через PowerShell.
Большей части пользователей удобнее использовать графический интерфейс средства удаления программ Windows или программы-деинсталлятора. Но, есть и другой метод решить эту задачу: удалить программу из PowerShell или из командной строки.
В некоторых случаях, может понадобиться в PowerShell удалить программу, или выполнить удаление программы с помощью командной строки, например, если удаление приложения обычным способом заканчивается неудачей. К сожалению, бывают такие ситуации, когда по разным причинам не происходит деинсталляция ненужного программного обеспечения.
В этих случаях, можно воспользоваться консолью или более мощным инструментом — Windows PowerShell. Удаление программ через командную строку Windows выполняется одинаково в разных версиях операционной системы: Windows 10, Windows 8.1 (Windows 8), Windows 7.
Необходимо учитывать, что в окнах консоли отображаются не все установленные программы, а только те, которые для инсталляции на ПК использовали установщик Windows (установочные пакеты «.msi» приложений Win32).
Сначала мы посмотрим, как удалить программу с помощью командной строки, а затем сделаем тоже самое в Windows PowerShell.
Установка
Просто скопируйте PsExec на путь к исполняемому файлу. При вводе PsExec отображается его синтаксис использования.
ознакомьтесь с разделом 2004 июля Windows ит Pro Magazine для получения статьи о пометке , посвященной расширенному использованию PsExec.
Использование:
Параметр | Описание |
---|---|
-a | Отдельные процессоры, на которых приложение может работать с запятыми, где 1 — это наименьший номер ЦП. Например, чтобы запустить приложение на ЦП 2 и ЦП 4, введите: «-a 2, 4» |
-c | Скопируйте указанный исполняемый файл в удаленную систему для выполнения. Если этот параметр не задан, приложение должно находиться в системном пути в удаленной системе. |
-d | Не дожидаться завершения процесса (не интерактивного). |
-e | Не загружает профиль указанной учетной записи. |
-f | Копирование указанной программы, даже если файл уже существует в удаленной системе. |
-i | Запустите программу, чтобы она взаимодействовала с рабочим столом указанного сеанса в удаленной системе. Если сеанс не указан, процесс выполняется в сеансе консоли. Этот флаг необходим при попытке запуска консольных приложений в интерактивном режиме (с перенаправленным СТАНДАРТным вводом-выводом). |
-h | Если целевая система находится в системе Vista или более поздней версии, процесс выполняется с маркером повышенной безопасности учетной записи, если он доступен. |
-l | Запустите процесс от имени ограниченного пользователя (поменяет группу администраторов и разрешает только привилегии, назначенные группе Пользователи). в Windows Vista процесс выполняется с низкой целостностью. |
-n | Указывает время ожидания в секундах при подключении к удаленным компьютерам. |
-p | Указывает необязательный пароль для имени пользователя. Если этот параметр не указан, будет предложено ввести скрытый пароль. |
-r | Указывает имя удаленной службы для создания или взаимодействия с. |
-s | Запустите удаленный процесс в системной учетной записи. |
-u | Указывает необязательное имя пользователя для входа на удаленный компьютер. |
-v | Скопируйте указанный файл только в том случае, если он имеет более высокий номер версии или более новый, чем тот, который находится в удаленной системе. |
-w | Задайте рабочий каталог процесса (относительно удаленного компьютера). |
-x | Отображение пользовательского интерфейса на безопасном рабочем столе Winlogon (только в локальной системе). |
— приоритет | Указывает-Low,-BelowNormal,-AboveNormal,-High или-реального времени для запуска процесса с другим приоритетом. Используйте-Background для запуска с нехваткой памяти и приоритетом ввода-вывода в Vista. |
компьютерами | Direct PsExec для запуска приложения на удаленном компьютере или указанных компьютерах. Если опустить имя компьютера, программа PsExec запустит приложение в локальной системе и при указании подстановочного знака ( *) программа PsExec выполнит команду на всех компьютерах в текущем домене. |
@file | PsExec выполнит команду на каждом из компьютеров, перечисленных в файле. |
cmd | Имя выполняемого приложения. |
даваемых | Аргументы для передачи (Обратите внимание, что пути к файлам должны быть абсолютными путями в целевой системе). |
-AcceptEula | Этот флаг подавляет отображение диалогового окна лицензии. |
Приложения, имена которых содержат пробелы, можно заключать в кавычки, например
Входные данные передаются в удаленную систему только при нажатии клавиши ВВОД. При нажатии клавиш CTRL + C удаленный процесс завершается.
Если не указать имя пользователя, процесс будет выполняться в контексте вашей учетной записи в удаленной системе, но не будет иметь доступа к сетевым ресурсам (так как это олицетворение). Укажите допустимое имя пользователя в DomainUser синтаксисе, если удаленный процесс требует доступа к сетевым ресурсам или для запуска в другой учетной записи. Обратите внимание, что пароль и команда шифруются при передаче в удаленную систему.
Коды ошибок, возвращаемые PsExec, относятся к выполняемым приложениям, а не PsExec.
Удалить программу на удаленном компьютере с помощью PowerShell модуля Package Manager
В современных версиях Windows 10/11 и Windows Server 2022/2019/2016 для установки и удаления программ можно использовать командлеты из модуля PowerShell Package Management. Изначально модуль использовался для установки/удаления PowerShell модулей. Однако вы можете использовать его и для удаления Win32 программ, MSU обновлений, программ установленных помощью MSI установщиков.
Чтобы вывести полный список установленных программ на локальном компьютере, выполните команду:
Команда вернет несколько классов программ, установленных через разные провайдеры (ProviderName). Полный список доступных провайдеров на компьютере можно вывести так:
Чтобы вывести список программ, установленных с помощью определенного провайдера, выполните:
Get-Package -ProviderName Programs -IncludeWindowsInstaller
Для удаления программы нужно использовать командлет Uninstall-Package:
Get-Package -Name «Notepad++*» | Uninstall-Package
Можно удалить установленный PowerShell модуль. Например, чтобы удалить все модули VMware.PowerCLI:
Get-Package -ProviderName PowerShellGet -Name «VMware.*» | Uninstall-Package
Для удаления программы на удаленном компьютер, воспользуйтесь командлетом Invoke-Command:
Invoke-Command -ComputerName Msk-Ser01 -ScriptBlock
Данный модуль можно использовать только для удаления программ Win32 и модулей. Для удаления UWP программ Microsoft Store нужно использовать PowerShell командлеты Remove-AppxPackage и Remove-AppxProvisionedPackage (см. Пример в статье).
Удаленное администрирование. Установка и удаление программ
Иногда удаленному выполнению команд может препятствовать антивирус или встроенный брандмауэр, в зависимости от настроек безопасности вашей сети. При необходимости отключаем их.
Отключить антивирус удаленно на примере KAV
psexec ComputerName «C:Program Files (x86)Kaspersky LabKaspersky Endpoint Security 10 for Windows SP2avp.com» exit / login = KLAdmin / password = < Pass >
Отключение встроенного брандмауэра для всех профилей (только локально)
Для удаленного отключения брандмауэра должен быть доступен Сервер RPC. Доступ к которому блокирует включенный брандмауэр ?? Такая рекурсия.
Поэтому, как всегда, пойдем обходным путем:
Команда на включение брандмауэра, соответственно, будет state on
Удаление программы
Установка программы
Тихая установка с предварительным копированием программы на удаленный хост
Установка с сетевого ресурса
Административные шары, такие как «C$»,
для подобной команды не функционируют.
Необходимо создать сетевую папку вручную
Так же возможна установка по списку компьютеров используя «@», как показано в основной заметке по Psexec.
Получить список программ
Получать список установленных в системе программ лучше из реестра, нежели средствами WMI. Этот метод работает намного быстрее, чем при использовании
Get-WmiObject -Class Win32_Product
Get — ItemProperty HKLM : Software Microsoft Windows CurrentVersion Uninstall * | Select DisplayName | Sort DisplayName
Get — ItemProperty HKLM : SOFTWARE WOW6432Node Microsoft Windows CurrentVersion Uninstall * | Select DisplayName | Sort DisplayName
Из-за того что в системе могут быть установлены как 64, так и 32 битные приложения, необходимо получать значения обеих веток. Можно поместить весь список в одну переменную.
Так же читайте как в тихом режиме деинсталлировать любую программу по ее GUID
Через реестр
Модификация реестра на пользовательских машинах ― странный вариант, лишь на случай крайней необходимости. Можно использовать ветки Run или RunOnce. Подробнее о них ― в документации. Сама модификация реестра может проводиться через групповые политики или из командной строки ― например, такой командой:
В зависимости от ветки реестра, процесс будет выполняться или под пользователем, выполнившим вход в систему, или под аккаунтом SYSTEM.
Есть и другие способы, такие как правка ярлыков в папке «Автозагрузка» или добавление в ярлык к популярной программе && script.cmd, но эти методы уже из серии «можно, но не нужно».
Теперь перейдем к новым инструментам.
Как запустить команду на удалённой системе
Основное использование команды PsExec — это просто запуск команды в удалённой системе. Чтобы запустить команду в удалённой системе, мы должны указать имя пользователя и пароль вместе с командой для запуска на удалённом компьютере.
Общий вид команды для запуска на удалённой системе:
- \КОМПЬЮТЕР — имя компьютера Windows или его IP адрес в локальной сети
- -u Администратор — если операционная система на ином языке, то имя пользователя также будет другим, например, на английском это Administrator
- -p ПАРОЛЬ — пароль пользователя Администратор. Эту опцию можно пропустить, тогда команда запросит пароль для ввода
- КОМАНДА — программа, которую нужно выполнить на удалённой системе. После команды могут идти её опции.
Пример выполнения команды ipconfig на удалённом компьютере \hackware-server от имени пользователя Администратор с паролем Aa1:
Как мы видим, команда выполняется в удалённой системе без проблем.
У удалённого компьютера HACKWARE-SERVER IP адресом является 192.168.0.53, поэтому следующая команда эквивалентна предыдущей:
Обратите внимание, что в Windows (в противоположность Linux), регистр букв в именах компьютеров, командах и путях не имеет значения — можно использовать буквы любого регистра в любых местах.
PsGetSid
Это отображает идентификатор безопасности для компьютера или пользователя и принимает стандартные аргументы. Эта утилита, вероятно, полезна только в очень специфических сценариях, с которыми мы лично не сталкивались. Так что попробуйте один раз и забудьте об этом, пока вам не понадобится когда-нибудь.
Как в командной строке перейти на другой диск?
Вот вам например нужно перейти на другой диск в командной строке. Как это сделать правильно? Вообще-то я думал, что для того чтобы перейти на другой диск, то достаточно будет команды cd — но оказалось что нет, это не совсем то что нужно. Оказывается все намного проще, ну вот запускаю я командную строку, вот какой у нее вид:
Ну то есть как обычно системный диск C:, все как обычно. Но вот теперь чтобы перейти в диск D, то нужно просто написать диск и две точки, ну то есть вот так:
Потом я нажал энтер и вот что в результате вышло:
Ну то есть как видите все это сработало, то есть тут нужно просто писать букву диска и две точки, и все!
Ну что ребята, на этом все, я честно надеюсь что все вам тут было понятно, что инфа вам эта помогла ответить на какой-то вопрос. Удачи вам и хорошего настроения!