SharePoint Online:使用 PowerShell 获取/设置属性包值
SharePoint Online 中的属性包是存储和检索自定义配置而不是将其存储在其他地方的快速便捷的方法。它以哈希表(键值)格式存储配置数据。 SharePoint 允许存储不同级别的配置设置,例如网站集、网站、列表和列表项。以下是我在 SharePoint Online 中使用属性包的 PowerShell 脚本集合:
PowerShell 从 SharePoint Online 属性包获取键值
要检查属性包密钥,请在 SharePoint Online 中使用此 PowerShell:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Function to Get a particular key value in Property Bag
Function Get-SPOPropertyBagKey($SiteURL, $Key)
{
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get All Properties of the web
$Web = $Ctx.Web
$Ctx.Load($Web)
$Ctx.Load($Web.AllProperties)
$Ctx.ExecuteQuery()
#Get if the Key exists in Property bag
If ($Web.AllProperties.FieldValues.ContainsKey($Key) -eq $True)
{
#Update the Key value in Property bag
$Value = $Web.AllProperties[$Key]
Write-Host -f Green "Value of the Property Bag Key '$Key':" $Value
}
Else
{
Write-Host -f Yellow "Could not find Property Bag Key:" $Key
}
}
#Variables
$SiteURL="https://Crescent.sharepoint.com/"
$Key ="NoCrawl"
#Call the function to Get the Property bag Key value
Get-SPOPropertyBagKey -SiteURL $SiteURL -Key $Key
使用 PowerShell 获取 SharePoint Online 网站的所有属性包值:
要检查 SharePoint Online 中的所有属性包键,请使用以下 PowerShell 脚本:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Variables
$SiteURL="https://Crescent.sharepoint.com"
Try {
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get the Web
$Web = $Ctx.Web
$Ctx.Load($Web)
#Get Property bag of the web
$SiteProperties = $Web.AllProperties
$Ctx.Load($SiteProperties)
$Ctx.ExecuteQuery()
#$SiteProperties.FieldValues
#Iterate through each Property
$PropertyBagKeys = $SiteProperties.FieldValues.Keys
Foreach($Key in $PropertyBagKeys)
{
Write-Host $Key : $SiteProperties[$Key]
}
}
Catch {
write-host -f Red "Error Getting Property Bag Values!" $_.Exception.Message
}
在 SharePoint Online 中使用 PowerShell 更新属性包值
以下是用于设置属性包值的 SharePoint Online PowerShell:
#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Function to Set Property Bag Field Value in SharePoint Online Site
Function Set-SPOPropertyBag($SiteURL, $Key, $Value)
{
#Setup Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials
#Get All Properties of the web
$Web = $Ctx.Web
$Ctx.Load($Web)
$Ctx.Load($Web.AllProperties)
$Ctx.ExecuteQuery()
#Get if the Key exists in the Property bag
If ($Web.AllProperties.FieldValues.ContainsKey($Key) -eq $True)
{
#Update the Key value in Property bag
$Web.AllProperties[$Key] = $Value
$web.Update()
$Ctx.ExecuteQuery()
Write-Host -f Green "Property Bag Key '$Key' Value Updated to: " $Value
}
Else
{
Write-Host -f Yellow "Could not find Property Bag Key:" $Key
}
}
#variable
$SiteURL ="https://Crescent.sharepoint.com/"
$Key = "FollowLinkEnabled"
$Value="False"
#Call the function to Update Property bag Key value
Set-SPOPropertyBag -SiteURL $SiteURL -Key $Key -Value $Value
请注意,如果禁用自定义脚本,您将无法更新属性包值!您可能会收到“访问被拒绝。您无权执行此操作或访问此资源。”错误。修复方法如下:如何在 SharePoint Online 中启用自定义脚本?
最后但并非最不重要的一点是:您可以使用 SharePoint Designer 来操作属性包中的项目!只需在 SharePoint Designer 中打开网站,然后单击功能区中的“网站选项”按钮即可获取属性包编辑器!
使用 PnP PowerShell 读取或写入属性包值
以下是我们如何使用 Get-PnPPropertyBag cmdlet 从 SharePoint Online 中的属性包读取值。
#Variable
$SiteURL= "https://crescent.sharepoint.com/sites/marketing"
#Connect to PnP Online
Connect-PnPOnline $SiteURL -Credentials (Get-Credential)
#Get the Tenant Site Object
Get-PnPPropertyBag -Key "allowdesigner"
PnP PowerShell 更新 SharePoint Online 中的属性包值
以下是在 SharePoint Online 中设置属性包的 PnP PowerShell:
Set-PnPPropertyBagValue -Key "allowdesigner" -Value "1"
总之,通过本指南,使用 PowerShell 在 SharePoint Online 中获取或设置属性包变得轻而易举。通过遵循本文中概述的步骤和最佳实践,您可以轻松检索或更新属性包值并释放 SharePoint Online 的全部潜力。
