当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] SharePoint Online:使用 PowerShell 更改时区

作者:精品下载站 日期:2024-12-14 14:37:42 浏览:15 分类:玩电脑

SharePoint Online:使用 PowerShell 更改时区


要求:更改 SharePoint Online 中的时区。

如何更改 SharePoint Online 中的时区?

作为一个在不同地区和时区运营的全球组织,我们希望为各个站点设置时区,因为用户在上传文档的时间戳中看到太平洋时区时会感到恼火。在本文中,我们将向您展示如何更改 SharePoint Online 的时区。

可以通过以下方式设置 SharePoint Online 时区设置:

  1. 站点设置 >> 单击“站点管理”下的“区域设置”。
  2. 在区域设置页面上,您可以设置时区、区域设置和其他区域设置。

    [玩转系统] SharePoint Online:使用 PowerShell 更改时区

  3. 单击页面右下角的“确定”按钮保存更改。

新的时区设置应立即反映在列表和库上显示的所有时间戳以及使用的日期字段值中。

请注意,您必须拥有所有 SharePoint Online 网站集的网站集管理员权限才能更改时区区域设置。您需要 SharePoint Online 管理员或租户管理员才能在租户范围内应用它。

获取 SharePoint Online 中所有可用时区的列表:

我们需要时区 ID 或说明来更新 SharePoint Online 网站的时区。要获取时区列表,您可以从上页的时区下拉列表中选择它,也可以使用此 PowerShell 获取所有可用时区列表。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#SharePoint Online Site URL
$SiteURL = "https://crescent.sharepoint.com/"

#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = $credentials

#sharepoint online powershell to get time zone
$Timezones = $Ctx.Web.RegionalSettings.TimeZones
$Ctx.Load($Timezones)
$Ctx.ExecuteQuery()

#Get Timezone ID and Description
$Timezones | Select ID, Description

这将检索所有可用的时区 ID 和描述字段。

[玩转系统] SharePoint Online:使用 PowerShell 更改时区

您还可以参阅此 Microsoft 文章了解可用的时区值:https://docs.microsoft.com/en-us/previous-versions/office/sharepoint-server/ms453853(v=office.15)?redirectedfrom=MSDN

SharePoint Online:使用 PowerShell 更改时区

获取时区 ID 或描述后,您可以使用 PowerShell 脚本更改时区。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Config parameters for SharePoint Online Site URL and Timezone description
$SiteURL = "https://crescent.sharepoint.com/"
$TimezoneName ="(UTC+04:00) Abu Dhabi, Muscat"

#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = $credentials

#Get all available time zones
$Timezones = $Ctx.Web.RegionalSettings.TimeZones
$Ctx.Load($Timezones)
$Ctx.ExecuteQuery()

#Filter the Time zone to update
$NewTimezone = $Timezones | Where {$_.Description -eq $TimezoneName}

#sharepoint online powershell set time zone
$Ctx.Web.RegionalSettings.TimeZone = $NewTimezone
$Ctx.Web.Update()
$Ctx.ExecuteQuery() 

PnP PowerShell 更改 SharePoint Online 中的时区:

以下是如何使用 PnP PowerShell 在 SharePoint Online 中设置时区。


#Set Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$TimezoneName = "(UTC+04:00) Abu Dhabi, Muscat"

#Connect to SharePoint Online with PnP PowerShell
Connect-PnPOnline -URL $SiteURL -Interactive

#Get the Web
$web = Get-PnPWeb -Includes RegionalSettings.TimeZones

#Get the time zone
$Timezone  = $Web.RegionalSettings.TimeZones | Where {$_.Description -eq $TimezoneName}

If($Timezone -ne $Null)
{
    #Update time zone of the site
    $Web.RegionalSettings.TimeZone = $Timezone
    $Web.Update()
    Invoke-PnPQuery
    Write-host "Timezone Updated Successfully!" -ForegroundColor Green
}
else
{
    Write-host "Timezone $TimezoneName not found!" -ForegroundColor Yellow
}

同样,您可以更新区域设置、时间格式和其他区域设置:


$Ctx.web.RegionalSettings.time24 = $True
$Ctx.web.RegionalSettings.LocaleId = 1043

此 PowerShell 设置 SharePoint Online 网站的默认时区。

使用 PowerShell 设置 SharePoint Online 网站集的时区:

