1

Я ищу руководство по выполнению вышеуказанной задачи.

Мой скрипт Powershell, как показано ниже, в настоящее время удаляет одно конкретное приложение с именем.

$AppsToDelete="*Microsoft.WindowsReadingList*"
 Foreach ($AppName in $AppsToDelete)
 {
     get-appxprovisionedpackage -online | where packagename -like $AppName | remove-appxprovisionedpackage -Online
     Get-AppxPackage -name $AppName -allusers | Remove-AppxPackage
 }

Программа, используемая SCCM2012 для выполнения скрипта, выглядит следующим образом:

PowerShell.exe -ExecutionPolicy UnRestricted -File .\delappsreadinglistonly.ps1

Я создал программу в SCCM 2012 и развернул ее на клиенте.

Программа настроена на запуск от имени пользователя, а не системы,

Файл EXECMGR.log сообщает мне, что скрипт получен клиентом и успешно запущен, код выхода = 0, статус выполнения - Успешно.

Тем не менее, плитка Список чтения все еще на (Метро?) На начальном экране приложение «Список чтения» по-прежнему отображается в алфавитном списке «Приложения по имени» и может быть запущено, а в папке C:\program files\windowsapps\ по-прежнему существуют различные папки.

Указатели будут оценены.

1 ответ1

1

Я вижу две потенциальные проблемы с вашим скриптом:

  1. Вызовы -AppxProvisionedPackage скорее всего, требуют повышения прав . Когда вы запускаете скрипт как пользователь, он, вероятно, генерирует исключение.
  2. Для вызова Get-AppxPackage -allusers требуются права администратора. Документация для -allusers гласит:«Чтобы использовать этот параметр, вы должны выполнить команду с правами администратора».

Мне не совсем ясно, какова ваша цель. Вот как я справляюсь с беспорядком плиток на начальном экране Windows 8.1:

  • Создайте приложение SCCM со следующими характеристиками:
    • нет установщика
    • деинсталлятор, вызывающий Remove-AppxPackage для получения списка общих приложений
    • сценарий обнаружения для этого списка приложений
  • Разверните приложение с помощью действия удаления для затронутых пользователей.

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

Когда пользователь, для которого это приложение развернуто для удаления, вошел в систему, CcmExec конце концов обнаружит приложение и вызовет команду удаления. После вызова команды удаления приложения больше не должны быть видимыми или доступными для пользователя.

Uninstall-Application.ps1

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

$appList =  'Microsoft.BingSports',
            # ...longlist of other apps...
            'Microsoft.WindowsReadingList'
Get-AppxPackage | 
    ? { $_.Name -in $appList } | 
    % { Remove-AppxPackage $_.PackageFullName }

Обнаружить-Application.ps1

Ниже приведен текст сценария обнаружения, который я использую. Обратите внимание, что при использовании сценариев обнаружения PowerShell существуют некоторые подводные камни:

Если вы делаете все это, сценарии обнаружения PowerShell прекрасно работают для сложного, хирургического или нетрадиционного обнаружения, подобного этому.

    $appList =  'Microsoft.BingSports',
            # ...longlist of other apps...
            'Microsoft.WindowsReadingList'
    Get-AppxPackage | 
    ? { $_.Name -in $appList }

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .