0

Office 365メールボックスのArchiveStatusが有効かどうかを確認するスクリプトを作成しています。私はデータを取得することができますが、私のif/elseステートメントは動作していないようです。これは私がこれまで持っているものされています。どんなに私は検索何のメールボックス、結果がコンソールは、ユーザーが有効を示していても、常に「無効アーカイブ」ではありませんメールボックスのArchiveStatusを確認できません

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

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

答えて

0

current object variable$_)は、パイプラインのコンテキストでのみ使用できます。 ifステートメントがパイプライン外にあるため、$_.ArchiveStatus$nullと評価され、比較では$falseと解釈され、$_は存在しません。この中

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

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

この変更

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

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

と問題が消えるはずです。

+0

回答ありがとうございます。ただし、すべてのユーザーに対して無効メッセージが表示されています。おそらく私は別の何かをする必要がありますか? –

0

私は@Ansgar Wiechersの助けを借りてそれを理解することができました。 -eq $ trueは、ActiveまたはNoneのいずれかであるため、機能していませんでした。私はこのための変数を作成したときに働いた。作業コードは次のとおりです。

$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" 
} 

ありがとうございました!

関連する問題