我正在构建一个脚本,用于检查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"
}
无论我搜索哪个邮箱,结果总是"存档已停用"即使控制台显示用户已启用。
答案 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"
}
感谢您的帮助!!