Скрипт Powershell, доставленный через SCCM 2012, для полного удаления приложений Windows 8.1

Скрипт Powershell, доставленный через SCCM 2012, для полного удаления приложений Windows 8.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, статус выполнения — «Успешно».

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

Буду признателен за указания.

решение1

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

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

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

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

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

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

Удаление-приложения.ps1

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

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

Detect-Application.ps1

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

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

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

Связанный контент