如何使用Powershell将UserCustomAction添加到SPSite

时间:2019-05-20 15:28:16

标签: powershell sharepoint sharepoint-2016

我正在尝试使用Powershell将 UserCustomAction 添加到SPSite(不是SPWeb / SPList),但是它似乎没有保存到数据库,因此在我的数据库上不可用网站。

在创建并完成$newUCA.Update()之后,可以使用以下命令找到新的 UserCustomAction

$site.UserCustomActions | ? {$_.Title -eq "myUCATitle"}

处置并再次获得$site后,新的UCA在$site.UserCustomActions下不可用,这意味着它没有保存。

我正在使用SharePoint 2016 SharePoint命令行管理程序(Powershell v.5)。

这是我正在使用的代码:

$site = Get-SPSite "Site_Url"
$newUCA = $site.UserCustomActions.Add()
$newUCA.Title = "myUCATitle"
$newUCA.Location = "ScriptLink"
$newUCA.Sequence = 200
$newUCA.Url = "~sitecollection/myLibrary/myJSfile.js"
$newUCA.Update();

打开网站时,右键单击并选择“查看页面源”,我应该能够在标签中看到对myJSfile.js文件的引用,但链接不存在。

2 个答案:

答案 0 :(得分:1)

要链接SharePoint网站上的JS文件而不是$newUCA.Url,我们需要使用$newUCA.ScriptSrc属性。

$site = Get-SPSite "Site_Url"
$newUCA = $site.UserCustomActions.Add()
$newUCA.Title = "myUCATitle"
$newUCA.Location = "ScriptLink"
$newUCA.Sequence = 200
$newUCA.ScriptSrc = "~sitecollection/myLibrary/myJSfile.js"
$newUCA.Update();

答案 1 :(得分:0)

您可以为此使用PnP powershell,我经常使用以下脚本。 download link

Connect-PNPOnline -Url http://sp:12001
Add-PnPJavaScriptLink -Name "ScriptLinkGetListItem" -Url /siteassets/ScriptLinkGetListItem.js -Sequence 9999 -Scope Site