Как создать сценарий для изменения всех сайтов в SharePoint Online на язык Великобритании

#function #powershell #locale #sharepoint-online

#функция #powershell #язык #sharepoint-online

Вопрос:

При создании нового сайта SPO в нашем клиенте сайт создается с правильным часовым поясом Великобритании, но для региона задан американский, что означает, что форматы даты, первый день недели и т. Д. Указаны в формате США. Это вызывает проблемы с загруженными туда файлами, содержащими даты и т. Д.

У меня есть PowerShell для изменения языка для каждого сайта:

 Connect-PnPOnline https://tenant.sharepoint.com/sites/yoursite
$LocaleId = 2057 # UK
$TimeZoneId = 2 # London

$web = Get-PnPWeb -Includes RegionalSettings,RegionalSettings.TimeZones
$timeZone = $web.RegionalSettings.TimeZones | Where-Object {$_.Id -eq $TimeZoneId}
$web.RegionalSettings.LocaleId = $LocaleId
$web.RegionalSettings.TimeZone = $timeZone
$web.Update()
Invoke-PnPQuery
 

Этот код должен обновить отдельный сайт (еще не протестирован).

Я бы хотел, чтобы код перебирал все существующие сайты SharePoint и менял язык всех США на язык Великобритании в соответствии с приведенным выше кодом, а не на один сайт.

Каков наилучший способ сделать это? Или, может быть, преобразовать его в функцию из кода?

Любая помощь приветствуется.

Ответ №1:

Вы можете попробовать приведенный ниже сценарий для перебора всех сайтов и изменения языка

 $LocaleId = 2057 # UK
$TimeZoneId = 2 # London
$credentials = Get-Credential
Connect-PnPOnline https://tenant.sharepoint.com/sites/yoursite -Credentials $credentials
$sites=Get-PnPTenantSite
foreach($site in $sites){
Connect-PnPOnline $site.Url -Credentials $credentials
$web = Get-PnPWeb -Includes RegionalSettings,RegionalSettings.TimeZones
$timeZone = $web.RegionalSettings.TimeZones | Where-Object {$_.Id -eq $TimeZoneId}
$web.RegionalSettings.LocaleId = $LocaleId
$web.RegionalSettings.TimeZone = $timeZone
$web.Update()
Invoke-PnPQuery
}
 

Комментарии:

1. Спасибо @Michel Han_MSFT! Просто для уточнения — Строка 4 — подключаюсь ли я к сайту администратора SP — т.е. tenant-admin.sharepoint.com , а не конкретный сайт? Я рассматривал что-то вроде $SitesCollection = Get-SPOSite -Ограничить ВСЕ, но кажется, что $sites = Get-PnPTenantSite может быть лучше… Еще раз спасибо!

2. Вы можете подключиться к любому сайту, команда $sites=Get-PnPTenantSite вернет все семейства сайтов. И если мой ответ вам поможет, пожалуйста, примите его.

3. Привет, Майкл. Спасибо — сценарий сработал. Проблема в том, что на сайтах OneDrive появилось сообщение «Доступ запрещен». Итак, я подумал вставить строку, чтобы добавить свою учетную запись в качестве дополнительного администратора, запустить ваш скрипт для изменения языка и, когда все сайты (включая сайты OneDrive) будут обновлены, добавить строку, чтобы удалить мою учетную запись в качестве дополнительного администратора. Что-то: $adminAcctToAdd = «user.mane@domain.com » Set-супруг -Сайт $Web.PersonalUrl -Имя входа в систему $adminAcctToAdd -IsSiteCollectionAdmin $true … ваш сценарий.. Set-SPOUser -Site $url.PersonalUrl -LoginName $adminAcctToRemove -IsSiteCollectionAdmin $false Любая помощь, пожалуйста?