Script de Powershell entregado a través de SCCM 2012 para eliminar completamente las aplicaciones de Windows 8.1

Script de Powershell entregado a través de SCCM 2012 para eliminar completamente las aplicaciones de Windows 8.1

Estoy buscando orientación sobre cómo realizar la tarea anterior.

Mi secuencia de comandos de Powershell es la siguiente, la secuencia de comandos actualmente elimina una aplicación con nombre 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
 }

El programa utilizado por SCCM2012 para ejecutar el script es el siguiente:

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

Creé un programa en SCCM 2012 y lo implementé en un cliente.

El programa está configurado para ejecutarse como usuario, no como sistema,

El archivo EXECMGR.log me dice que el cliente recibió el script y se ejecutó correctamente, código de salida = 0, el estado de ejecución es Éxito.

Dicho esto, el mosaico de la Lista de lectura todavía está en la pantalla de inicio (¿Metro?), la aplicación Lista de lectura todavía aparece en la lista alfabética de Aplicaciones por nombre y se puede ejecutar y todavía existen varias carpetas en C:\program files\windowsapps\

Se agradecerían sugerencias.

Respuesta1

Veo dos problemas potenciales con su script:

  1. Lo más probable es que las llamadas -AppxProvisionedPackagerequieran elevación. Cuando ejecuta su script como usuario, probablemente genere una excepción.
  2. La llamada a Get-AppxPackage -allusersrequiere permisos de administrador. La documentaciónfor -allusersdice "para usar este parámetro, debe ejecutar el comando usando permisos de administrador".

No me queda claro exactamente cuál es tu objetivo. Así es como soluciono el desorden de mosaicos en la pantalla de inicio de Windows 8.1:

  • Cree una Aplicación SCCM con las siguientes características:
    • sin instalador
    • desinstalador que solicita Remove-AppxPackageuna lista de aplicaciones comunes
    • script de detección para esa lista de aplicaciones
  • Implementar la aplicación con la acción de desinstalación para los afectadosusuarios.

Utilizo esta estrategia porque hace que las cosas sean más quirúrgicas con respecto a cuáles de esas aplicaciones estarán disponibles para usuarios específicos en el futuro si resulta necesario.

Cuando un usuario al que se le implementa esta aplicación para su eliminación inicia sesión, CcmExecfinalmente detecta la aplicación e invoca el comando de desinstalación. Después de invocar el comando de desinstalación, las aplicaciones ya no deberían estar visibles ni disponibles para el usuario.

Desinstalar-Application.ps1

Aquí está el cuerpo del script de desinstalación que uso. Debe tener cuidado al configurar los scripts de PowerShell que se invocan para la (des)instalación porqueLos códigos de salida son un poco difíciles de obtener del script de manera confiable..

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

Detectar-Aplicación.ps1

A continuación se muestra el cuerpo del script de detección que utilizo. Tenga en cuenta que existen algunos inconvenientes al utilizar scripts de detección de PowerShell:

Si hace todo eso, los scripts de detección de PowerShell funcionan a la perfección para una detección complicada, quirúrgica o poco convencional como esta.

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

información relacionada