Weboldal keresés

Az Exchange Online mappájának törlése az összes postafiókból


Törölni szeretne egy mappát az Exchange Online PowerShell összes postaládájából? Hogy érdekesebb legyen, mi a teendő, ha bizonyos mappákat szeretne törölni és meghatározott postafiókokat megcélozni. Lenyűgöző, hogyan lehet ezt elérni, igaz? Ebből a cikkből megtudhatja, hogyan törölhet mappákat az Exchange Online-ban az összes postafiókból.

Mielőtt elkezdené törölni a mappákat az Exchange Online-ban

Kövesse gondosan a lépéseket a cikkben leírtak szerint:

  • Adott mappák/mappák törlése az Exchange Online meghatározott postafiókjaiból
  • Adott mappa/mappák törlése az Exchange Online összes postaládájából

Adjon hozzá megszemélyesítési jogokat az Exchange Online-ban

Használjon megszemélyesítést, ha olyan szolgáltatási alkalmazással rendelkezik, amelynek több postafiókhoz is hozzá kell férnie, és „a postafiók tulajdonosaként kell eljárnia”. További információ a megszemélyesítésről és az EWS-ről az Exchange szolgáltatásban.

Hozzon létre és adjon hozzá megszemélyesítési jogokat ahhoz a fiókhoz, amely a szkriptet futtatja. Ez lehet globális rendszergazdai fiók vagy szolgáltatási fiók. Példánkban a globális rendszergazdai fiók hozzáadásra került.

Jelentkezzen be az Exchange Admin Centerbe (Exchange Online). Kattintson a Szerepek > Rendszergazdai szerepkörök lehetőségre. Kattintson a Szerepkörcsoport hozzáadása lehetőségre.

Adjon nevet az új szerepkörcsoportnak - például Application-Impersonation.

Rendelje hozzá az Application Impersonation szerepet.

Adja hozzá magát, a globális rendszergazdát vagy a tagként létrehozott szolgáltatásfiókot.

Tekintse át a szerepkörcsoportot, és kattintson a Szerepkörcsoport hozzáadása lehetőségre.

Az Alkalmazás-megszemélyesítés szerepcsoport sikeresen létrejött.

Megjegyzés: Akár egy órába is telhet, mire a módosítások alkalmazásra kerülnek.

A következő lépés a Microsoft Exchange Web Services Managed API 2.2 telepítése.

Microsoft Exchange Web Services felügyelt API 2.2

Töltse le a Microsoft Exchange Web Services Managed API 2.2-t. Mentse el a fájlt a rendszerbe.

Futtassa a telepítést rendszergazdaként, és telepítse a Microsoft Exchange Web Services Managed API 2.2-t.

A telepítés után ellenőrizze a telepítési útvonalon, hogy látja-e a fájlokat.

A következő lépés a szövegfájlok létrehozása.

Hozzon létre szöveges fájlokat a szkripthez

Hozzon létre három szövegfájlt a C:\Temp mappában.

  1. Folders.txt
  2. Log.txt
  3. Users.txt

Nyissa meg a Folders.txt fájlt, és adja hozzá a FolderName elemet a tetejére. Adja hozzá a mappaneveket az egyes sorokhoz. Példánkban négy mappát szeretnénk törölni a postafiókokból.

A szkript naplókat hoz létre, és elhelyezi azokat a Log.txt fájlban. Tartsa üresen.

Nyissa meg a Users.txt fájlt, és adja hozzá az EmailAddress elemet az oldal tetejére. Adja hozzá az e-mail címeket minden sorhoz. A szkript törli a mappákat ezekből a postafiókokból.

További információ: Postafiókok listájának exportálása CSV-fájlba »

A következő lépés egy alkalmazás regisztrálása az Azure AD-ben.

Regisztráljon alkalmazást az Azure AD-ben

Egy alkalmazás Azure AD-ben való regisztrálásához kövesse az alábbi lépéseket:

1. Jelentkezzen be a Microsoft Azure Portalra.

2. Lépjen az Azure Active Directory > Alkalmazásregisztrációk oldalra.

3. Kattintson az Új regisztráció lehetőségre.

4. Írja be a DeleteFolders nevet.

5. Válassza a Csak ebben a szervezeti címtárban található fiókok lehetőséget.

6. Válassza a Nyilvános kliens/natív (mobil és asztali) lehetőséget, és írja be az URL-t:

https://login.microsoftonline.com/common/oauth2/nativeclient

7. Kattintson a Regisztráció lehetőségre.

8. Másolja ki az Alkalmazás (ügyfél) azonosítót és a Directory (bérlő) azonosítót, és illessze be a Jegyzettömbbe (később szüksége lesz rá).

A következő lépés a PowerShell-szkript letöltése.

Készítse elő a Delete Folders Exchange Online PowerShell-parancsfájlt

