O que há de errado com os parâmetros Uninstall-SPSolution e AllWebApplications?
-
09-12-2019 - |
Pergunta
Quando tento desinstalar o WSP com a seguinte linha, está tudo bem:
Uninstall-SPSolution project.wsp # no error - OK
Quando tento adicionar o parâmetro switch -AllWebApplications, recebo um erro (algo como Esta solução não contém nenhum recurso para o escopo do aplicativo Web), o que também é bom:
Uninstall-SPSolution project.wsp -AllWebApplications # error X - OK
MAS, quando adiciono esse parâmetro switch com valor FALSE, recebo um erro (igual ao acima), o que está errado, não é?
Uninstall-SPSolution project.wsp -AllWebApplications:$false # error X again - WRONG
Parece que nada mudou em relação à linha anterior a esta, mas deveria...
De outro modo:Minha solução NÃO precisa AllWebApplication
parâmetro, mas quero desativá-lo explicitamente (ou seja, especificá-lo com o valor FALSE).
Questão é:Como posso especificar esse parâmetro de opção como FALSE?
Acabei de notar que isso não está acontecendo com o cmdlet Install-SPSolution
.
Solução
Parece que Install-SPSolution e Uninstall-SPSolution foram escritos por dois desenvolvedores diferentes (ou pelo menos em momentos diferentes)
Ambos os comandos têm o potencial de aceitar nenhum, um único ou todos os WebApplications. A forma como eles lidam com essas opções é bastante diferente.
Instalar-SPSolução
Este é aquele bem codificado, onde a decisão se baseia em:
- Verifique se obteve um valor não nulo em WebApplication, se sim, ele verifica se AllWebApplications é verdadeiro, se for, então é um erro, se não, é um único WebApp
- se não for único, ele verifica se SwitchParameter AllWebApplications é verdadeiro; em caso afirmativo, são todos WebApps
- se não, então não há WebApps
Solução de desinstalação SP:
Atribuiu conjuntos de parâmetros diferentes aos dois parâmetros, o que significa que você não pode especificar -WebApplication e -AllWebApplications independentemente dos valores, pois não será possível decidir a qual conjunto de parâmetros você se refere.
E então para "Seu bug" em vez de verificar o valor de -AllWebApplications, eles apenas verificam se o conjunto de parâmetros é "AllWebApplication", em caso afirmativo, eles ignoram qualquer valor que você especificou e apenas assumem verdadeiro
Outras dicas
Deve funcionar definindo -confirm como 0 ou false.
De todos os aplicativos da web:
Uninstall-SPSolution yousolutionname.wsp -AllWebApplications -Confirm:$false
De um aplicativo da web específico:
Uninstall-SPSolution -Identity yousolutionname.wsp -Confirm:0 -Webapplication $url