Microsoft 365: A online szolgáltatások konfigurálása a Azure Tartalomvédelmi szolgáltatások szolgáltatás használatához

Az alábbi szakaszok segítségével konfigurálhatja az Exchange Online, a Microsoft SharePoint és a Microsoft OneDrive szolgáltatást az Azure Information Protection Azure Tartalomvédelmi szolgáltatások szolgáltatásának használatára.

Exchange Online: IRM-konfiguráció

Az Exchange Online és a Azure Tartalomvédelmi szolgáltatások szolgáltatás közötti működésről az Exchange Online és az Exchange Server how Office-app lications and services support Azure Tartalomvédelmi szolgáltatások című szakaszában olvashat.

Előfordulhat, hogy az Exchange Online már engedélyezve van a Azure Tartalomvédelmi szolgáltatások szolgáltatás használatához. Az ellenőrzéshez futtassa a következő parancsokat:

  1. Ha ez az első alkalom, hogy windowsos PowerShellt használt az Exchange Online-hoz a számítógépen, konfigurálnia kell a Windows PowerShellt aláírt szkriptek futtatására. Indítsa el a Windows PowerShell-munkamenetet a Futtatás rendszergazdaként lehetőséggel, majd írja be a következőt:

    Set-ExecutionPolicy RemoteSigned
    

    A megerősítéshez nyomja le az Y billentyűt.

  2. A Windows PowerShell-munkamenetben jelentkezzen be az Exchange Online-ba egy olyan fiókkal, amely engedélyezve van a távoli Shell-hozzáféréshez. Alapértelmezés szerint az Exchange Online-ban létrehozott összes fiók engedélyezve van a távoli rendszerhéj-hozzáféréshez, de ez letiltható (és engedélyezhető) a Set-UserIdentity <> -RemotePowerShellEnabled paranccsal.

    A bejelentkezéshez először írja be a következőt:

    Connect-ExchangeOnline
    

    Ezután a Windows PowerShell hitelesítőadat-kérés párbeszédpanelen adja meg a Microsoft 365-ös felhasználónevet és jelszót.

  3. Futtassa a Get-IRMConfiguration parancsot a védelmi szolgáltatás Exchange Online-konfigurációjának megtekintéséhez:

    Get-IRMConfiguration
    

    A kimenetben keresse meg az AzureRMSLicensingEnabled értéket:

    • Ha az AzureRMSLicensingEnabled értéke Igaz, az Exchange Online már engedélyezve van a Azure Tartalomvédelmi szolgáltatások szolgáltatáshoz.

    • Ha az AzureRMSLicensingEnabled értéke Hamis, futtassa a következő parancsot az Exchange Online engedélyezéséhez a Azure Tartalomvédelmi szolgáltatások szolgáltatáshoz:Set-IRMConfiguration -AzureRMSLicensingEnabled $true

  4. Az Exchange Online sikeres konfigurálásához futtassa a következő parancsot:

    Test-IRMConfiguration -Sender <user email address>
    

    Például: Test-IRMConfiguration -Sender adams@contoso.com

    Ez a parancs ellenőrzések sorozatát futtatja, beleértve a szolgáltatáshoz való kapcsolódás ellenőrzését, a konfiguráció lekérését, az URI-k, a licencek és a sablonok lekérését. A Windows PowerShell-munkamenetben minden egyes és a végén látható lesz az eredmény, ha minden megfelel ezeknek az ellenőrzéseknek: ÖSSZESÍTETT EREDMÉNY: PASS

Ha az Exchange Online engedélyezve van a Azure Tartalomvédelmi szolgáltatások szolgáltatás használatához, a következő funkciókat konfigurálhatja:

  • Purview Üzenettitkosítás az e-mail-forgalom szabályaival.

  • Titkosítás adatveszteség-megelőzési (DLP) szabályzatokkal.

  • Bizalmassági címkék titkosítással a Webes Outlook, Mac, iOS és Android rendszeren.

  • Automatikus címkézési szabályzatok az Exchange-ben a bizalmassági címkék titkosítással történő alkalmazásához a levelezésre és a védett hangpostaüzenetekre .

SharePoint a Microsoft 365-ben és a OneDrive-ban: IRM-konfiguráció

A SharePoint IRM és a Azure Tartalomvédelmi szolgáltatások szolgáltatás közötti működésről a jelen dokumentáció Rights Management védelmi szakaszában, a Microsoft 365-ben és a SharePoint Serverben található SharePointban talál további információt.

Ha a SharePointot a Microsoft 365-ben és a OneDrive-ban szeretné konfigurálni a Azure Tartalomvédelmi szolgáltatások szolgáltatás támogatásához, először engedélyeznie kell a SharePoint tartalomvédelmi szolgáltatását a SharePoint Felügyeleti központ használatával. A webhelytulajdonosok ezután megvédhetik a SharePoint-listákat és dokumentumtárakat, a felhasználók pedig iRM-védelemmel láthatják el a OneDrive-tárukat, így az ott mentett és másokkal megosztott dokumentumokat automatikusan védi a Azure Tartalomvédelmi szolgáltatások szolgáltatás.

Feljegyzés

A Microsoft 365-ben és a OneDrive-ban a SharePoint IRM által védett kódtárainak használatához az új OneDrive szinkronizálási app-ügyfél (OneDrive.exe) legújabb verziója és a Microsoft letöltőközpontból származó RMS-ügyfél verziója szükséges. Telepítse az RMS-ügyfél ezen verzióját akkor is, ha telepítette az Azure Information Protection-ügyfelet. Az üzembe helyezési forgatókönyvről további információt az új OneDrive szinkronizálási app ügyfél üzembe helyezése vállalati környezetben című témakörben talál.

A SharePoint tartalomvédelmi szolgáltatásának engedélyezéséhez tekintse meg az Office dokumentációjának alábbi utasításait:

Ezt a konfigurációt a Microsoft 365 rendszergazdája végzi.

Az IRM konfigurálása tárakhoz és listákhoz

Miután engedélyezte a SharePoint IRM szolgáltatását, a webhelytulajdonosok iRM-védelemmel láthatják el a SharePoint-dokumentumtárakat és -listákat. Útmutatásért tekintse meg a következőket az Office webhelyén:

Ezt a konfigurációt a SharePoint-webhely rendszergazdája végzi.

Az IRM konfigurálása a OneDrive-hoz

Miután engedélyezte a SharePoint IRM szolgáltatását, a felhasználók OneDrive-dokumentumtára vagy egyes mappái konfigurálhatók a Rights Management védelméhez. A felhasználók ezt a OneDrive-webhelyükkel konfigurálhatják saját maguk számára. Bár a rendszergazdák nem tudják konfigurálni a védelmet számukra a SharePoint Felügyeleti központ használatával, ezt a Windows PowerShell használatával teheti meg.

Feljegyzés

A OneDrive konfigurálásával kapcsolatos további információkért tekintse meg a OneDrive dokumentációját.

Konfiguráció felhasználók számára

Adja meg a felhasználóknak az alábbi utasításokat, hogy konfigurálhassák a OneDrive-ot az üzleti fájljaik védelmére.

  1. Jelentkezzen be a Microsoft 365-be munkahelyi vagy iskolai fiókjával, és nyissa meg a OneDrive webhelyét.

  2. A navigációs panel alján válassza a Visszatérés a klasszikus OneDrive-ra lehetőséget.

  3. Válassza a Gépház ikont. Ha a menüszalag ki van kapcsolva a Gépház panelen, válassza ezt a beállítást a menüszalag bekapcsolásához.

  4. Ha az összes OneDrive-fájlt védettként szeretné konfigurálni, válassza a MENÜSZALAG fület, majd válassza a Tár Gépház lehetőséget.

  5. A Dokumentumok > Gépház lapon, az Engedélyek és kezelés szakaszban válassza az Információvédelmi szolgáltatás lehetőséget.

  6. A Tartalomvédelmi Gépház lapon jelölje be a Kódtár engedélyeinek korlátozása a letöltéskor jelölőnégyzetet. Adja meg a választott nevet és az engedélyek leírását, és opcionálisan kattintson a MEGJELENÍTÉSI BEÁLLÍTÁSOK gombra az opcionális konfigurációk konfigurálásához, majd kattintson az OK gombra.

