Cosa c'è di sbagliato con il parametro di Uninstall-Spsolution e AllweBapplications?
-
09-12-2019 - |
Domanda
Quando provo a disinstallare WSP con la seguente riga, tutto è OK:
Uninstall-SPSolution project.wsp # no error - OK
.
Quando provo ad aggiungere il parametro dell'interruttore -AllWebApplications, ottengo errori (qualcosa come questa soluzione non contiene risorse per l'ambito dell'applicazione Web), che è anche fine:
Uninstall-SPSolution project.wsp -AllWebApplications # error X - OK
.
Ma, quando aggiungo quel parametro dell'interruttore con il valore falso, ottengo errori (come sopra), che è sbagliato, non è vero?
Uninstall-SPSolution project.wsp -AllWebApplications:$false # error X again - WRONG
.
Sembra che nulla sia cambiato dalla linea prima di questo, ma dovrebbe ...
.
In un altro modo: la mia soluzione non ha bisogno del parametro AllWebApplication
, ma voglio spegnerlo esplicitamente (significato - specificarlo con valore falso).
Domanda è: come posso specificare questo parametro interruttore come falso?
.
Ho appena notato che questo non sta accadendo con il cmdlet Install-SPSolution
.
Soluzione
Sembra che Install-Spsolution e Disinstall-Spsolation siano stati scritti da due diversi sviluppatori (o almeno in tempi diversi)
Entrambi i comandi hanno il potenziale di accettare né, una singola o tutte le applicazioni Web come si occupano di queste opzioni sono silenziose.
install-spsolution
Questo è il modo ben codificato, dove la decisione è basata su:
- .
- Verifica se ha ottenuto un valore non null in WebApplication, se è così che controlla per tutti iWABAPlications è vero se è quindi è un errore, se non è un singolo webapp
- Se non single, controlla se il commutatore di switchparameter è vero, se è così che sono tutte webapps
- In caso contrario, non sono webapps
Uninstall-Spsolution:
ha assegnato diversi parametri a parametri ai due parametri, il che significa che non è possibile specificare sia -WebApplication e -AllWeBapplications indipendentemente dai valori in quanto non può decidere quale parameterset significhi.
e quindi a "il tuo bug" invece di controllare il valore di -AllWaBapplicazioni, controllano solo se il parameterset è "AllWeBapplication" se è così ignorando qualsiasi valore specificato e semplicemente assume il vero .
Altri suggerimenti
Dovrebbe funzionare impostando -confirm a 0 o false.
Da tutte le applicazioni Web:
Uninstall-SPSolution yousolutionname.wsp -AllWebApplications -Confirm:$false
.
Da una specifica applicazione Web:
Uninstall-SPSolution -Identity yousolutionname.wsp -Confirm:0 -Webapplication $url
.