Подключить-PnPOnline - Управление SharePoint Online с помощью PowerShell
SharePoint предоставляет некоторые опции шаблонов, но когда вы хотите быстро развернуть новый SharePoint с предопределенными библиотеками, например, то использование PowerShell будет вашим лучшим вариантом. Для подключения к SharePoint из PowerShell мы можем использовать модуль PnPOnline.
PnP PowerShell — это модуль PowerShell, созданный сообществом, который позволяет управлять не только SharePoint Online, но также Teams, Planner и Flow, например.
В этой статье мы рассмотрим, как подключиться к SharePoint с помощью Connect PnPOnline и как выполнять основные задачи с модулем PnP PowerShell.
PnP PowerShell против оболочки управления SharePoint Online
Прежде чем мы посмотрим, как использовать PnP PowerShell, полезно знать, что существует также модуль PowerShell от Microsoft. SharePoint Online Management Shell (SPO) является официальным модулем PowerShell для управления вашей средой SharePoint Online.
Итак, в чём же разница между двумя? Давайте кратко рассмотрим:
- SPO предназначен для управления SharePoint на уровне арендатора, тогда как PnP PowerShell позволяет подключаться к конкретному сайту SharePoint.
- Команды PnP PowerShell содержат больше параметров, что позволяет вам выполнять более (сложные) задачи по сравнению с эквивалентными командлетами SPO.
- Cmdlets SPO выполняются с правами администратора арендатора, в то время как PnP PowerShell работает в контексте текущего пользователя (вы, конечно, можете подключиться с учетными данными администратора).
У каждого метода есть свои преимущества. Если вы хотите выполнять команды на конкретном сайте SharePoint или в контексте текущего пользователя, используйте PnP PowerShell. Если вам нужно изменить настройки на уровне арендатора, используйте команды SPO.
Как подключить PnP Online
Чтобы подключиться к SharePoint с помощью PnPOnline, сначала нам нужно установить модуль PnP PowerShell. Последняя стабильная версия PnP PowerShell доступна только для PowerShell 7.2. Установка модулей в PowerShell довольно проста, используйте команду ниже для установки PnP PowerShell:
Install-Module PnP.PowerShell -Scope CurrentUserПрежде чем мы сможем подключиться к SharePoint Online, нам сначала нужно зарегистрировать приложение Azure AD. Это приложение используется только для аутентификации. Для этого вам потребуется права на запись в Azure AD.
Заметка
Если вы запустите Register-PnPManagementShellAccess и получите ошибку, что команда не найдена в модуле, несмотря на то что вы только что её установили, скорее всего, вы используете PowerShell версии 5.x. Проверьте версию PowerShell и убедитесь, что вы используете 7.2 или выше.
Register-PnPManagementShellAccessВам нужно будет войти в систему и дать согласие на запрашиваемые разрешения для PnP Management Shell. Это довольно много, но это ожидаемо, потому что с помощью командлетов PnP PowerShell вы можете управлять так многим.
Подключиться к PnPOnline
С установленным и зарегистрированным PnP PowerShell мы теперь можем подключиться к PnPOnline. Самый простой способ сделать это - использовать параметр -Interactive. Это откроет веб-диалог, где вы сможете ввести или выбрать свою учетную запись и пройти через процесс MFA.
Connect-PnPOnline lazydev.sharepoint.com -InteractiveВ вышеупомянутом примере мы подключаемся к основному сайту SharePoint на уровне арендатора. Но чтобы изменить права доступа к конкретному сайту SharePoint или если вы хотите создать новые библиотеки документов на сайте SharePoint, вам нужно будет подключиться напрямую к этому сайту SharePoint.
Чтобы сделать это, мы можем просто указать полный URL-адрес сайта:
$url = "https://lazydev.sharepoint.com/sites/Lab22"
Connect-PnPOnline $url -InteractiveЕсли вы уже подключены к PnPOnline, то вам не нужно вводить свои учетные данные снова. Это означает, что вы можете просто подключить (выбрать) другой сайт SharePoint, используя командлет connect-pnponline.
Использование PnPOnline в Azure Runbook
Runbook'и Azure — отличное место для автоматического выполнения скриптов PowerShell. Когда вы хотите использовать PnPOnline внутри runbook'а, лучше использовать управляемую идентичность для аутентификации. Таким образом, вам не нужно хранить никаких учетных данных или сертификатов для аутентификации.
Следуйте этому руководству для начальной настройки управляемых объектов в Azure. Как только вы это сделаете, мы сможем добавить необходимые разрешения для PnP PowerShell с помощью команды ниже. Также убедитесь, что вы добавили модуль PnP.PowerShell в свой аккаунт Azure Automation.
$managedIdentityObjectId = "1a2b1234-1234-123a-9b3f-1234f1234ab"
$spoScopes = @(
'Sites.FullControl.All',
'TermStore.ReadWrite.All',
'User.ReadWrite.All'
)
ForEach($scope in $spoScopes){
Add-PnPAzureADServicePrincipalAppRole -Principal $managedIdentityObjectId -AppRole $scope -BuiltInType SharePointOnline
}После того как вы добавили разрешения, вы должны иметь возможность подключиться к PnPOnline в вашем runbook с помощью следующей команды:
Connect-PnPOnline -ManagedIdentityИспользование PnP PowerShell
Теперь вы подключены к SharePoint Online с помощью PnpOnline, давайте посмотрим на некоторые базовые примеры. Я не буду показывать все возможные команды, потому что на момент написания их более 675 в PnP PowerShell, поэтому мы сосредоточимся на создании нового сайта SharePoint, добавлении некоторых библиотек документов и добавлении папок.
Создание нового сайта SharePoint
Для создания нового сайта SharePoint мы будем использовать командлет New-PnPSite. Нам нужно будет предоставить некоторую основную информацию, такую как название и алиас, но также следует обратить внимание на другие важные поля:
- Тип – Это может быть TeamSite, CommunicationSite или TeamSiteWithoutMicrosoft365Group
- IsPublic - По умолчанию значение $false, что создаёт приватную группу. Установите $true для публичного сайта.
- Владелец – Если не указано, тогда вы являетесь владельцем. Вы можете указать одного владельца или использовать -Owners для указания нескольких владельцев. Используйте адрес электронной почты владельца(ов).
- Часовой пояс – Это позволяет установить часовой пояс для сайта.
С учетом предоставленных деталей, мы можем просто создать сайт SharePoint, используя следующий код PowerShell. Обратите внимание, что я использую распакованную хэш-таблицу для хранения свойств (это облегчает чтение кода):
$siteDetails = @{
Type = 'TeamSite'
Title = "Lazy Lab 024"
Alias = "Lab024"
IsPublic = $true
owner = "adelev@lazydev.onmicrosoft.com"
}
New-PnPSite @siteDetailsПрежде чем создавать новый сайт SharePoint, разумно проверить, существует ли он уже. Для этого мы можем использовать Get-PnPTenantSite и использовать фильтр, чтобы проверить, существует ли сайт:
if ($null -eq (Get-PnPTenantSite -Filter "Url -like 'Lab024'")) {
# Create new site
}Добавление библиотек документов
Создав сайт SharePoint, мы теперь можем добавить несколько библиотек документов. Для этого мы будем использовать командлет New-PnPList. Убедитесь, что вы подключены к новому сайту перед выполнением командлета:
Connect-PnPOnline -url https://lazydev.sharepoint.com/sites/Lab024 -InteractiveПараметр -OnQuikLaunch гарантирует, что новая библиотека документов также будет добавлена в навигацию сайта. Параметр -Template позволяет выбрать тип списка, который вы хотите создать. Наиболее распространенные - это DocumentLibary или GenericList, но другие варианты можно найти здесь.
$docLibs = @(
"Finance"
"Marketing"
"Contracts"
"Drawings"
"Legal"
)
$docLibs | ForEach {
New-PnPList -Title $_ -Template DocumentLibrary -OnQuikLaunch
}Создание папок
Мы также можем использовать PnP PowerShell для создания папок в библиотеке документов SharePoint. Это отлично, когда вы всегда используете одну и ту же структуру папок в своих проектах.
Folders to create
$folders = @(
"Architectural"
"Structural"
"MEP"
)
Document Library
$docLibrary = "/Drawings"
#Create the Folder structure
$folders | Foreach-Object {
Add-PnPFolder -Name $_ -Folder $docLibrary
}
Вы также можете создавать подпапки с помощью команды Add-PnPFolder. Для этого вам нужно будет добавить родительскую папку к пути библиотеки документов. Итак, например, если мы хотим создать подпапку в папке Архитектурный, вам нужно будет указать путь следующим образом:
$folders = @(
"Floor Plans"
"Elevations"
"Sections"
)
$docLibrary = "Drawings/Architectural"
$folders | Foreach-Object {
Add-PnPFolder -Name $_ -Folder $docLibrary
}Загрузка файлов с помощью PnP PowerShell
Последний шаг в нашем примере — это загрузить файлы с помощью PnP PowerShell. Для этого мы будем использовать командлет Add-PnPFile. Нам нужно будет использовать локальный путь к файлу и указать полный путь, по которому мы хотим загрузить файл.
Итак, например, чтобы загрузить файл в папку Архитектура/Элеваты в библиотеке чертежей, мы можем сделать следующее:
Add-PnPFile -Path "C:\temp\example.csv" -Folder "Drawings/Architectural/Elevations"Заключение
PnP PowerShell — это отличный способ создавать и управлять сайтами SharePoint. Вы можете легко подключиться напрямую к сайтам SharePoint с помощью команды connect pnponline и управлять каждым аспектом сайта. В этой статье мы рассматривали только создание сайта, библиотек и папок, но помните, что PnP PowerShell может делать гораздо больше.
Надеюсь, эта статья помогла вам начать работу с PnP PowerShell. Если у вас есть какие-либо вопросы, просто оставьте комментарий ниже.