Mivel ez a konfiguráció a rendszergazdák helyett a felhasználókra támaszkodik a OneDrive-fájljaik IRM-védelmére, a felhasználókat a fájlok védelmének előnyeiről és ennek módjáról oktathatja. Például magyarázza el, hogy amikor megosztanak egy dokumentumot a OneDrive-ról, csak az általuk engedélyezett személyek férhetnek hozzá az általuk konfigurált korlátozásokkal, még akkor is, ha a fájlt átnevezik és máshová másolják.

Konfiguráció rendszergazdáknak

Bár a SharePoint Felügyeleti központ használatával nem konfigurálhatja az IRM-t a felhasználók OneDrive-hoz, ezt a Windows PowerShell használatával teheti meg. A kódtárak IRM-ének engedélyezéséhez kövesse az alábbi lépéseket:

  1. Töltse le és telepítse a SharePoint Ügyfélösszetevők SDK-t.

  2. Töltse le és telepítse a SharePoint Management Shellt.

  3. Másolja ki a következő szkript tartalmát, és nevezze el a Set-IRMOnOneDriveForBusiness.ps1 fájlt a számítógépen.

    **Jogi nyilatkozat**: Ez a mintaszkript nem támogatott a Microsoft standard támogatási programjában vagy szolgáltatásában. Ez a példaszkript az AS IS-hez tartozik, és semmilyen garancia nem vonatkozik rá.

    # 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
    
  4. Tekintse át a szkriptet, és végezze el a következő módosításokat:

    1. Keresse meg $sharepointAdminCenterUrl és cserélje le a példaértéket a saját SharePoint Felügyeleti központ URL-címére.

      Ez az érték lesz az alap URL-cím, amikor a SharePoint felügyeleti központba lép, és a következő formátummal rendelkezik: https://< tenant_name-admin.sharepoint.com>

      Ha például a bérlő neve "contoso", akkor a következőket kell megadnia: https://contoso-admin.sharepoint.com

    2. Keresse meg $tenantAdmin és cserélje le a példaértéket a Microsoft 365 saját, teljes körűen minősített globális rendszergazdai fiókjára.

      Ez az érték megegyezik azzal, amelyet a globális rendszergazdaként a Microsoft 365 Felügyeleti központ való bejelentkezéshez használ, és a következő formátummal rendelkezik: user_name@<tenant tartománynév>.com

      Ha például a Microsoft 365 globális rendszergazda felhasználóneve "rendszergazda" a "contoso.com" bérlői tartományhoz, a következőket kell megadnia: admin@contoso.com

    3. Keresse meg $webUrls és cserélje le a példaértékeket a felhasználók OneDrive webes URL-címére, és adjon hozzá vagy töröljön annyi bejegyzést, amennyit csak szeretne.

      Másik lehetőségként tekintse meg a szkript megjegyzéseit a tömb importálásával történő cseréjéről. CSV-fájl, amely tartalmazza a konfigurálni kívánt ÖSSZES URL-címet. Egy másik példaszkriptet is biztosítottunk, amely automatikusan megkeresi és kinyeri az URL-címeket a feltöltéshez. CSV-fájl. Ha készen áll erre, a További szkripttel az összes OneDrive-URL-címet ki tudja adni egy . A CSV-fájlszakasz közvetlenül a lépések után.

      A felhasználó OneDrive-jának webes URL-címe a következő formátumban található: https://< tenant name-my.sharepoint.com/personal/>< user_name>_<tenant name_com>

      Ha például a contoso-bérlő felhasználója "rsimone" felhasználónévvel rendelkezik, a következőket kell megadnia: https://contoso-my.sharepoint.com/personal/rsimone_contoso_com

    4. Mivel a OneDrive konfigurálásához szkriptet használunk, ne módosítsa a változó Dokumentumok$listTitle értékét.

    5. Keressen a ADMIN INSTRUCTIONS kifejezésre. Ha nem módosítja ezt a szakaszt, a rendszer a felhasználó OneDrive-ját konfigurálja az IRM-hez a "Védett fájlok" szabályzatcímmel, és a "Ez a szabályzat korlátozza a hozzáférést a jogosult felhasználók számára". Nincs más IRM-beállítás, amely valószínűleg a legtöbb környezethez megfelelő. Módosíthatja azonban a javasolt szabályzatcímet és leírást, és hozzáadhat minden más, a környezetnek megfelelő IRM-beállítást is. Tekintse meg a megjegyzésben szereplő példát a szkriptben, amely segít a Set-IrmConfiguration parancs saját paraméterkészletének összeállításában.

  5. Mentse a szkriptet, és írja alá. Ha nem írja alá a szkriptet (biztonságosabb), a Windows PowerShellt úgy kell konfigurálni a számítógépen, hogy aláíratlan szkripteket futtasson. Ehhez futtasson egy Windows PowerShell-munkamenetet a Futtatás Rendszergazda istratorként beállítással, és írja be a következőt: Set-ExecutionPolicy Unrestricted. Ez a konfiguráció azonban lehetővé teszi az összes aláíratlan szkript futtatását (kevésbé biztonságos).

    A Windows PowerShell-szkriptek aláírásával kapcsolatos további információkért lásd a About_Signing a PowerShell dokumentációs tárában.

  6. Futtassa a szkriptet, és ha a rendszer kéri, adja meg a Microsoft 365 felügyeleti fiók jelszavát. Ha módosítja a szkriptet, és ugyanabban a Windows PowerShell-munkamenetben futtatja, a rendszer nem kéri a hitelesítő adatokat.

