也许一个例子是最好的。使用PowerShell管理Office 365(或Exchange)我想做这样的事情:
Get-CasMailbox -Identity username | where { $_.Value -eq $false }
仅返回该值为false的属性。我们的想法是不必指定属性名称,而是循环遍历单个对象/管道的每个属性,并在满足条件时查看值和返回名称/值对。我知道这很简单,我可能只是没有正确考虑它。
为了进一步扩展,为了我自己的启发,我怎么能做类似的事情并返回匹配特定属性类型的属性名称,如Boolean,String等?
答案 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
问候