由于时区设置是在站点(Web)范围内管理的,因此在每个站点上设置时区非常麻烦。顶级网站集中的时区设置不会影响/自动传播到子网站。因此,让我们使用 PowerShell 更改 SharePoint Online 网站集的时区。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#function to change Timezone regional settings of a SharePoint Online site
Function Set-SPOTimeZone
{ 
    Param ([Microsoft.SharePoint.Client.Web]$Web,[Microsoft.SharePoint.Client.TimeZone]$Timezone)

    Try
    {
        #Update the timezone of the site
        $Web.RegionalSettings.TimeZone = $NewTimezone
        $Web.Update()
        $Ctx.ExecuteQuery()

        Write-host -f Green "Timezone has been updated for "$Web.Url

        #Get all subsites of the web
        $Ctx.Load($Web.Webs)
        $Ctx.executeQuery()

        #Iterate through each subsites and call the function recursively
        Foreach ($Subweb in $Web.Webs)
        {
            #Call the function to set Timezone for the web
            Set-SPOTimeZone -Web $Subweb -Timezone $NewTimezone
        }
    }
    Catch [System.Exception]
    {
        Write-Hoste -f Red $_.Exception.Message
    }  
}

#Config parameters for SharePoint Online Site Collection URL and Timezone description
$SiteURL = "https://crescent.sharepoint.com/"
$TimezoneName ="(UTC+04:00) Abu Dhabi, Muscat"

#Get Credentials to connect
$Cred= Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
#Set up the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl)
$Ctx.Credentials = $credentials
  
#Get the Root web from given Site Collection URL
$Web = $Ctx.web
$Ctx.Load($Web)

#Get the Time zone to update
$Timezones = $Ctx.Web.RegionalSettings.TimeZones
$Ctx.Load($Timezones)
$Ctx.ExecuteQuery()
$NewTimezone = $Timezones | Where {$_.Description -eq $TimezoneName}
 
#Call the function to set Timezone for the Root web
Set-SPOTimeZone -Web $web -Timezone $NewTimezone

在 SharePoint Online 中设置默认时区 - 租户范围

要为您将来在 SharePoint Online 中创建的新网站设置默认时区,请执行以下操作:

  1. 登录 SharePoint 管理中心 >> 单击左侧导航中的“设置”>> 单击“网站创建”。
  2. 在“网站创建”页面上,选择新 SharePoint 网站集的默认时区。

    [玩转系统] SharePoint Online:使用 PowerShell 更改时区

这将为您创建的新网站集设置默认时区。

更改现有 SharePoint Online 网站集的时区怎么样?

我们可以使用以下 PowerShell 脚本在租户范围内为 SharePoint Online 中的所有现有网站集设置时区。该脚本只是循环遍历所有站点并更改默认时区。只需在脚本中设置 $AdminSiteURL 和 $TimezoneName 变量,并提供一次连接到 SharePoint Online 管理中心的凭据。


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#function to change Timezone regional settings of a SharePoint Online site
Function Set-SPOnlineTimeZone([String]$SiteURL,[String]$TimezoneName,[PSCredential]$Cred)
{ 
     Try
     {
        #Setup Credentials to connect
        $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
  
        #Set up the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $credentials
  
        #Get the Root web from given URL
        $Web = $Ctx.web
        $Ctx.Load($Web)

        #Get the Time zone to update
        $Timezones = $Web.RegionalSettings.TimeZones
        $Ctx.Load($Timezones)
        $Ctx.ExecuteQuery()
        $NewTimezone = $Timezones | Where {$_.Description -eq $TimezoneName}
 
        #Update the timezone of the site
        $Web.RegionalSettings.TimeZone = $NewTimezone
        $Web.Update()
        $Ctx.ExecuteQuery()

        Write-host -f Green "Timezone has been updated for "$Web.Url

        #Get all subsites of the web
        $Ctx.Load($Web.Webs)
        $Ctx.executeQuery()

        #Iterate through each subsites and call the function recursively
        Foreach ($Subweb in $Web.Webs)
        {
            #Call the function to set Timezone for the web
            Set-SPOnlineTimeZone -SiteURL $Subweb.URL -TimezoneName $TimezoneName -Cred $AdminCredentials
        }
   }
    Catch [System.Exception]
    {
        Write-Host -f Red $_.Exception.Message
    } 
} 

#Config parameters for SharePoint Online Admin Center and Timezone description
$AdminSiteURL = "https://crescent-admin.sharepoint.com/"
$TimezoneName ="(UTC+04:00) Abu Dhabi, Muscat"

#Get credentials to connect to SharePoint Online Admin Center
$AdminCredentials = Get-Credential

#Connect to SharePoint Online Tenant Admin
Connect-SPOService -URL $AdminSiteURL -Credential $AdminCredentials

#Get all Site Collections
$SitesCollection = Get-SPOSite -Limit ALL

#Iterate through each site collection
ForEach($Site in $SitesCollection)
{
    Write-host -f Yellow "Setting Timezone for Site Collection:"$Site.URL

    #Call the function to set Timezone for the site
    Set-SPOnlineTimeZone -SiteURL $Site.URL -TimezoneName $TimezoneName -cred $AdminCredentials
}

这是关于在 SharePoint 本地设置时区和其他区域设置的另一篇文章 使用 PowerShell 在 SharePoint 2013 中更改区域设置、时区、区域设置

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