是否有人能够使用 Powershell 和 CSOM 在 SharePoint Online 网站上设置网站徽标?谢谢
奈杰尔
下面的代码解决了设置Site Logo(ctx是ClientContext):
ctx.Web.SiteLogoUrl = "/teams/test/SiteAssets/45.jpg";
ctx.Web.Update();
ctx.ExecuteQuery();
根据 UserVoice 请求使 SiteLogoUrl 属性在 CSOM 中可用并发布UserVoice 推动对 SharePoint API的改进,新版本的SharePoint Online 客户端组件 SDK Web
类支持SiteLogoUrl
属性。
如何Web.SiteLogoUrl property
在 PowerShell 中使用 CSOM 进行设置:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Client.Runtime")
Function Get-SPOCredentials([string]$UserName,[string]$Password)
{
$SecurePassword = $Password | ConvertTo-SecureString -AsPlainText -Force
return New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName, $SecurePassword)
}
Function Web-SetLogo([Microsoft.SharePoint.Client.ClientContext]$Content,[string]$SiteLogoUrl)
{
$Context.Web.SiteLogoUrl = $SiteLogoUrl
$Context.Web.Update()
$Context.ExecuteQuery()
}
$UserName = "username@contoso.onmicrosoft.com"
$Password = Read-Host -Prompt "Enter the password"
$Url = "https://contoso.sharepoint.com/"
$context = New-Object Microsoft.SharePoint.Client.ClientContext($Url)
$context.Credentials = Get-SPOCredentials -UserName $UserName -Password $Password
Web-SetLogo -Content $context -SiteLogoUrl "/SiteAssets/ContosoLogo.jpg"
$context.Dispose()
这是在 sharepoint 2016 中使用 powershell 更改默认 sharepoint 徽标的脚本
$logoLocation= "http://sharepoint2016/SiteAssets/MyCompanyLogo.png"
$oSite=new-object Microsoft.SharePoint.SPSite("http://sharepoint2016/")
foreach($oWeb in $oSite.Allwebs) {
$oWeb.SiteLogoUrl=$logoLocation
$oWeb.Update()
}
此脚本可让您一键更改完整网站集的徽标:
来源:https ://github.com/t1llo/change_logo_SharePointOnline-PS
重要提示:仅在 sharePoint Online Management Shell 中执行时有效。
#Add PowerShell Module for SharePoint Online
Import-Module Microsoft.Online.SharePoint.Powershell -DisableNameChecking
##Configuration variables
$SiteUrl = "https://yoursite.collection.com/"
$LogoURL="https://yourlogo.com"
Try {
#Get 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 the Root web
$Web = $Ctx.Web
$Ctx.Load($Web)
$Ctx.ExecuteQuery()
#Function to change Logo for the given web
Function Update-Logo($Web)
{
#Update Logo
$Web.SiteLogoUrl = $LogoURL
$Web.Update()
$Ctx.ExecuteQuery()
Write-host "Updated Logo for Web:" $Web.URL
#Process each subsite in the site
$Subsites = $Web.Webs
$Ctx.Load($Subsites)
$Ctx.ExecuteQuery()
Foreach ($SubSite in $Subsites)
{
#Call the function Recursively
Update-Logo($Subsite)
}
}
#Call the function to change logo of the web
Update-Logo($Web)
}
Catch {
write-host -f Red "Error updating Logo!" $_.Exception.Message
}