我正在编写PowerShell脚本,用于添加我的解决方案,激活解决方案以及SP2010服务器上的最后一个激活功能。添加解决方案并在部署解决方案方面没有问题。问题是当我尝试使用enable-spfeature命令启用功能时,它没有在服务器上找到功能,但通过UI存在功能。我怀疑它在部署仍在以其途中尝试太快。是否有任何方法可以检查部署是否完成或需要重新启动某些服务或其他东西。

请建议

有帮助吗?

解决方案

你遇到的东西很可能很容易缓存。

powershell热衷于缓存所实例化的对象,如spweb和spsite,以及它的内容,因此如果您在一个大块中运行所有内容,则会看到例如添加的功能不会显示出来。

一种简单的测试方式如果这是问题,请尝试将脚本拆分为两个。 然后首先执行一个脚本,关闭shell,打开另一个并执行该脚本。

如果它没有问题运行,这是一个缓存问题!

我们通过产卵新进程(start-process“powershell.exe”...)解决了这一点:

010 Solutions
    10 Solution
    20 Features
020 Etc etc
.

每个新文件夹被解释为新的PowerShell实例。

这效果很好,所以我会推荐类似的方法。更简单的方法是简单地产生新的进程来执行您的功能配置:

$command = "your commands goes here"
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
# encoded to avoid encoding and escaping issues
# STA ensures you are running single threaded, important as most SharePoint objects isnt multi threaded
Start-Process powershell.exe -NoLogo -encodedCommand $encodedCommand -STA
.

许可以下: CC-BY-SA归因
scroll top