Поиск неиспользуемых сайтов и привилегированных пользователей в Sharepoint


В Sharepoint есть механизм контроля за неиспользуемыми сайтами. В настройках можно включить рассылку уведомлений собственникам сайтов, если сайт не используется более заданного количества дней. Дополнительно можно включить автоматическое удаление такого сайта после отправки указанного количества уведомлений.

Несмотря на наличие такого удобного механизма, бывает необходимо получить список неиспользуемых сайтов в явном виде, например, для архивирования и последующего ручного удаления.

Рассмотрим ситуацию:

  1. Автоматическое удаление неиспользуемых сайтов выключено (запрещено политикой предприятия).
  2. Собственники сайта не имеют учетной записи (уволены) или не реагируют на уведомления

В этой ситуации возникает вопрос: как администратору фермы узнать о неиспользуемых сайтах?

Поможет простой скрипт:

 $AllSites=Get-SPSite -Limit All | where url -NotMatch "mysites" |  Get-SPWeb -Limit All |

    % { [pscustomobject]@{SiteUrl=$_.Url;

                          SiteTitle=$_.Title;

                          LastItemModifiedDate=$_.LastItemModifiedDate;

                          SiteAdministrators=$_.SiteAdministrators

                          }

      }

$AllSites | Where LastItemModifiedDate -lt (Get-Date).AddDays(-180) 

Скрипт выводит сайты, которые не использовались 180 дней.

«mysites» отфильтровывает персональные сайты (замените на свой URL персональных сайтов). Можете удалить фильтр, если хотите включить персональные сайты в вывод.

Требуется иметь права администратора фермы, чтобы скрипт отработал.

Бонус 1

Скрипт собирает владельцев сайтов (точнее коллекций сайтов) в свойстве SiteAdministrators.

 $AllSites=Get-SPSite -Limit All | where url -NotMatch "mysites" |  Get-SPWeb -Limit All |

    % { [pscustomobject]@{SiteUrl=$_.Url;

                          SiteTitle=$_.Title;

                          LastItemModifiedDate=$_.LastItemModifiedDate;

                          SiteAdministrators=$_.SiteAdministrators

                          }

      } 

Бонус 2

Скрипт собирает не только владельцев сайтов (коллекций сайтов), но и всех пользователей с полными правами в свойстве SiteFullPermissionUsers.

Этот скрипт может пригодится для аудита безопасности.

Внимание! Скрипт может работать очень долго!!!

(Например, если у вас на сайте предоставлен доступ группе Domain Users, то будет проверяться каждый пользователь! – и если таких сайтов много, то умножайте…)

При повторном запуске скрипт завершит работу намного быстрее (кэш!).

 try {

$AllSites=Get-SPSite -Limit All | where url -NotMatch "mysites" |  Get-SPWeb -Limit All |

    % { [pscustomobject]@{SiteUrl=$_.Url;

                          SiteTitle=$_.Title;

                          LastItemModifiedDate=$_.LastItemModifiedDate;

                          SiteAdministrators=$_.SiteAdministrators;

                          SiteFullPermissionUsers = $_.SiteUsers.Where({$_.ParentWeb.DoesUserHavePermissions($_,[Microsoft.SharePoint.SPBasePermissions]::FullMask)})

                          }

      }

} catch {} 

Полезные ссылки:
http://techtrainingnotes.blogspot.ru/2014/11/sharepoint-use-powershell-to-get-all.html

Реклама

Один ответ

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: