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.
- Folders.txt
- Log.txt
- 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/nativeclient7. 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.PSA 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.ps1Megjelenik 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.comFuttassa ú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.comA 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.

















