Манипуляции с Метро-приложениями
Все привыкли ругать Microsoft, но по старой традиции я стараюсь не следовать «простым» маршрутом, а предпочитаю изучать предмет, прежде чем делать какие то выводы. Сегодня будем «тыкать» Метро-интерфейс, который многим ненавистен, главным образом потому что отсутствует привычное меню «Старт» и любимая кнопка «Пуск». Мы коснемся вопроса и доступных методик управления приложениями с помощью powershell.
Из графического интерфейса смотреть не будем, там все понятно и просто, давайте посмотрим что может предложить PowerShell.
Для начала, для того что бы убедиться что мы работаем с нужной версией powershell вводим
$host.version
убеждаемся что у нас правильная версия powershell (надо только 4.0) и на всякий случай проверяем версию операционной системы
(Get-WmiObject Win32_OperatingSystem).Name
потому что модуль AppX доступен только для Windows 8.1 и Windows Server 2012 R2.
Примечание: Конечно, в процессе может понадобится модуль DISM, но об этом позже.
Пишем
Get-Command —Module appx
и
Get-Command —Module dism
Получилось?
В укор Микрософту, могу сказать что не хватает командлета для обновления установленных приложений из командной строки. Не хватает аналога привычной команды
wuauclt /detectnow
и очень плохо то что ни одна команда не поддерживает ключа -Computer, надо будет сильно думать в сторону ps-remoting
Что можно сделать при подобном скудном наборе средств?
Получение списка приложений
Инвентаризация приложений для всех пользователей
Get—AppxPackage —AllUsers
Для определенного пользователя
Get—AppxPackage -Name Package1 –User username
Примечание: Для локальных записей работает отлично, но для доменных, если пользователь использует для входа LiveID выдает ошибку. Пока не разобрался в причине.
Ищем установленный пакет по маске
Get—AppxPackage -name *Facebook*
Теперь переходим к модулю DISM, но надо нам из него совсем немного.
Получаем список предустановленных пакетов
Get—AppXProvisionedPackage —online | select PackageName
Чтение файлов журналов
Очень скудно и неинформативно…
Get—AppXLog —All
Более подробно, тем кто хочет использовать ГУЙ, могу порекомендовать прочтение вот этих файлов журналов.
Тем же кто собирает данные из журналов, «пацанским» методом
Get—AppXLog | FL
с дальнейшим анализом необходимых для поиска полей.
Установка нового приложения
Тут есть где разгуляться, но все просто до безобразия
Add—AppxPackage -Path C:\Dist\MyApp.appx –DependencyPath C:\winjs.appx
Тема очень интересная, но так как разработки мы не касаемся, то тем кому интересны детали настоятельно рекомендую обратиться к первоисточнику.
Удаление приложений
Логично предположить что руками удалять лишнее это очень долго и неблагодарно, главным образом потому что процесс этот никак не автоматизировать. Поэтому удаляем все что понаставил пользователь единовременно:
Get—AppxPackage —AllUsers | Remove—AppxPackage
Заодно удалим и предустановденные приложения:
# все одним махом
Get—AppXProvisionedPackage —online | Remove—AppxProvisionedPackage —online
# или какое то конкретное приложение
Remove—AppXProvisionedPackage —Online —PackageName
Что остается пользователю попавшему под админский произвол?
Как последний штрих, осталось отключить доступ к самому «Магазину приложений».
Расправа
Методика отключения проста — настройка отключается посредством реестровой политики через GPO или напрямую через правку реестра.
В редакторе групповых политик ищем папку
User Configuration\Administrative Templates\Windows Components\Store
Выбираем параметр справа, переведя радио-батон из состояния «Not Configured» в «Enabled».
Реестровый метод
Ищем путь в реестре
HKEY_CURRENT_USER\Software\Policies\Microsoft\
Добавляем ключ «WindowsStore«. Создаем параметр типа DWORD «RemoveWindowsStore» и устанавливаем ему значение «1».
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.