Tipp.

Ezzel a szkripttel is konfigurálhatja az IRM-t egy SharePoint-tárhoz. Ebben a konfigurációban valószínűleg engedélyezni szeretné a további beállítást : Ne engedélyezze a felhasználóknak az IRM-t nem támogató dokumentumok feltöltését, hogy a tár csak védett dokumentumokat tartalmazhasson. Ehhez adja hozzá a -IrmReject paramétert a szkript Set-IrmConfiguration parancsához.

Emellett módosítania kell a változót (példáulhttps://contoso.sharepoint.com) és $listTitle a $webUrls változót (például $Reports).

Ha le kell tiltania az IRM-et a felhasználó OneDrive-táraihoz, tekintse meg a OneDrive-beli IRM letiltására szolgáló szkriptet.

További szkript az összes OneDrive-URL-cím kimenetéhez egy . CSV-fájl

A fenti 4c. lépésben a következő Windows PowerShell-szkripttel kinyerheti az összes felhasználó OneDrive-tárának URL-címeit, amelyeket ezután ellenőrizheti, szükség esetén szerkesztheti, majd importálhat a fő szkriptbe.

Ehhez a szkripthez a SharePoint Ügyfélösszetevők SDK-ra és a SharePoint Management Shellre is szükség van. Ugyanezeket az utasításokat követve másolja és illessze be, mentse a fájlt helyileg (például "Report-OneDriveForBusinessSiteInfo.ps1"), módosítsa az és $tenantAdmin az $sharepointAdminCenterUrl értékeket a korábbiakhoz hasonlóan, majd futtassa a szkriptet.

**Jogi nyilatkozat**: Ez a mintaszkript nem támogatott a Microsoft standard támogatási programjában vagy szolgáltatásában. Ez a példaszkript az AS IS-hez tartozik, és semmilyen garancia nem vonatkozik rá.

# 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
Szkript a OneDrive IRM-ének letiltásához

Használja az alábbi példaszkriptet, ha le kell tiltania az IRM-t a felhasználók OneDrive-jában.

Ehhez a szkripthez a SharePoint Ügyfélösszetevők SDK-ra és a SharePoint Management Shellre is szükség van. Másolja és illessze be a tartalmat, mentse a fájlt helyileg (például "Disable-IRMOnOneDriveForBusiness.ps1"), és módosítsa azokat és $tenantAdmin az $sharepointAdminCenterUrl értékeket. Manuálisan adja meg a OneDrive URL-címeit, vagy használja a szkriptet az előző szakaszban, hogy importálhassa ezeket, majd futtassa a szkriptet.

**Jogi nyilatkozat**: Ez a mintaszkript nem támogatott a Microsoft standard támogatási programjában vagy szolgáltatásában. Ez a példaszkript az AS IS-hez tartozik, és semmilyen garancia nem vonatkozik rá.

# 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