Script Powershell entregue via SCCM 2012 para remover completamente os aplicativos do Windows 8.1

Script Powershell entregue via SCCM 2012 para remover completamente os aplicativos do Windows 8.1

Estou procurando orientação sobre como executar a tarefa acima.

Meu script Powershell é como abaixo, o script atualmente remove um aplicativo nomeado específico.

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

O programa usado pelo SCCM2012 para executar o script é o seguinte -

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

Criei um programa no SCCM 2012 e implantei em um cliente.

O programa está configurado para ser executado como usuário, não como sistema.

O arquivo EXECMGR.log informa que o script foi recebido pelo cliente e foi executado com sucesso, código de saída = 0, o status de execução é Sucesso.

Dito isso, o bloco Lista de leitura ainda está na tela inicial (Metro?), o aplicativo Lista de leitura ainda aparece na lista alfabética de aplicativos por nome e pode ser executado e várias pastas ainda existem em C:\program files\windowsapps\

Ponteiros seriam apreciados.

Responder1

Vejo dois problemas potenciais com seu script:

  1. As chamadas -AppxProvisionedPackageprovavelmente requerem elevação. Quando você executa seu script como usuário, provavelmente gera uma exceção.
  2. A chamada para Get-AppxPackage -allusersrequer permissões de administrador. A documentaçãopara -allusersleituras "para usar este parâmetro, você deve executar o comando usando permissões de administrador."

Não está claro para mim exatamente qual é o seu objetivo. Veja como eu lido com a bagunça de blocos na tela inicial do Windows 8.1:

  • Crie um aplicativo SCCM com as seguintes características:
    • sem instalador
    • desinstalador que pede Remove-AppxPackageuma lista de aplicativos comuns
    • script de detecção para essa lista de aplicativos
  • Implante o aplicativo com a ação de desinstalação nos afetadosUsuários.

Eu uso essa estratégia porque ela torna as coisas mais cirúrgicas com quais desses aplicativos estarão disponíveis para usuários específicos no futuro, se isso for necessário.

Quando um usuário para o qual este Aplicativo está implantado para remoção está conectado, CcmExeceventualmente detecta o aplicativo e invoca o comando de desinstalação. Depois que o comando de desinstalação for invocado, os aplicativos não deverão mais estar visíveis ou disponíveis para o usuário.

Desinstalar-Application.ps1

Aqui está o corpo do script de desinstalação que uso. Você precisa ter cuidado ao configurar scripts do PowerShell que são invocados para (des)instalação porquecódigos de saída são um pouco complicados de obter do script de maneira confiável.

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

Detectar aplicativo.ps1

Abaixo está o corpo do script de detecção que uso. Observe que existem algumas armadilhas no uso de scripts de detecção do PowerShell:

Se você fizer tudo isso, os scripts de detecção do PowerShell funcionarão perfeitamente para detecções complicadas, cirúrgicas ou não convencionais como esta.

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

informação relacionada