Töltse le a Delete-Folders-EXO.ps1 PowerShell-szkriptet, és mentse a C:\Scripts mappába.

<#
    .SYNOPSIS
    Delete-Folders-EXO.ps1
	
    .DESCRIPTION
    Delete specific folder/folders from specific mailboxes in Exchange Online.

    .LINK  
    www.alitajran.com/delete-folder-in-exchange-online-from-all-mailboxes

    .NOTES
    Written by: Catalin Streang
    Edited by:  ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .LICENSE
    The MIT License (MIT)
    Copyright (c) 2020 ALI TAJRAN
    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:
    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of the Software.
    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
    SOFTWARE.

    .CHANGELOG
    V1.00, 10/09/2020 - Initial version
    V2.00, 01/31/2023 - Support Modern Authentication

    .REQUIRED
    The script requires EWS Managed API 2.2.
    Make sure the Import-Module command matches the Microsoft.Exchange.WebServices.dll location of EWS Managed API, chosen during the installation.
#>

# Provide Directory (tenant) ID or Tenant domain name
$TenantId = "2d845888-c017-4121-abe5-02f619863965"

# Provide Application (client) ID
$AppClientId = "fccc7ed0-6218-41f9-a89b-d43b29bf7681"

$MsalParams = @{
    ClientId = $AppClientId
    TenantId = $TenantId   
    Scopes   = "https://outlook.office.com/EWS.AccessAsUser.All"
}

$MsalResponse = Get-MsalToken @MsalParams
$EWSAccessToken = $MsalResponse.AccessToken

# Variables
[string]$info = "White"                         # Color for informational messages
[string]$warning = "Yellow"                     # Color for warning messages
[string]$error = "Red"                          # Color for error messages
[string]$success = "Green"                      # Color for success messages
[string]$LogFile = "C:\Temp\Log.txt"            # Path of the Log File
[string]$FoldersCSV = "C:\Temp\Folders.txt"     # Path of the Folders File
[string]$UsersCSV = "C:\Temp\Users.txt"         # Path of the Users File

function DeleteFolder($MailboxName) {
    Write-Host "Searching for folder in Mailbox Name:" $MailboxName -ForegroundColor $info
    Add-Content $LogFile ("Searching for folder in Mailbox Name:" + $MailboxName)

    # Change the user to impersonate
    $service.ImpersonatedUserId = New-Object Microsoft.Exchange.WebServices.Data.ImpersonatedUserId([Microsoft.Exchange.WebServices.Data.ConnectingIdType]::SmtpAddress, $MailboxName)

    do {

        $oFolderView = New-Object Microsoft.Exchange.WebServices.Data.FolderView(1)

        $oFolderView.Traversal = [Microsoft.Exchange.Webservices.Data.FolderTraversal]::Deep

        $oSearchFilter = New-Object Microsoft.Exchange.WebServices.Data.SearchFilter+IsEqualTo([Microsoft.Exchange.WebServices.Data.FolderSchema]::DisplayName, $FolderName)

        $oFindFolderResults = $service.FindFolders([Microsoft.Exchange.WebServices.Data.WellKnownFolderName]::MsgFolderRoot, $oSearchFilter, $oFolderView)

        if ($oFindFolderResults.TotalCount -eq 0) {
            Write-Host "Folder $FolderName does not exist in Mailbox:" $MailboxName -ForegroundColor $warning
            Add-Content $LogFile ("Folder does not exist in Mailbox:" + $MailboxName)
        }
        else {
            Write-Host "Folder $FolderName EXISTS in Mailbox:" $MailboxName -ForegroundColor $success
            Add-Content $LogFile ("Folder EXISTS in Mailbox:" + $MailboxName)

            $oFolder = [Microsoft.Exchange.WebServices.Data.Folder]::Bind($service, $oFindFolderResults.Folders[0].Id)

            Write-Host "Deleting Folder:" $FolderName -ForegroundColor $success
            Add-Content $LogFile ("Deleting Folder:" + $FolderName)

            # You can choose from a few delete types, just choose one:
            $oFolder.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete)
            #$oFolder.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)
        }

    } while ($oFindFolderResults.TotalCount -ne 0)

    $service.ImpersonatedUserId = $null

}
Import-Module -Name "C:\Program Files\Microsoft\Exchange\Web Services\2.2\Microsoft.Exchange.WebServices.dll"

$service = [Microsoft.Exchange.WebServices.Data.ExchangeService]::new()

# Connect with Modern Authentication
$service.Credentials = [Microsoft.Exchange.WebServices.Data.OAuthCredentials]$EWSAccessToken

# Exchange Online URL
$service.Url = New-Object Uri("https://outlook.office365.com/EWS/Exchange.asmx")

