1

在基本团队网站模板的主页上,我有一个日历 web 部件,默认情况下它的视图基于日历列表日历视图。我的问题是,在日历列表上应用新的日历覆盖后,主页视图不会自动更新以反映此更改。我必须改为编辑 web 部件,选择日历视图(这是当前默认使用的)并应用该更改。我试图在没有运气的情况下在 powershell 中完成这项任务。

我试图使用的代码是:

$web = get-spweb "http://portal/site/testsite1"
$file = $web.getfile("default.aspx")
$manager = $file.getlimitedwebpartmanager([System.web.ui.webcontrols.webparts.personalizationscope]::shared)
$manager.webparts | format-list title, ID

$wp = $manager.webparts["GUID_HERE"]
$doclib = $web.lists["Calendar"]
$view = $doclib.Views["Calendar"]

$wp.ViewGuid = $view.ID.ToString("B").ToUpper()
$manager.SaveChanges($wp)

不幸的是,这在更新视图以反映日历视图中应用的当前覆盖方面没有效果,因此只有手动干预起作用。是否有一些我可以用来完成此任务的 powershell 代码?

4

1 回答 1

0

这个想法是正确的,但在细节上有一个错误。您不应依赖 ViewGuid。看看这篇文章。您可能会发现它很有帮助。然后将 .NET 代码转换为 PowerShell 脚本,您将拥有所需的内容。更好的建议是将此代码和事件接收器放入列表更新时触发的事件中。

于 2012-09-06T15:22:43.693 回答