Что не так с параметрами Uninstall-SPSolution и AllWebApplications?
-
09-12-2019 - |
Вопрос
Когда я пытаюсь удалить WSP с помощью следующей строки, все в порядке:
Uninstall-SPSolution project.wsp # no error - OK
Когда я пытаюсь добавить параметр переключателя -AllWebApplications, я получаю сообщение об ошибке (что-то вроде: Это решение не содержит ресурсов для области веб-приложения), что тоже нормально:
Uninstall-SPSolution project.wsp -AllWebApplications # error X - OK
НО, когда я добавляю этот параметр переключателя со значением FALSE, я получаю ошибку (такую же, как указано выше), что неправильно, не так ли?
Uninstall-SPSolution project.wsp -AllWebApplications:$false # error X again - WRONG
Похоже, ничего не изменилось по сравнению с предыдущей строкой, но должно быть...
Другим способом:Мое решение НЕ нужно AllWebApplication
параметр, но я хочу его явно отключить (имеется в виду - указать значение FALSE).
Вопрос:Как указать для этого параметра переключателя значение FALSE?
Я только что заметил, что с командлетом этого не происходит. Install-SPSolution
.
Решение
Кажется, что Install-SPSolution и Uninstall-SPSolution были написаны двумя разными разработчиками (или, по крайней мере, в разное время).
Обе команды могут принять либо «нет», либо одно, либо все веб-приложения. То, как они работают с этой опцией, совершенно разные.
Установка-SPSolution
Это хорошо закодированный вариант, где решение основано на:
- Проверьте, получило ли оно ненулевое значение в WebApplication, если да, то он проверяет истинность AllWebApplications, если это так, то это ошибка, если нет, то это одно веб-приложение.
- если не один, он проверяет, является ли SwitchParameter AllWebApplications истинным, если да, то это все веб-приложения.
- если нет, то это не веб-приложения
Удалить-SPРешение:
Двум параметрам назначены разные наборы параметров. Это означает, что вы не можете указать оба параметра -WebApplication и -AllWebApplications независимо от значений, поскольку тогда он не сможет решить, какой набор параметров вы имеете в виду.
А затем в «Ваш баг» вместо проверки значения -AllWebApplications они просто проверяют, является ли набор параметров «AllWebApplication», если да, то они игнорируют любое указанное вами значение и просто предполагают истинность
Другие советы
Это должно работать, установив для параметра -confirm значение 0 или false.
Из всех веб-приложений:
Uninstall-SPSolution yousolutionname.wsp -AllWebApplications -Confirm:$false
Из конкретного веб-приложения:
Uninstall-SPSolution -Identity yousolutionname.wsp -Confirm:0 -Webapplication $url