Eu vejo dois possíveis problemas com o seu script:
- As chamadas para
-AppxProvisionedPackage
provavelmente exigem elevação. Quando você executa seu script como usuário, ele provavelmente lança uma exceção. - 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:
- Você precisará assinar os scripts se tiver uma política de execução
xSigned
em um cliente, apesar das configurações do cliente e dos registros sobre o uso de-ByPass
. - A semântica da saída do script de detecção é arcana e documentado apenas de forma não oficial , mas o IME é confiável.
- Você precisa preparar seus scripts de detecção do PowerShell usando Solução alternativa de Adam Meltzer para fazê-los funcionar.
- Você também deve estar ciente, pelo menos, de alguma peculiaridade com relação ao contexto em que os scripts de detecção do PowerShell são executados .
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 }