【问题标题】:Clear PowerShell Sharepoint Cache?清除 PowerShell Sharepoint 缓存?
【发布时间】:2014-10-01 13:08:45
【问题描述】:

我有一个奇怪的问题:

我使用 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"

【问题讨论】:

    标签: powershell sharepoint-2010


    【解决方案1】:

    原来 PowerShell 实际上缓存了一些东西,特别是 OWSSVR.DLL

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

    1. Use a nifty PowerShell snippet to kill a Sharepoint thread and reload a DLL
    2. 使用从第一个会话中启动的不同 PowerShell 会话
    3. 使用老式 stsadm 创建站点,因为 stsadm 存在于另一个线程中,因此已经“看到”新站点模板

    我选择了方法 2 ½(表示为 3),因为它是使用单行 stsadm 而不是调用另一个 PS 会话的最简单方法。

    【讨论】:

    • 你能发展第二点吗?我尝试过 enter-pssession、new-spsession,但在使用 WInRM 时遇到了问题(即使我运行 Enable-PSRemoting)
    • 不知道通过 WinRM 的行为如何......当您通过powershell.exe -command "mycommand" 打开一个新的 powershell 提示符时,它可以工作。与手动运行另一个 powershell.exe 时相同。您需要找到一种方法来启动另一个 powershell shell [原文如此] 来运行您的 ccommands。我已经求助于 3. - 在我的 powershell 脚本中使用 stsadm,一切都很好。
    • 谢谢。我会给 powershell.Exe -command 一个机会,但如果太复杂会回退到 stsadm。
    • 有人建议(Get-SPFarm).Uncache() 我还得试试。
    • (Get-SPFarm).Uncache() 不适用于我的情况
    【解决方案2】:

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

    -奥辛

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 2022-11-10
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      • 2017-04-06
      • 1970-01-01
      相关资源
      最近更新 更多