清除PowerShell Sharepoint缓存?

时间:2011-02-22 13:26:57

标签: powershell sharepoint-2010

我有一个奇怪的问题:

我使用PowerShell

部署了包含内容和网站模板的WSP包
Add-SPSolution ...
Install-SPSolution ...

现在尝试创建新的网站集时,我的模板可见,我可以使用我的模板创建新的网站集。

当我尝试在与之前相同的会话中使用PowerShell(Get-SPWebTemplate查看所有已安装的网站模板时,新模板不会出现!

反过来也是如此:当撤回/删除解决方案时,我不能再使用模板创建新的网站集,因为它已经消失了。但是在仍然打开的PowerShell会话中,模板仍然可见。

唯一的解决方案:在收回/部署解决方案后打开一个新的PowerShell会话 - 仅在此“新鲜”会话中,更改才会同步。

我的问题是:如何清除此PowerShell缓存?如何直接从服务器而不是从某个缓存中获取网站模板列表?

其他一些人也提出关闭/重新打开PowerShell(PowerShell caching leads to head-banging) - 这不是解决方案......

免责声明:Cross post from "How to clear PowerShell Object Model Cache"

2 个答案:

答案 0 :(得分:4)

原来,PowerShell 实际上缓存了某些内容,特别是OWSSVR.DLL

有两种(和½)方法可以克服这个问题:

  1. Use a nifty PowerShell snippet to kill a Sharepoint thread and reload a DLL
  2. 使用从第一个会话开始的其他PowerShell会话
  3. 使用old-school stsadm创建网站,因为stsadm存在于另一个线程中,因此已“看到”新网站模板
  4. 我使用方法2½(表示为3),因为它是使用单线程stsadm而不是调用另一个PS会话的最简单方法。

答案 1 :(得分:0)

我无法从这里查看,但它可能与当前“分配集合”中缓存的网站有关。查看Start-和Stop-SPAssignment命令。我不确定默认的赋值模型是什么,但是我尝试运行“Stop-SPAssignment; Start-SPAssignment”来查看是否会处理当前用于检索模板的缓存SPWeb。

-Oisin

相关问题