仅显示与条件匹配的对象的管道命令的属性

时间:2017-05-04 12:58:49

标签: powershell office365 exchange-server

也许一个例子是最好的。使用PowerShell管理Office 365(或Exchange)我想做这样的事情:

Get-CasMailbox -Identity username | where { $_.Value -eq $false }

仅返回该值为false的属性。我们的想法是不必指定属性名称,而是循环遍历单个对象/管道的每个属性,并在满足条件时查看值和返回名称/值对。我知道这很简单,我可能只是没有正确考虑它。

为了进一步扩展,为了我自己的启发,我怎么能做类似的事情并返回匹配特定属性类型的属性名称,如Boolean,String等?

1 个答案:

答案 0 :(得分:0)

我希望,我的问题是正确的

$Mailbox = Get-Mailbox -Identity username
$Members = Get-Member -Inputobject $Mailbox
Foreach($Property in $Members)
{
    if ($Property.Membertype -eq "Property")
    {
        $propname = $Property.name
        if ($Mailbox.$propname -eq $false) {$propname + ":" + $Mailbox.$propname}
    }
}

如果您使用Get-CasMailbox而不是Get-Mailbox,这也应该有用。

我的输出(对于我的邮箱)如下所示:

AntispamBypassEnabled:False
AuditEnabled:False
CalendarRepairDisabled:False
CalendarVersionStoreDisabled:False
DowngradeHighPriorityMessagesEnabled:False
EmailAddressPolicyEnabled:False
HasPicture:False
HasSpokenName:False
HiddenFromAddressListsEnabled:False
ImListMigrationCompleted:False
IncludeInGarbageCollection:False
IsAuxMailbox:False
IsExcludedFromServingHierarchy:False
IsInactiveMailbox:False
IsPersonToPersonTextMessagingEnabled:False
IsResource:False
IsRootPublicFolderMailbox:False
IsShared:False
IsSoftDeletedByDisable:False
IsSoftDeletedByRemove:False
LitigationHoldEnabled:False
MessageCopyForSendOnBehalfEnabled:False
MessageCopyForSentAsEnabled:False
ModerationEnabled:False
QueryBaseDNRestrictionEnabled:False
RequireSenderAuthenticationEnabled:False
ResetPasswordOnNextLogon:False
RetentionHoldEnabled:False
UMEnabled:False
UseDatabaseRetentionDefaults:False

要获取属性的数据类型,可以使用(在我的示例中)

$Property.Definition

问候