2

是否有人能够使用 Powershell 和 CSOM 在 SharePoint Online 网站上设置网站徽标?谢谢

奈杰尔

4

4 回答 4

1

下面的代码解决了设置Site Logo(ctx是ClientContext):

ctx.Web.SiteLogoUrl = "/teams/test/SiteAssets/45.jpg";

ctx.Web.Update();

ctx.ExecuteQuery();

于 2014-12-01T17:07:10.000 回答
1

根据 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()
于 2014-12-01T21:28:37.697 回答
1

这是在 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()
}
于 2016-10-19T19:47:14.533 回答
0

此脚本可让您一键更改完整网站集的徽标:

来源: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
    }
于 2019-10-25T08:51:32.783 回答