#powershell #sharepoint
#powershell #sharepoint
Вопрос:
Есть ли способ заблокировать все личные сайты.
Я нашел скрипт для блокировки одного сайта
$siteUrl = "https://xxx-my.sharepoint.com/personal/adelev_xxx_onmicrosoft_com"
$site = Get-SPOSite $siteUrl -Detailed
Set-SPOSite $site -LockState NoAccess
Это работает, но у меня есть сотни сайтов для блокировки. Сначала мне нужно будет перечислить все сайты, а затем один за другим заблокировать их.
Здравствуйте,
Есть ли способ автоматизировать это и ЗАБЛОКИРОВАТЬ все сайты?
Я хочу временно заблокировать сайты. Эта блокировка не позволяет пользователям, у которых есть личный сайт, использовать их (новые ppl блокируются настройкой MySite).
Я напрямую связался с Microsoft, и они предоставили мне некоторые данные — они сказали мне, что я должен использовать ForEach , но я понятия не имею, как это использовать, и они мне больше не помогут, потому что это противоречит какой-то политике.
Ответ №1:
Подводя итог, вам нужно:
- Получить все личные сайты
- Запустите
Set-SPOSite
для каждого из них, используя любой механизм, напримерforeach
Вот полезная статья для 1. Получите список всех пользовательских URL-адресов OneDrive в вашей организации. Итак, вам нужно запустить что-то вроде:
$allSites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" | Select -ExpandProperty Url
И для 2. вы можете использовать что-то похожее на:
foreach ($site in $allSites) {
Set-SPOSite -Identity $site -LockState NoAccess
}
Комментарии:
1. В настоящее время скрипт работает, но я не знаю, как проверить, изменился ли статус. Я попробовал это: Get-SPOSite -IncludePersonalSite $true он печатает все сайты, но как распечатать все сайты со статусом LockState? Спасибо
2. Взгляните на
Where-Object
. Возможно, вы захотите исключить| Select -ExpandProperty Url
из начального командлета, чтобы получить доступ к большему количеству данных.3. Когда я удаляю URL-адрес Select -ExpandProperty, он вообще не изменяет вывод. В случае простого сценария shellpoint для изменения состояния блокировки, что лучше? С параметром или без него?
4. Также не вижу, чтобы это работало…
Connect-SPOService -Url https://xxx-admin.sharepoint.com $allSites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" | Select -ExpandProperty Url foreach ($site in $allSites) { Where-object -Identity $site -LockState NoAccess }
5. Это тоже не работает:
$allSites = Get-SPOSite -IncludePersonalSite $true -Limit all -Filter "Url -like '-my.sharepoint.com/personal/'" foreach ($site in $allSites) { $site where -LockState NoAccess }
Ответ №2:
Вот что я придумал, чтобы получить все заблокированные сайты. Он включает в себя все информационные поля. Измените путь экспорта на подходящее для вас место назначения:
Get-sposite -includepersonalsite $true -Limit ALL -Filter "LockState -like 'NoAccess'" |Export-csv -Path 'C:PowerShellOneDriveSitesLocked.csv' -Delimiter ',' -NoTypeInformation