meowjayjay
Goto Top

Prüfung meines PS Scripts

Good morning admins!

Kann jemand über mein PS script gehen und mir Rückmeldung geben?

Das Script soll aus bestimmten Postfächern den Ordner gelöschte Elemente löschen und ggf. auf einem Batch Server laufen.

Danke schon mal fürs lesen bis hier! face-smile face-smile

VG
Meow!

# Exchange-Modul importieren
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn

# Verbindung mit dem Exchange-Server herstellen 
$UserCredential = Get-Credential
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ExchangeServer.Domain.de>/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session -DisableNameChecking

# Liste der Postfächer, aus denen der Ordner "Gelöschte Elemente" geleert werden soll 
$PostfachListe = @(
    "Umpa1@Lumpa.de",  
    "Umpa1@Lumpa2.de"  
    # Platzhalter
)

# Durchlaufen der Postfächer und Leeren des Ordners "Gelöschte Elemente" 
foreach ($Postfach in $PostfachListe) {
    Write-Host "Leere den Ordner 'Gelöschte Elemente' im Postfach: $Postfach"  

    # Suchen nach gelöschten Elementen im Ordner "Gelöschte Elemente" 
    $GelöschteElemente = Search-Mailbox -Identity $Postfach -SearchDumpsterOnly -SearchQuery "Kind:deletes"  

    # Löschen der gefundenen gelöschten Elemente
    if ($GelöschteElemente.Count -gt 0) {
        $GelöschteElemente | ForEach-Object {
            Remove-MailboxItem -Identity $Postfach -MailboxItemLocation $_.Identity -Confirm:$false
        }
        Write-Host "Der Ordner 'Gelöschte Elemente' im Postfach $Postfach wurde geleert."  
    } else {
        Write-Host "Keine gelöschten Elemente im Ordner 'Gelöschte Elemente' des Postfachs $Postfach gefunden."  
    }
}

# Verbindung zum Exchange-Server trennen
Remove-PSSession $Session

Content-ID: 33202203648

Url: https://administrator.de/contentid/33202203648

Printed on: November 8, 2024 at 18:11 o'clock

9697748851
9697748851 Mar 01, 2024 updated at 08:56:45 (UTC)
Goto Top
Moin,

Add-PSSnapin
nutzt Du Exchange 2013 oder neuer? Dann:

# Überprüfen, ob das Exchange-Modul bereits geladen ist
if (-not (Get-Module -ListAvailable -Name "ExchangeOnlineManagement")) {  
    # Versuchen, das Modul zu importieren
    Import-Module ExchangeOnlineManagement -ErrorAction Stop
}

# Verbindung mit dem Exchange-Server herstellen
$UserCredential = Get-Credential
try {
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://<ExchangeServer.Domain.de>/PowerShell/ -Authentication Kerberos -Credential $UserCredential
    Import-PSSession $Session -DisableNameChecking -ErrorAction Stop
} catch {
    Write-Error "Fehler beim Verbinden mit dem Exchange-Server: $_"  
    exit
}

# Liste der Postfächer
$PostfachListe = @(
    "Umpa1@Lumpa.de",  
    "Umpa1@Lumpa2.de"  
    # Weitere Postfächer hinzufügen
)

# Durchlaufen der Postfächer und Leeren des Ordners "Gelöschte Elemente" 
foreach ($Postfach in $PostfachListe) {
    Write-Host "Versuche, den Ordner 'Gelöschte Elemente' im Postfach: $Postfach zu leeren..."  
    try {
        # Direktes Löschen der gelöschten Elemente
        Search-Mailbox -Identity $Postfach -SearchDumpsterOnly -SearchQuery "Kind:deletes" -DeleteContent  
        Write-Host "Der Ordner 'Gelöschte Elemente' im Postfach $Postfach wurde geleert."  
    } catch {
        Write-Error "Fehler beim Leeren des Ordners 'Gelöschte Elemente': $_"  
    }
}

# Verbindung zum Exchange-Server trennen
Remove-PSSession $Session

$GelöschteElemente
Blöd, trenn Dich von "Sonderzeichen". -> $geloeschteElemente.

Sonst: sexy.

Gruß
11078840001
11078840001 Mar 01, 2024 updated at 12:02:33 (UTC)
Goto Top
Ich würde ja direkt Retention-Policies verwenden und die Policy den gewünschten Mailboxen zuweisen dann erledigt sich das Skript-Löschen von selbst
Erstellen einer Aufbewahrungsrichtlinie in Exchange Server
MeowJayJay
MeowJayJay Mar 06, 2024 at 06:40:02 (UTC)
Goto Top
Moin Moin!

Bin nach Anleitung vorgegangen und es hat genau einen Tag funktioniert...

heute klappts schon wieder nicht..

1) Tag erstellt
2) Policy erstellt
3) an Postfach angehangen
4) mit EX Shell geprüft, ist eingetragen - geht trotzdem nicht face-sad..

Noch einen Tipp?

Grüße
Meow
Zitat von @11078840001:

Ich würde ja direkt Retention-Policies verwenden und die Policy den gewünschten Mailboxen zuweisen dann erledigt sich das Skript-Löschen von selbst
Erstellen einer Aufbewahrungsrichtlinie in Exchange Server