仅显示符合条件的对象的管道命令的属性

Display Only the Properties of a Piped Command of Object that Match a Criteria

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

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

并且只有 return 个值为 false 的属性。这个想法是不必指定 属性 名称,而是循环遍历单个 object/pipe 的每个 属性 并查看值和 return name/value 对如果满足标准。我知道这很简单,我可能只是没有正确考虑它。

为了进一步扩展这一点,为了我自己的启发,我怎么能做类似的事情,return 属性 名称匹配特定的 属性 类型,例如布尔值、字符串、等等?

我希望,我以正确的方式回答了你的问题

$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

问候