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

1

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

Meu script do Powershell é como abaixo, o script remove atualmente 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

Eu criei um programa no SCCM 2012 e implantei para 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 êxito, código de saída = 0, o status de execução é Success.

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

Os ponteiros seriam apreciados.

    
por mcbla 10.12.2015 / 17:26

1 resposta

1

Eu vejo dois possíveis problemas com o seu script:

  1. As chamadas para -AppxProvisionedPackage provavelmente exigem elevação. Quando você executa seu script como usuário, ele provavelmente lança uma exceção.
  2. A chamada para Get-AppxPackage -allusers requer permissões de administrador. A documentação para -allusers lê "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. Aqui está como eu lido com a confusão de blocos na tela inicial do Windows 8.1:

  • Crie um aplicativo SCCM com as seguintes características:
    • sem instalador
    • desinstalador que chama Remove-AppxPackage para uma lista de aplicativos comuns
    • script de detecção para essa lista de aplicativos
  • Implante o aplicativo com a ação de desinstalação para os usuários afetados .

Eu uso essa estratégia porque ela define as coisas para serem 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 esse Aplicativo é implantado para remoção está conectado, CcmExec finalmente detecta o aplicativo e chama o comando de desinstalação. Depois que o comando de desinstalação é chamado, os aplicativos não devem mais estar visíveis ou disponíveis para o usuário.

Uninstall-Application.ps1

Aqui está o corpo do script de desinstalação que eu uso. Você precisa ser cuidadoso sobre como configurar scripts do PowerShell que são invocados para (des) instalação porque códigos de saída são um pouco difíceis de obter o script de forma confiável .

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

Detect-Application.ps1

Abaixo está o corpo do script de detecção que eu uso. Observe que há algumas armadilhas em usar scripts de detecção do PowerShell:

Se você fizer todos esses scripts de detecção do PowerShell funcionam perfeitamente para detecção complicada, cirúrgica ou não convencional como essa.

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