当我尝试使用以下行卸载 WSP 时,一切正常:

Uninstall-SPSolution project.wsp # no error - OK

当我尝试添加开关参数 -AllWebApplications 时,出现错误(类似于此解决方案不包含 Web 应用程序范围的任何资源),这也很好:

Uninstall-SPSolution project.wsp -AllWebApplications # error X - OK

但是,当我添加带有 FALSE 值的 switch 参数时,我收到错误(与上面相同),这是错误的,不是吗?

Uninstall-SPSolution project.wsp -AllWebApplications:$false # error X again - WRONG

看起来与之前的行相比没有任何变化,但它应该......


用另一种方式:我的解决方案不需要 AllWebApplication 参数,但我想显式将其关闭(意思是 - 用 FALSE 值指定它)。

问题是:如何将此开关参数指定为 FALSE?


我刚刚注意到 cmdlet 没有发生这种情况 Install-SPSolution.

有帮助吗?

解决方案

似乎 Install-SPSolution 和 Uninstall-SPSolution 是由两个不同的开发人员编写的(或者至少在不同的时间)

这两个命令都有可能不接受、接受单个或所有 Web 应用程序,它们处理这些选项的方式完全不同。

安装-SPSolution
这是编码良好的代码,其决策基于:

  • 检查 WebApplication 中是否有非空值,如果是,则检查 AllWebApplications 是否为 true,如果是,则为错误,如果不是,则为单个 WebApp
  • 如果不是单个,则检查 SwitchParameter AllWebApplications 是否为 true,如果是,则为所有 WebApps
  • 如果不是,那么就不是 WebApps

卸载-SP解决方案:

已为两个参数分配了不同的参数集,这意味着无论值如何,您都不能同时指定 -WebApplication 和 -AllWebApplications,因为它无法决定您指的是哪个参数集。

然后到“你的错误” 他们不检查 -AllWebApplications 的值,而是检查参数集是否为“AllWebApplication”,如果是,则忽略您指定的任何值并假设为 true

其他提示

它应该通过将 -confirm 设置为 0 或 false 来工作。

从所有网络应用程序:

Uninstall-SPSolution yousolutionname.wsp -AllWebApplications -Confirm:$false

从特定的 Web 应用程序:

Uninstall-SPSolution -Identity yousolutionname.wsp -Confirm:0 -Webapplication $url
许可以下: CC-BY-SA归因
scroll top