# Read the data
Import-Csv $FoldersCSV -Encoding UTF8 | Foreach-Object {
    $FolderName = $_.FolderName.ToString()

    Import-Csv $UsersCSV -Encoding UTF8 | Foreach-Object {
        $EmailAddress = $_.EmailAddress.ToString()

        # Catch the errors
        trap [System.Exception] {
            Write-Host ("Error: " + $_.Exception.Message) -ForegroundColor $error
            Add-Content $LogFile ("Error: " + $_.Exception.Message)
            continue
        }
        DeleteFolder($EmailAddress)
    }
}

A következő lépés a szkript szerkesztése.

Szerkessze a Mappák törlése Exchange Online PowerShell-parancsfájlt

Módosítsa a TenantId (46. sor) és az AppClientId (49. sor) értékeit az Azure AD-ben regisztrált alkalmazásból másolt értékekkel.

A szkript teljesen törli a mappákat és a mappákban lévő üzeneteket, és nem tudja visszaállítani őket a Helyreállítható elemek mappából.

Szeretné törölni a mappákat, és áthelyezni az üzeneteket a postafiók Recoverable Items mappájába? Módosítsa a SoftDelete értékre.

Ellenőrizze a 100-as és 101-es sorokat a rendelkezésre álló lehetőségekért.

$oFolder.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::HardDelete)
#$oFolder.Delete([Microsoft.Exchange.WebServices.Data.DeleteMode]::SoftDelete)

A következő lépés az MSAL.PS PowerShell modul telepítése.

Telepítse az MSAL.PS PowerShell modult

Az MSAL.PS PowerShell modult használjuk a tokenek beszerzéséhez a Microsofttól.

Indítsa el a Windows PowerShell-t vagy a Windows PowerShell ISE-t rendszergazdaként. Telepítse az MSAL.PS PowerShell modult.

Install-Module -Name MSAL.PS

A következő és utolsó lépés a szkript futtatása.

Futtassa a Mappák törlése Exchange Online PowerShell-parancsfájlt

Példánkban tudjuk, hogy a James felhasználó a postafiókjában lévő összes mappát megkapta.

A szkript futtatása előtt

  • Hang mappa almappa
  • Képek mappa almappája
  • Mappa Zene mappa
  • Mappa Mappa Videók

Módosítsa a könyvtárat a scripts mappára, és futtassa a szkriptet.

PS C:\> cd C:\scripts
PS C:\scripts> .\Delete-Folders-EXO.ps1

Megjelenik egy bejelentkezési ablak. Jelentkezzen be azzal a fiókkal, amelyet tagként adott a megszemélyesítési szerepkörhöz, és jelölje be a Hozzájárulás a szervezet nevében jelölőnégyzetet. Ezután kattintson az Elfogadás gombra.

Elkezdi keresni a mappákat a postafiókokban. A kimenet a Log.txt fájlba fog írni.

Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder EXISTS in Mailbox: James.Paterson@exoip.com
Deleting Folder: Folder Audio
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder EXISTS in Mailbox: James.Paterson@exoip.com
Deleting Folder: Folder Pictures
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder EXISTS in Mailbox: James.Paterson@exoip.com
Deleting Folder: Folder Music
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder EXISTS in Mailbox: James.Paterson@exoip.com
Deleting Folder: Folder Videos
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com

Futtassa újra a szkriptet. Azt fogja mutatni, hogy nincs mit törölni.

PS C:\scripts> .\Delete-Folders-EXO.ps1
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com
Searching for folder in Mailbox Name: James.Paterson@exoip.com
Folder does not exist in Mailbox: James.Paterson@exoip.com
Searching for folder in Mailbox Name: Dylan.Piper@exoip.com
Folder does not exist in Mailbox: Dylan.Piper@exoip.com

A szkript futtatása után

A mappák törlődnek az Office 365 postafiókjából.

Ellenőrizze a Log.txt fájlt, ha meg szeretné tudni, hogy mely mappák melyik postafiókjából vannak törölve.

Segített ez a cikk egy mappa törlésében az Exchange Online-ban a PowerShell segítségével?

Olvass tovább: Postafiók áthelyezése az Exchange Online szolgáltatásba a PowerShell segítségével »

Következtetés

Megtanulta, hogyan törölhet mappát az Exchange Online összes postafiókjából. Nem csak egy mappát törölhet, hanem bizonyos mappákat, amelyekről szöveges fájlban lemondhat. A szkript azonnali futtatása előtt kövesse a cikkben leírt lépéseket. A Delete-Folders-EXO.ps1 PowerShell szkript kiválóan alkalmas az eredmények elérésére.

Tetszett ez a cikk? Lehet, hogy tetszeni fog a Hogyan lehet nagyobb postaládaméretet elérni, mint a Microsoft 365-ben. Ne felejtsen el követni minket, és megosztani ezt a cikket.

Kapcsolódó cikkek