0

Ich erstelle ein Skript, das prüft, ob ArchiveStatus für ein Office 365-Postfach aktiv ist oder nicht. Ich bin in der Lage, die Daten zu ziehen, aber meine if/else Anweisung scheint nicht zu funktionieren. Das ist, was ich habe, so weit:Archivstatus für Postfach kann nicht überprüft werden

$Data = Get-Mailbox -Identity "MailboxName" | ft name,*Archive* 
$Data 

if ($_.ArchiveStatus -eq $true) { 
    Write-Host "Archive Enabled" 
} else{ 
    Write-Host "Archiving Disabled" 
} 

Egal, welche Mailbox Ich suche nach oben, das Ergebnis ist immer „Archivierung Disabled“, auch wenn die Konsole zeigt Benutzer aktiviert.

Antwort

0

Die current object variable ($_) ist nur in einem Pipeline-Kontext verfügbar. Ihre if-Anweisung befindet sich außerhalb einer Pipeline, daher existiert $_ nicht, was bedeutet, dass $_.ArchiveStatus zu $null ausgewertet wird, was im Vergleich als $false interpretiert wird. diese

Wechsel:

$Data = Get-Mailbox -Identity "MailboxName" | ft name,*Archive* 
$Data 

if ($_.ArchiveStatus -eq $true) { 
    Write-Host "Archive Enabled" 
} else { 
    Write-Host "Archiving Disabled" 
} 

in diese:

$Data = Get-Mailbox -Identity "MailboxName" 
$Data | ft name,*Archive* 

if ($Data.ArchiveStatus -eq $true) { 
    Write-Host "Archive Enabled" 
} else { 
    Write-Host "Archiving Disabled" 
} 

und das Problem sollte verschwinden.

+0

Danke @Ansgar für die Antwort, aber ich bekomme immer noch die Deaktivierte Nachricht für jeden Benutzer. Vielleicht muss ich etwas anderes machen? –

0

So konnte ich es mit Hilfe von @Ansgar Wiechers herausfinden. Das -eq $ true funktionierte nicht, weil es entweder Aktiv oder Kein war. Als ich die Variable dafür erstellt habe, hat es funktioniert. Der Arbeitscode ist unten:

$Data = Get-Mailbox -Identity "MailboxName" 
$Data | ft name, ArchiveStatus 
$Status = "Active" 

if($Data.ArchiveStatus -eq $Status) { 
Write-Host "Archive Enabled" 
} Else { 
Write-Host "Archiving Disabled" 
} 

Vielen Dank für Ihre Hilfe !!