Microsoft 365: Konfiguration für Onlinedienste zur Verwendung des Azure Rights Management-Diensts
Mit den folgenden Abschnitten können Sie Exchange Online, Microsoft SharePoint und Microsoft OneDrive konfigurieren, um den Azure Rights Management-Dienst von Azure Information Protection zu verwenden.
Exchange Online: IRM-Konfiguration
Informationen darüber, wie Exchange Online mit dem Azure Rights Management-Dienst zusammenarbeitet, finden Sie im Abschnitt Exchange Online und Exchange Server aus Wie Office-Anwendungen und -Dienste Azure Rights Management unterstützen.
Möglicherweise ist Azure Rights Management schon für Exchange Online aktiviert. Sie können dies herausfinden, indem Sie die folgenden Befehle ausführen:
Wenn Sie Windows PowerShell für Exchange Online zum ersten Mal auf Ihrem Computer verwenden, müssen Sie Windows PowerShell zum Ausführen von signierten Skripts konfigurieren. Starten Sie Ihre Windows PowerShell-Sitzung mit der Option Als Administrator ausführen, und geben Sie dann Folgendes ein:
Set-ExecutionPolicy RemoteSigned
Drücken Sie zum Bestätigen Y.
Melden Sie in Ihrer Windows PowerShell-Sitzung bei Exchange Online mit einem Konto an, das für den Remoteshellzugriff aktiviert ist. Standardmäßig sind alle Konten, die in Exchange Online erstellt werden, für den Remoteshellzugriff aktiviert. Diese Einstellung kann über den Befehl Set-User <UserIdentity> -RemotePowerShellEnabled deaktiviert (und wieder aktiviert) werden.
Geben Sie zum Anmelden zunächst Folgendes ein:
Connect-ExchangeOnline
Geben Sie dann im Dialogfeld Windows PowerShell-Anmeldeinformationen anfordern Ihren Microsoft 365-Benutzernamen und Ihr Kennwort ein.
Führen Sie den Befehl Get-IRMConfiguration aus, um die Exchange Online-Konfiguration des Schutzdiensts anzuzeigen:
Get-IRMConfiguration
Machen Sie in der Ausgabe den Wert für AzureRMSLicensingEnabled ausfindig:
Wenn AzureRMSLicensingEnabled auf TRUE festgelegt ist, ist Azure Rights Management bereits für Exchange Online aktiviert.
Wenn AzureRMSLicensingEnabled auf FALSE festgelegt ist, führen Sie den folgenden Befehl aus, um Exchange Online für den Azure Rights Management-Dienst zu aktivieren:
Set-IRMConfiguration -AzureRMSLicensingEnabled $true
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Exchange Online erfolgreich konfiguriert wurde:
Test-IRMConfiguration -Sender <user email address>
Zum Beispiel: Test-IRMConfiguration -Sender adams@contoso.com
Dieser Befehl führt eine Reihe von Überprüfungen aus. Dazu zählen das Überprüfen der Verbindung mit dem Dienst sowie das Abrufen von Konfiguration-URIs, Lizenzen und Vorlagen. In der Windows PowerShell-Sitzung werden die Ergebnisse der einzelnen Überprüfungen angezeigt. Wenn alle diese Tests bestanden wurden, wird Folgendes eingeblendet: GESAMTERGEBNIS: ERFOLG
Wenn Exchange Online zum Verwenden des Azure-Rights Management-Diensts aktiviert ist, können Sie die folgenden Features konfigurieren:
Löschen der Nachrichtenverschlüsselung mithilfe von E-Mail-Flussregeln.
Verschlüsselung mithilfe von Richtlinien zur Verhinderung von Datenverlust (DATA Loss Prevention, DLP).
Vertraulichkeitsbezeichnungen mit Verschlüsselung mit Outlook im Web, Mac, iOS und Android.
Automatische Bezeichnungsrichtlinien in Exchange, um Vertraulichkeitsbezeichnungen mit Verschlüsselung auf E-Mails und geschützte Voicemailnachrichten anzuwenden.
SharePoint in Microsoft 365 und OneDrive: IRM-Konfiguration
Informationen darüber, wie SharePoint IRM mit dem Azure Rights Management-Dienst funktioniert, finden Sie unter SharePoint in Microsoft 365 und SharePoint Server im Abschnitt Schutz durch Rechteverwaltung in dieser Dokumentation.
Um SharePoint in Microsoft 365 und OneDrive für die Unterstützung des Azure Rights Management-Diensts zu konfigurieren, müssen Sie zunächst den IRM-Dienst (Information Rights Management) für SharePoint über das SharePoint Admin Center aktivieren. Anschließend können Websitebesitzer ihre SharePoint-Listen und -Dokumentbibliotheken und Benutzer ihre OneDrive-Bibliothek mit IRM schützen, sodass Dokumente, die dort gespeichert und mit anderen Benutzern geteilt werden, automatisch durch den Azure Rights Management-Dienst geschützt werden.
Hinweis
IRM-geschützte Bibliotheken für SharePoint in Microsoft 365 und OneDrive erfordern die neueste Version des neuen OneDrive-Sync-Clients (OneDrive.exe) und die Version des RMS-Clients aus dem Microsoft Download Center. Installieren Sie diese Version des RMS-Clients, auch wenn Sie bereits den Azure Information Protection-Client installiert haben. Weitere Informationen zu diesem Bereitstellungsszenario finden Sie unter Bereitstellen des neuen OneDrive-Synchronisierungsclients in einer Unternehmensumgebung.
Eine Anleitung zum Aktivieren des IRM-Diensts (Information Rights Management) für SharePoint finden Sie in der folgenden Office-Dokumentation:
Diese Konfiguration wird vom Microsoft 365-Administrator vorgenommen.
Konfigurieren von IRM für Listen und Bibliotheken
Nachdem Sie den IRM-Dienst für SharePoint aktiviert haben, können Websitebesitzer ihre SharePoint-Dokumentbibliotheken und -listen mit IRM schützen. Eine entsprechende Anleitung finden Sie auf der Office-Website:
Diese Konfiguration erfolgt durch den SharePoint-Websiteadministrator.
IRM für OneDrive konfigurieren
Nachdem Sie den IRM-Dienst für SharePoint aktiviert haben, können die OneDrive-Dokumentenbibliothek oder einzelne Ordner der Benutzer für den Schutz durch Rights Management konfiguriert werden. Benutzer haben die Möglichkeit, dies selbst über ihre OneDrive-Website einzurichten. Administratoren können diesen Schutz für sie nicht über das SharePoint Admin Center, sondern nur über Windows PowerShell konfigurieren.
Hinweis
Weitere Informationen zur Konfiguration von OneDrive finden Sie in der OneDrive-Dokumentation.
Konfiguration für Benutzer
Geben Sie den Benutzern die folgenden Anweisungen, damit sie ihr OneDrive so konfigurieren können, dass ihre geschäftlichen Dateien geschützt sind.
Melden Sie sich mit Ihrem Arbeits- oder Schulkonto bei Microsoft 365 an und besuchen Sie die OneDrive-Website.
Wählen Sie im Navigationsbereich unten Zurück zum klassischen OneDrive aus.
Wählen Sie das Symbol Einstellungen. Aktivieren Sie im Bereich Einstellungen das Menüband, falls dafür bisher die Einstellung Aus verwendet wird.
Um alle OneDrive-Dateien für den Schutz zu konfigurieren, wählen Sie in der Multifunktionsleiste die Registerkarte BIBRARY und dann die Option Bibliothekseinstellungen.
Auf der Seite Dokumente > Einstellungen im Abschnitt Berechtigungen und Verwaltung die Option Informationsrechteverwaltung.
Aktivieren Sie auf der Seite Information Rights Management-Einstellungen das Kontrollkästchen neben Berechtigungen für diese Bibliothek beim Herunterladen einschränken. Geben Sie den gewünschten Namen und eine Beschreibung für die Berechtigungen an und klicken Sie optional auf OPTIONEN ANZEIGEN, um optionale Konfigurationen zu konfigurieren, und klicken Sie dann auf OK.
Weitere Informationen zu den Konfigurationsoptionen finden Sie in der Office-Dokumentation in den Anweisungen unter Anwenden der Verwaltung von Informationsrechten auf eine Liste oder Bibliothek.
Da diese Konfiguration für den IRM-Schutz der OneDrive-Bibliothek nicht von einem Administrator, sondern von den Benutzern durchgeführt wird, informieren Sie die Benutzer über die Vorteile des Dateischutzes und über die entsprechende Vorgehensweise. Erläutern Sie beispielsweise, dass bei der Freigabe eines Dokuments aus OneDrive nur vom Benutzer autorisierte Personen darauf zugreifen können und dass dabei die vom Benutzer konfigurierten Einschränkungen gelten, auch wenn die Datei umbenannt und an einen anderen Ort kopiert wird.
Konfiguration für Administratoren
Zwar können Sie IRM nicht mithilfe des SharePoint Admin Centers für OneDrive der Benutzer konfigurieren, Sie können dafür aber Windows PowerShell verwenden. Führen Sie zum Aktivieren von IRM für diese Bibliotheken die folgenden Schritte aus:
Laden Sie das SharePoint-Clientkomponenten-SDK herunter, und installieren Sie es.
Downloaden und installieren Sie die SharePoint Management Shell.
Kopieren Sie den Inhalt des folgenden Skripts, und nennen Sie die Datei „Set-IRMOnOneDriveForBusiness.ps1“ auf Ihrem Computer.
**Haftungsausschluss**: Dieses Beispielskript wird unter keinem Microsoft-Standardsupportprogramm oder -dienst unterstützt. Es wird in der vorliegenden Form ohne jegliche Gewährleistung bereitgestellt.
# Requires Windows PowerShell version 3 <# Description: Configures IRM policy settings for OneDrive and can also be used for SharePoint libraries and lists Script Installation Requirements: SharePoint Client Components SDK https://www.microsoft.com/download/details.aspx?id=42038 SharePoint Management Shell https://www.microsoft.com/download/details.aspx?id=35588 ====== #> # URL will be in the format https://<tenant-name>-admin.sharepoint.com $sharepointAdminCenterUrl = "https://contoso-admin.sharepoint.com" $tenantAdmin = "admin@contoso.com" $webUrls = @("https://contoso-my.sharepoint.com/personal/user1_contoso_com", "https://contoso-my.sharepoint.com/personal/user2_contoso_com", "https://contoso-my.sharepoint.com/personal/user3_contoso_com") <# As an alternative to specifying the URLs as an array, you can import them from a CSV file (no header, single value per row). Then, use: $webUrls = Get-Content -Path "File_path_and_name.csv" #> $listTitle = "Documents" function Load-SharePointOnlineClientComponentAssemblies { [cmdletbinding()] param() process { # assembly location: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI try { Write-Verbose "Loading Assembly: Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" [System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null return $true } catch { if($_.Exception.Message -match "Could not load file or assembly") { Write-Error -Message "Unable to load the SharePoint Server 2013 Client Components.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=42038" } else { Write-Error -Exception $_.Exception } return $false } } } function Load-SharePointOnlineModule { [cmdletbinding()] param() process { do { # Installation location: C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell $spoModule = Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ErrorAction SilentlyContinue if(-not $spoModule) { try { Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking return $true } catch { if($_.Exception.Message -match "Could not load file or assembly") { Write-Error -Message "Unable to load the SharePoint Online Management Shell.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=35588" } else { Write-Error -Exception $_.Exception } return $false } } else { return $true } } while(-not $spoModule) } } function Set-IrmConfiguration { [cmdletbinding()] param( [parameter(Mandatory=$true)][Microsoft.SharePoint.Client.List]$List, [parameter(Mandatory=$true)][string]$PolicyTitle, [parameter(Mandatory=$true)][string]$PolicyDescription, [parameter(Mandatory=$false)][switch]$IrmReject, [parameter(Mandatory=$false)][DateTime]$ProtectionExpirationDate, [parameter(Mandatory=$false)][switch]$DisableDocumentBrowserView, [parameter(Mandatory=$false)][switch]$AllowPrint, [parameter(Mandatory=$false)][switch]$AllowScript, [parameter(Mandatory=$false)][switch]$AllowWriteCopy, [parameter(Mandatory=$false)][int]$DocumentAccessExpireDays, [parameter(Mandatory=$false)][int]$LicenseCacheExpireDays, [parameter(Mandatory=$false)][string]$GroupName ) process { Write-Verbose "Applying IRM Configuration on '$($List.Title)'" # reset the value to the default settings $list.InformationRightsManagementSettings.Reset() $list.IrmEnabled = $true # IRM Policy title and description $list.InformationRightsManagementSettings.PolicyTitle = $PolicyTitle $list.InformationRightsManagementSettings.PolicyDescription = $PolicyDescription # Set additional IRM library settings # Do not allow users to upload documents that do not support IRM $list.IrmReject = $IrmReject.IsPresent $parsedDate = Get-Date if([DateTime]::TryParse($ProtectionExpirationDate, [ref]$parsedDate)) { # Stop restricting access to the library at <date> $list.IrmExpire = $true $list.InformationRightsManagementSettings.DocumentLibraryProtectionExpireDate = $ProtectionExpirationDate } # Prevent opening documents in the browser for this Document Library $list.InformationRightsManagementSettings.DisableDocumentBrowserView = $DisableDocumentBrowserView.IsPresent # Configure document access rights # Allow viewers to print $list.InformationRightsManagementSettings.AllowPrint = $AllowPrint.IsPresent # Allow viewers to run script and screen reader to function on downloaded documents $list.InformationRightsManagementSettings.AllowScript = $AllowScript.IsPresent # Allow viewers to write on a copy of the downloaded document $list.InformationRightsManagementSettings.AllowWriteCopy = $AllowWriteCopy.IsPresent if($DocumentAccessExpireDays) { # After download, document access rights will expire after these number of days (1-365) $list.InformationRightsManagementSettings.EnableDocumentAccessExpire = $true $list.InformationRightsManagementSettings.DocumentAccessExpireDays = $DocumentAccessExpireDays } # Set group protection and credentials interval if($LicenseCacheExpireDays) { # Users must verify their credentials using this interval (days) $list.InformationRightsManagementSettings.EnableLicenseCacheExpire = $true $list.InformationRightsManagementSettings.LicenseCacheExpireDays = $LicenseCacheExpireDays } if($GroupName) { # Allow group protection. Default group: $list.InformationRightsManagementSettings.EnableGroupProtection = $true $list.InformationRightsManagementSettings.GroupName = $GroupName } } end { if($list) { Write-Verbose "Committing IRM configuration settings on '$($list.Title)'" $list.InformationRightsManagementSettings.Update() $list.Update() $script:clientContext.Load($list) $script:clientContext.ExecuteQuery() } } } function Get-CredentialFromCredentialCache { [cmdletbinding()] param([string]$CredentialName) #if( Test-Path variable:\global:CredentialCache ) if( Get-Variable O365TenantAdminCredentialCache -Scope Global -ErrorAction SilentlyContinue ) { if($global:O365TenantAdminCredentialCache.ContainsKey($CredentialName)) { Write-Verbose "Credential Cache Hit: $CredentialName" return $global:O365TenantAdminCredentialCache[$CredentialName] } } Write-Verbose "Credential Cache Miss: $CredentialName" return $null } function Add-CredentialToCredentialCache { [cmdletbinding()] param([System.Management.Automation.PSCredential]$Credential) if(-not (Get-Variable CredentialCache -Scope Global -ErrorAction SilentlyContinue)) { Write-Verbose "Initializing the Credential Cache" $global:O365TenantAdminCredentialCache = @{} } Write-Verbose "Adding Credential to the Credential Cache" $global:O365TenantAdminCredentialCache[$Credential.UserName] = $Credential } # load the required assemblies and Windows PowerShell modules if(-not ((Load-SharePointOnlineClientComponentAssemblies) -and (Load-SharePointOnlineModule)) ) { return } # Add the credentials to the client context and SharePoint service connection # check for cached credentials to use $o365TenantAdminCredential = Get-CredentialFromCredentialCache -CredentialName $tenantAdmin if(-not $o365TenantAdminCredential) { # when credentials are not cached, prompt for the tenant admin credentials $o365TenantAdminCredential = Get-Credential -UserName $tenantAdmin -Message "Enter the password for the Microsoft 365 admin" if(-not $o365TenantAdminCredential -or -not $o365TenantAdminCredential.UserName -or $o365TenantAdminCredential.Password.Length -eq 0 ) { Write-Error -Message "Could not validate the supplied tenant admin credentials" return } # add the credentials to the cache Add-CredentialToCredentialCache -Credential $o365TenantAdminCredential } # connect to Office365 first, required for SharePoint cmdlets to run Connect-SPOService -Url $sharepointAdminCenterUrl -Credential $o365TenantAdminCredential # enumerate each of the specified site URLs foreach($webUrl in $webUrls) { $grantedSiteCollectionAdmin = $false try { # establish the client context and set the credentials to connect to the site $script:clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl) $script:clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($o365TenantAdminCredential.UserName, $o365TenantAdminCredential.Password) # initialize the site and web context $script:clientContext.Load($script:clientContext.Site) $script:clientContext.Load($script:clientContext.Web) $script:clientContext.ExecuteQuery() # load and ensure the tenant admin user account if present on the target SharePoint site $tenantAdminUser = $script:clientContext.Web.EnsureUser($o365TenantAdminCredential.UserName) $script:clientContext.Load($tenantAdminUser) $script:clientContext.ExecuteQuery() # check if the tenant admin is a site admin if( -not $tenantAdminUser.IsSiteAdmin ) { try { # grant the tenant admin temporary admin rights to the site collection Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $true | Out-Null $grantedSiteCollectionAdmin = $true } catch { Write-Error $_.Exception return } } try { # load the list orlibrary using CSOM $list = $null $list = $script:clientContext.Web.Lists.GetByTitle($listTitle) $script:clientContext.Load($list) $script:clientContext.ExecuteQuery() # ************** ADMIN INSTRUCTIONS ************** # If necessary, modify the following Set-IrmConfiguration parameters to match your required values # The supplied options and values are for example only # Example that shows the Set-IrmConfiguration command with all parameters: Set-IrmConfiguration -List $list -PolicyTitle "Protected Files" -PolicyDescription "This policy restricts access to authorized users" -IrmReject -ProtectionExpirationDate $(Get-Date).AddDays(180) -DisableDocumentBrowserView -AllowPrint -AllowScript -AllowWriteCopy -LicenseCacheExpireDays 25 -DocumentAccessExpireDays 90 Set-IrmConfiguration -List $list -PolicyTitle "Protected Files" -PolicyDescription "This policy restricts access to authorized users" } catch { Write-Error -Message "Error setting IRM configuration on site: $webUrl.`nError Details: $($_.Exception.ToString())" } } finally { if($grantedSiteCollectionAdmin) { # remove the temporary admin rights to the site collection Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $false | Out-Null } } } Disconnect-SPOService -ErrorAction SilentlyContinue
Sehen Sie sich das Skript an, und nehmen Sie folgende Änderungen vor:
Suchen Sie nach
$sharepointAdminCenterUrl
, und ersetzen Sie den Beispielwert durch die URL Ihres eigenen SharePoint Admin Centers.Sie finden diesen Wert als Basis-URL, wenn Sie zum SharePoint Admin Center wechseln. Der Wert hat das folgende Format: https://<Mandantenname>-admin.sharepoint.com
Wenn der Mandantenname beispielsweise „contoso“ ist, würden Sie angeben: https://contoso-admin.sharepoint.com
Suchen Sie nach
$tenantAdmin
, und ersetzen Sie den Beispielwert durch Ihr eigenes, vollqualifiziertes globales Administratorkonto für Microsoft 365.Dieser Wert entspricht dem Wert, mit dem Sie sich beim Microsoft 365-Verwaltungscenter als globaler Administrator anmelden, und hat das folgende Format:
@<Mandantendomänenname>.com Wenn der Microsoft 365-Benutzername des globalen Administrators für die Mandantendomäne „contoso.com“ also beispielsweise „admin“ lautet, sieht die Eingabe wie folgt aus: admin@contoso.com
Suchen Sie nach
$webUrls
, und ersetzen Sie die Beispielwerte durch die OneDrive-Web-URLs Ihrer Benutzer. Dabei können Sie beliebig viele Einträge hinzufügen oder löschen.Falls Sie stattdessen eine CSV-Datei mit allen zu konfigurierenden URLs importieren möchten, informieren Sie sich anhand der Kommentare im Skript über die entsprechende Vorgehensweise. Wir haben ein weiteres Beispielskript bereitgestellt, mit dem Sie automatisch nach den URLs für die CSV-Datei suchen und sie extrahieren können. Wenn Sie dazu bereit sind, wechseln Sie direkt im Anschluss an diese Schritte zum Abschnitt Zusätzliches Skript zur Ausgabe aller OneDrive-URLs in eine CSV-Datei.
Die Web-URL für das OneDrive des Benutzers hat folgendes Format: https://<Mandantenname>-my.sharepoint.com/personal/<Benutzername>_<Mandantenname>_com
Hätte der Benutzer im Contoso-Mandanten beispielsweise den Benutzernamen „rsimone“, würden Sie Folgendes angeben: https://contoso-my.sharepoint.com/personal/rsimone_contoso_com
Da wir das Skript verwenden, um OneDrive zu konfigurieren, lassen Sie den Wert Documents für die Variable
$listTitle
unverändert.Suchen Sie nach
ADMIN INSTRUCTIONS
. Wenn Sie keine Änderungen an diesem Abschnitt vornehmen, wird die OneDrive-Instanz des Benutzers für IRM mit dem Richtlinientitel „Protected Files“ und der Beschreibung „This policy restricts access to authorized users“ konfiguriert. Es werden keine weiteren IRM-Optionen festgelegt, was für die meisten Umgebungen angemessen sein dürfte. Sie können den vorgeschlagenen Richtlinientitel und die Beschreibung jedoch ändern und außerdem alle anderen IRM-Optionen hinzufügen, die für Ihre Umgebung geeignet sind. Informationen, die Ihnen dabei helfen, Ihren eigenen Satz von Parametern für den Befehl „Set-IrmConfiguration“ zu erstellen, finden Sie im kommentierten Beispiel innerhalb des Skripts.
Speichern Sie das Skript, und signieren Sie es. Die Signatur erhöht die Sicherheit. Wenn Sie das Skript nicht signieren, muss Windows PowerShell auf Ihrem Computer für die Ausführung nicht signierter Skripts konfiguriert werden. Führen Sie hierzu eine Windows PowerShell-Sitzung mit der Option Als Administrator ausführen aus, und geben Sie Folgendes ein: Set-ExecutionPolicy Unrestricted. Bei dieser Konfiguration können allerdings alle nicht signierten Skripts ausgeführt werden, was weniger sicher ist.
Weitere Informationen zum Signieren von Windows PowerShell-Skripts finden Sie in der PowerShell-Dokumentationsbibliothek unter about_Signing.
Führen Sie das Skript aus, und geben Sie das Kennwort für das Microsoft 365-Administratorkonto ein, wenn Sie dazu aufgefordert werden. Wenn Sie das Skript ändern und es in der gleichen Windows PowerShell-Sitzung ausführen, werden Sie nicht zur Eingabe von Anmeldeinformationen aufgefordert.
Tipp
Sie können dieses Skript auch verwenden, um IRM für eine SharePoint-Bibliothek zu konfigurieren. Für diese Konfiguration möchte Sie vermutlich die zusätzliche Option Benutzer dürfen keine Dokumente hochladen, die IRM nicht unterstützen aktivieren, um sicherzustellen, dass die Bibliothek nur geschützte Dokumente enthält. Fügen Sie hierzu dem Befehl „Set-IrmConfiguration“ im Skript den Parameter -IrmReject
hinzu.
Außerdem müssten Sie sowohl die $webUrls
-Variable (z. B. https://contoso.sharepoint.com) als auch die $listTitle
-Variable (z. B. $Reports) ändern.
Wenn Sie IRM für die OneDrive-Bibliotheken der Benutzer deaktivieren müssen, lesen Sie den Abschnitt Skript zum Deaktivieren von IRM für OneDrive.
Zusätzliches Skript zur Ausgabe aller OneDrive-URLs in eine .CSV-Datei
Für Schritt 4c weiter oben können Sie das folgende Windows PowerShell-Skript verwenden, um die URLs für die OneDrive-Bibliotheken aller Benutzer zu extrahieren, die Sie dann überprüfen, gegebenenfalls bearbeiten und anschließend in das Hauptskript importieren können.
Dieses Skript benötigt auch das SharePoint Client Components SDK und die SharePoint Management Shell. Befolgen Sie die gleichen Anweisungen zum Kopieren und Einfügen, speichern Sie die Datei lokal (beispielsweise unter dem Namen „Report-OneDriveForBusinessSiteInfo.ps1“), ändern Sie wie zuvor die Werte $sharepointAdminCenterUrl
und $tenantAdmin
, und führen Sie anschließend das Skript aus.
**Haftungsausschluss**: Dieses Beispielskript wird unter keinem Microsoft-Standardsupportprogramm oder -dienst unterstützt. Es wird in der vorliegenden Form ohne jegliche Gewährleistung bereitgestellt.
# Requires Windows PowerShell version 3
<#
Description:
Queries the search service of a Microsoft 365 tenant to retrieve all OneDrive sites.
Details of the discovered sites are written to a .CSV file (by default,"OneDriveForBusinessSiteInfo_<date>.csv").
Script Installation Requirements:
SharePoint Client Components SDK
https://www.microsoft.com/download/details.aspx?id=42038
SharePoint Management Shell
https://www.microsoft.com/download/details.aspx?id=35588
======
#>
# URL will be in the format https://<tenant-name>-admin.sharepoint.com
$sharepointAdminCenterUrl = "https://contoso-admin.sharepoint.com"
$tenantAdmin = "admin@contoso.onmicrosoft.com"
$reportName = "OneDriveForBusinessSiteInfo_$((Get-Date).ToString("yyyy-MM-dd_hh.mm.ss")).csv"
$oneDriveForBusinessSiteUrls= @()
$resultsProcessed = 0
function Load-SharePointOnlineClientComponentAssemblies
{
[cmdletbinding()]
param()
process
{
# assembly location: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI
try
{
Write-Verbose "Loading Assembly: Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Server 2013 Client Components.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=42038"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
}
function Load-SharePointOnlineModule
{
[cmdletbinding()]
param()
process
{
do
{
# Installation location: C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell
$spoModule = Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ErrorAction SilentlyContinue
if(-not $spoModule)
{
try
{
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Online Management Shell.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=35588"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
else
{
return $true
}
}
while(-not $spoModule)
}
}
function Get-CredentialFromCredentialCache
{
[cmdletbinding()]
param([string]$CredentialName)
#if( Test-Path variable:\global:CredentialCache )
if( Get-Variable O365TenantAdminCredentialCache -Scope Global -ErrorAction SilentlyContinue )
{
if($global:O365TenantAdminCredentialCache.ContainsKey($CredentialName))
{
Write-Verbose "Credential Cache Hit: $CredentialName"
return $global:O365TenantAdminCredentialCache[$CredentialName]
}
}
Write-Verbose "Credential Cache Miss: $CredentialName"
return $null
}
function Add-CredentialToCredentialCache
{
[cmdletbinding()]
param([System.Management.Automation.PSCredential]$Credential)
if(-not (Get-Variable CredentialCache -Scope Global -ErrorAction SilentlyContinue))
{
Write-Verbose "Initializing the Credential Cache"
$global:O365TenantAdminCredentialCache = @{}
}
Write-Verbose "Adding Credential to the Credential Cache"
$global:O365TenantAdminCredentialCache[$Credential.UserName] = $Credential
}
# load the required assemblies and Windows PowerShell modules
if(-not ((Load-SharePointOnlineClientComponentAssemblies) -and (Load-SharePointOnlineModule)) ) { return }
# Add the credentials to the client context and SharePoint service connection
# check for cached credentials to use
$o365TenantAdminCredential = Get-CredentialFromCredentialCache -CredentialName $tenantAdmin
if(-not $o365TenantAdminCredential)
{
# when credentials are not cached, prompt for the tenant admin credentials
$o365TenantAdminCredential = Get-Credential -UserName $tenantAdmin -Message "Enter the password for the Office 365 admin"
if(-not $o365TenantAdminCredential -or -not $o365TenantAdminCredential.UserName -or $o365TenantAdminCredential.Password.Length -eq 0 )
{
Write-Error -Message "Could not validate the supplied tenant admin credentials"
return
}
# add the credentials to the cache
Add-CredentialToCredentialCache -Credential $o365TenantAdminCredential
}
# establish the client context and set the credentials to connect to the site
$clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($sharepointAdminCenterUrl)
$clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($o365TenantAdminCredential.UserName, $o365TenantAdminCredential.Password)
# run a query against the Microsoft 365 tenant search service to retrieve all OneDrive URLs
do
{
# build the query object
$query = New-Object Microsoft.SharePoint.Client.Search.Query.KeywordQuery($clientContext)
$query.TrimDuplicates = $false
$query.RowLimit = 500
$query.QueryText = "SPSiteUrl:'/personal/' AND contentclass:STS_Site"
$query.StartRow = $resultsProcessed
$query.TotalRowsExactMinimum = 500000
# run the query
$searchExecutor = New-Object Microsoft.SharePoint.Client.Search.Query.SearchExecutor($clientContext)
$queryResults = $searchExecutor.ExecuteQuery($query)
$clientContext.ExecuteQuery()
# enumerate the search results and store the site URLs
$queryResults.Value[0].ResultRows | % {
$oneDriveForBusinessSiteUrls += $_.Path
$resultsProcessed++
}
}
while($resultsProcessed -lt $queryResults.Value.TotalRows)
$oneDriveForBusinessSiteUrls | Out-File -FilePath $reportName
Skript zum Deaktivieren von IRM für OneDrive
Verwenden Sie das folgende Beispielskript, wenn Sie IRM für OneDrive der Benutzer deaktivieren müssen.
Dieses Skript benötigt auch das SharePoint Client Components SDK und die SharePoint Management Shell. Kopieren Sie den Inhalt, und fügen Sie ihn ein. Speichern Sie die Datei lokal (beispielsweise unter dem Namen „Disable-IRMOnOneDriveForBusiness.ps1“), und ändern Sie die Werte $sharepointAdminCenterUrl
und $tenantAdmin
. Geben Sie die OneDrive-URLs manuell an, oder verwenden Sie das Skript aus dem vorherigen Abschnitt, um sie zu importieren. Führen Sie anschließend das Skript aus.
**Haftungsausschluss**: Dieses Beispielskript wird unter keinem Microsoft-Standardsupportprogramm oder -dienst unterstützt. Es wird in der vorliegenden Form ohne jegliche Gewährleistung bereitgestellt.
# Requires Windows PowerShell version 3
<#
Description:
Disables IRM for OneDrive and can also be used for SharePoint libraries and lists
Script Installation Requirements:
SharePoint Client Components SDK
https://www.microsoft.com/download/details.aspx?id=42038
SharePoint Management Shell
https://www.microsoft.com/download/details.aspx?id=35588
======
#>
$sharepointAdminCenterUrl = "https://contoso-admin.sharepoint.com"
$tenantAdmin = "admin@contoso.com"
$webUrls = @("https://contoso-my.sharepoint.com/personal/user1_contoso_com",
"https://contoso-my.sharepoint.com/personal/user2_contoso_com",
"https://contoso-my.sharepoint.com/personal/person3_contoso_com")
<# As an alternative to specifying the URLs as an array, you can import them from a CSV file (no header, single value per row).
Then, use: $webUrls = Get-Content -Path "File_path_and_name.csv"
#>
$listTitle = "Documents"
function Load-SharePointOnlineClientComponentAssemblies
{
[cmdletbinding()]
param()
process
{
# assembly location: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\ISAPI
try
{
Write-Verbose "Loading Assembly: Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.Policy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.Office.Client.TranslationServices, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.DocumentManagement, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Publishing, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Runtime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search.Applications, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Search, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.Taxonomy, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
Write-Verbose "Loading Assembly: Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
[System.Reflection.Assembly]::Load("Microsoft.SharePoint.Client.UserProfiles, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c") | Out-Null
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Server 2013 Client Components.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=42038"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
}
function Load-SharePointOnlineModule
{
[cmdletbinding()]
param()
process
{
do
{
# Installation location: C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell
$spoModule = Get-Module -Name Microsoft.Online.SharePoint.PowerShell -ErrorAction SilentlyContinue
if(-not $spoModule)
{
try
{
Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
return $true
}
catch
{
if($_.Exception.Message -match "Could not load file or assembly")
{
Write-Error -Message "Unable to load the SharePoint Online Management Shell.`nDownload Location: https://www.microsoft.com/download/details.aspx?id=35588"
}
else
{
Write-Error -Exception $_.Exception
}
return $false
}
}
else
{
return $true
}
}
while(-not $spoModule)
}
}
function Remove-IrmConfiguration
{
[cmdletbinding()]
param(
[parameter(Mandatory=$true)][Microsoft.SharePoint.Client.List]$List
)
process
{
Write-Verbose "Disabling IRM Configuration on '$($List.Title)'"
$List.IrmEnabled = $false
$List.IrmExpire = $false
$List.IrmReject = $false
$List.InformationRightsManagementSettings.Reset()
}
end
{
if($List)
{
Write-Verbose "Committing IRM configuration settings on '$($list.Title)'"
$list.InformationRightsManagementSettings.Update()
$list.Update()
$script:clientContext.Load($list)
$script:clientContext.ExecuteQuery()
}
}
}
function Get-CredentialFromCredentialCache
{
[cmdletbinding()]
param([string]$CredentialName)
#if( Test-Path variable:\global:CredentialCache )
if( Get-Variable O365TenantAdminCredentialCache -Scope Global -ErrorAction SilentlyContinue )
{
if($global:O365TenantAdminCredentialCache.ContainsKey($CredentialName))
{
Write-Verbose "Credential Cache Hit: $CredentialName"
return $global:O365TenantAdminCredentialCache[$CredentialName]
}
}
Write-Verbose "Credential Cache Miss: $CredentialName"
return $null
}
function Add-CredentialToCredentialCache
{
[cmdletbinding()]
param([System.Management.Automation.PSCredential]$Credential)
if(-not (Get-Variable CredentialCache -Scope Global -ErrorAction SilentlyContinue))
{
Write-Verbose "Initializing the Credential Cache"
$global:O365TenantAdminCredentialCache = @{}
}
Write-Verbose "Adding Credential to the Credential Cache"
$global:O365TenantAdminCredentialCache[$Credential.UserName] = $Credential
}
# load the required assemblies and Windows PowerShell modules
if(-not ((Load-SharePointOnlineClientComponentAssemblies) -and (Load-SharePointOnlineModule)) ) { return }
# Add the credentials to the client context and SharePoint service connection
# check for cached credentials to use
$o365TenantAdminCredential = Get-CredentialFromCredentialCache -CredentialName $tenantAdmin
if(-not $o365TenantAdminCredential)
{
# when credentials are not cached, prompt for the tenant admin credentials
$o365TenantAdminCredential = Get-Credential -UserName $tenantAdmin -Message "Enter the password for the Office 365 admin"
if(-not $o365TenantAdminCredential -or -not $o365TenantAdminCredential.UserName -or $o365TenantAdminCredential.Password.Length -eq 0 )
{
Write-Error -Message "Could not validate the supplied tenant admin credentials"
return
}
# add the credentials to the cache
Add-CredentialToCredentialCache -Credential $o365TenantAdminCredential
}
# connect to Office365 first, required for SharePoint cmdlets to run
Connect-SPOService -Url $sharepointAdminCenterUrl -Credential $o365TenantAdminCredential
# enumerate each of the specified site URLs
foreach($webUrl in $webUrls)
{
$grantedSiteCollectionAdmin = $false
try
{
# establish the client context and set the credentials to connect to the site
$script:clientContext = New-Object Microsoft.SharePoint.Client.ClientContext($webUrl)
$script:clientContext.Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($o365TenantAdminCredential.UserName, $o365TenantAdminCredential.Password)
# initialize the site and web context
$script:clientContext.Load($script:clientContext.Site)
$script:clientContext.Load($script:clientContext.Web)
$script:clientContext.ExecuteQuery()
# load and ensure the tenant admin user account if present on the target SharePoint site
$tenantAdminUser = $script:clientContext.Web.EnsureUser($o365TenantAdminCredential.UserName)
$script:clientContext.Load($tenantAdminUser)
$script:clientContext.ExecuteQuery()
# check if the tenant admin is a site admin
if( -not $tenantAdminUser.IsSiteAdmin )
{
try
{
# grant the tenant admin temporary admin rights to the site collection
Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $true | Out-Null
$grantedSiteCollectionAdmin = $true
}
catch
{
Write-Error $_.Exception
return
}
}
try
{
# load the list orlibrary using CSOM
$list = $null
$list = $script:clientContext.Web.Lists.GetByTitle($listTitle)
$script:clientContext.Load($list)
$script:clientContext.ExecuteQuery()
Remove-IrmConfiguration -List $list
}
catch
{
Write-Error -Message "Error setting IRM configuration on site: $webUrl.`nError Details: $($_.Exception.ToString())"
}
}
finally
{
if($grantedSiteCollectionAdmin)
{
# remove the temporary admin rights to the site collection
Set-SPOUser -Site $script:clientContext.Site.Url -LoginName $o365TenantAdminCredential.UserName -IsSiteCollectionAdmin $false | Out-Null
}
}
}
Disconnect-SPOService -ErrorAction SilentlyContinue