无法检查ArchiveStatus的邮箱

时间:2016-07-26 17:02:01

标签: if-statement automation office365 powershell-v3.0 system-administration

我正在构建一个脚本,用于检查Office 365邮箱的ArchiveStatus是否处于活动状态。我可以提取数据,但我的if / else语句似乎无法正常工作。这就是我到目前为止所做的:

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

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

无论我搜索哪个邮箱,结果总是"存档已停用"即使控制台显示用户已启用。

2 个答案:

答案 0 :(得分:0)

current object variable$_)仅在管道上下文中可用。您的if语句位于管道之外,因此$_不存在,这意味着$_.ArchiveStatus评估为$null,其被解释为$false in比较。

改变这个:

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

问题应该消失。

答案 1 :(得分: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"
}

感谢您的帮助!!