Как программно вызвать обновление пакета в Microsoft Store (и проверить, что доступны обновления пакетов)?

Вопрос или проблема

Ниже представлена перефразированная версия кода, которую мне удалось найти (в основном из первого ответа и третьего с конца ответа на learn.microsoft.com/en-us/archive/msdn-technet-forums/5ac7daa9-54e6-43c0-9746-293dcb8ef2ec#all-replies-9, который также это запрашивает):

#!/usr/bin/env -S pwsh
#Requires -PSEdition 'Core'
#Requires -Version 7

# Общие
# ------
    $NamespaceName="root\cimv2\mdm\dmmap"
    $ClassName="MDM_EnterpriseModernAppManagement_AppManagement01"

# Стиль DotNet
# ------------
    $WMIObj = Get-WmiObject -Namespace "$NamespaceName" -Class "$ClassName"
    $Result = $WMIObj.UpdateScanMethod()

# Стиль PowerShell
# ----------------
    Get-CimInstance `
        -Namespace "$NamespaceName" `
        -ClassName "$ClassName"
    | Invoke-CimMethod -MethodName 'UpdateScanMethod'

Я ожидал, что это будет работать, и оно не выдает ошибок при вызове. Вместо этого оно, похоже, зависает бесконечно. Следовательно, я прошу версию, которая известна как рабочая, и способ проверить, что она успешно выполнила свою задачу (если это возможно).

Я слышал, что winget update --all также может проверять пакеты, установленные из репозитория msstore, но я вижу мало доказательств этого.

Ответ или решение

Как программно вызвать обновление пакетов в Microsoft Store и проверить наличие доступных обновлений

Для автоматизации процесса обновления приложений из Microsoft Store можно использовать PowerShell и WMI (Windows Management Instrumentation). В данной статье мы рассмотрим код, который позволяет это сделать, а также методы проверки наличия доступных обновлений после его выполнения.

Шаг 1: Программный вызов метода обновления

С помощью PowerShell можно использовать класс MDM_EnterpriseModernAppManagement_AppManagement01, который доступен в пространстве имен root\cimv2\mdm\dmmap. Вот пример кода, который позволяет вызвать метод обновления:

#!/usr/bin/env -S pwsh
#Requires -PSEdition 'Core'
#Requires -Version 7

# Общие переменные
# -----------------
$NamespaceName = "root\cimv2\mdm\dmmap"
$ClassName = "MDM_EnterpriseModernAppManagement_AppManagement01"

# Стиль DotNet
# ------------
$WMIObj = Get-WmiObject -Namespace "$NamespaceName" -Class "$ClassName"
$Result = $WMIObj.UpdateScanMethod()

# Стиль PowerShell
# ----------------
Get-CimInstance `
    -Namespace "$NamespaceName" `
    -ClassName "$ClassName" `
| Invoke-CimMethod -MethodName 'UpdateScanMethod'

Этот код запускает метод UpdateScanMethod, который инициирует сканирование доступных обновлений в Microsoft Store.

Шаг 2: Проверка успешности обновления

Хотя выполнение метода UpdateScanMethod не возвращает ошибок непосредственно, можно использовать команду Get-CimInstance для проверки статуса установки обновлений. К сожалению, точного способа получить статус обновлений через WMI нет. Однако, доступно следующее решение:

  1. Для проверки списка установленных приложений и их статусов можно использовать следующую команду:
Get-WmiObject -Namespace "$NamespaceName" -Class "MDM_EnterpriseModernAppManagement_AppManagement01" | Select-Object -Property *
  1. Также, если вы используете winget, можно выполнить команду, которая проверяет доступные обновления:
winget upgrade

Замечания по эффективности

Если ваш оригинальный скрипт "висял", возможно, возникли временные задержки в процессе или блокировки, связанные с управлением приложениями. Убедитесь, что PowerShell запускается от имени администратора, чтобы избежать проблем с разрешениями.

Альтернативные решения

Для более глубокого контроля и возможности проверки обновлений используйте winget. Хотя имеются сообщения о том, что winget update --all может не обрабатывать пакет из msstore, стоит протестировать его в вашем окружении на случай изменений в функционале.

winget update --all

Это обеспечит проверку обновлений для всех пакетов, включая те, что установлены из Microsoft Store.

Заключение

Программный вызов обновления пакетов из Microsoft Store является полезной задачей для IT-специалистов, стремящихся автоматизировать управление приложениями. Используя предоставленный код и стратегии проверки, вы сможете эффективно обновлять и контролировать пакеты, сохраняя ваше программное обеспечение актуальным. Убедитесь, что все команды выполняются в окружении с достаточными правами для успешного выполнения всех необходимых операций.

Оцените материал
Добавить комментарий

Капча загружается...