查询 Office 365 许可状态时无法筛选 table 的输出
Unable to filter output of table when querying Office 365 licensing status
我正在尝试筛选此命令 (Get-MsolUser -UserPrincipalName) 的输出。Licenses.ServiceStatus
看起来像这样:
ServicePlan ProvisioningStatus
----------- ------------------
MCOMEETADV Success
ADALLOM_S_DISCOVERY Disabled
EXCHANGE_S_FOUNDATION PendingProvisioning
AAD_PREMIUM Success
MFA_PREMIUM Success
ONEDRIVE_BASIC Success
VISIOONLINE Success
EXCHANGE_S_FOUNDATION PendingProvisioning
VISIO_CLIENT_SUBSCRIPTION Success
MCOPSTN1 Success
EXCHANGE_S_FOUNDATION PendingProvisioning
DYN365_CDS_VIRAL Success
FLOW_P2_VIRAL Success
EXCHANGE_S_FOUNDATION PendingProvisioning
INTUNE_A PendingInput
EXCHANGE_S_FOUNDATION PendingProvisioning
BI_AZURE_P2 Success
MCOEV Success
MICROSOFT_SEARCH PendingProvisioning
WHITEBOARD_PLAN2 PendingProvisioning
MIP_S_CLP1 PendingProvisioning
MYANALYTICS_P2 Success
BPOS_S_TODO_2 Success
FORMS_PLAN_E3 Success
STREAM_O365_E3 Success
Deskless Success
FLOW_O365_P2 Success
POWERAPPS_O365_P2 Success
TEAMS1 Success
PROJECTWORKMANAGEMENT Success
SWAY Success
INTUNE_O365 PendingActivation
YAMMER_ENTERPRISE Success
RMS_S_ENTERPRISE Success
OFFICESUBSCRIPTION Success
MCOSTANDARD Success
SHAREPOINTWAC Success
SHAREPOINTENTERPRISE Success
EXCHANGE_S_ENTERPRISE Success
我正在筛选 Exchange_S_Enterprise 和 MCOEV。
我试过了 (Get-MsolUser -UserPrincipalName)。Licenses.ServiceStatus | Select-对象交换
我试过 Where-Object
哪个returns什么都没有
(Get-MsolUser -UserPrincipalName).Licenses.ServiceStatus
如果 EXCHANGE_S_ENTERPRISE 的配置状态 -eq "Success"
,我想做一个 if 语句来继续我的脚本
如果您深入了解其中一位用户的服务状态,您会发现 ServiceStatus 是一个包含多个子级别的对象。
您需要访问 ServiceName 才能执行您的 Where
声明..
这是一个工作示例,它将对 MCOEV 和 Exchange_S_Enterprise 执行不同的操作,前提是它们的配置状态为SUCCESS
.
$User = Get-MsolUser -UserPrincipalName 'MyUser@MyDomain.com'
$PlanstoCheck = @('MCOEV', ' EXCHANGE_S_ENTERPRISE')
$Plans = $User.Licenses.ServiceStatus.where( { $_.ServicePlan.ServiceName -in $PlanstoCheck })
Foreach ($Plan in $Plans) {
if ($Plan.ProvisioningStatus -eq 'SUCCESS') {
switch ($Plan.ServicePlan.ServiceName) {
'MCOEV' { Write-Host 'Do thing #1' }
'EXCHANGE_S_ENTERPRISE' { 'Do THing #2' }
}
}
}
调试时,可以使用F8一次只执行一行。
在您的例子中,在 $User.Licenses.ServiceStatus 加载一个 MSOL 用户,您可以看到更深的几个级别。如果您在该级别执行 GetType()
,您还会注意到您当前的级别不是字符串,而是另一个对象,因此将对象与字符串进行比较没有产生预期的结果。
我正在尝试筛选此命令 (Get-MsolUser -UserPrincipalName) 的输出。Licenses.ServiceStatus
看起来像这样:
ServicePlan ProvisioningStatus
----------- ------------------
MCOMEETADV Success
ADALLOM_S_DISCOVERY Disabled
EXCHANGE_S_FOUNDATION PendingProvisioning
AAD_PREMIUM Success
MFA_PREMIUM Success
ONEDRIVE_BASIC Success
VISIOONLINE Success
EXCHANGE_S_FOUNDATION PendingProvisioning
VISIO_CLIENT_SUBSCRIPTION Success
MCOPSTN1 Success
EXCHANGE_S_FOUNDATION PendingProvisioning
DYN365_CDS_VIRAL Success
FLOW_P2_VIRAL Success
EXCHANGE_S_FOUNDATION PendingProvisioning
INTUNE_A PendingInput
EXCHANGE_S_FOUNDATION PendingProvisioning
BI_AZURE_P2 Success
MCOEV Success
MICROSOFT_SEARCH PendingProvisioning
WHITEBOARD_PLAN2 PendingProvisioning
MIP_S_CLP1 PendingProvisioning
MYANALYTICS_P2 Success
BPOS_S_TODO_2 Success
FORMS_PLAN_E3 Success
STREAM_O365_E3 Success
Deskless Success
FLOW_O365_P2 Success
POWERAPPS_O365_P2 Success
TEAMS1 Success
PROJECTWORKMANAGEMENT Success
SWAY Success
INTUNE_O365 PendingActivation
YAMMER_ENTERPRISE Success
RMS_S_ENTERPRISE Success
OFFICESUBSCRIPTION Success
MCOSTANDARD Success
SHAREPOINTWAC Success
SHAREPOINTENTERPRISE Success
EXCHANGE_S_ENTERPRISE Success
我正在筛选 Exchange_S_Enterprise 和 MCOEV。
我试过了 (Get-MsolUser -UserPrincipalName)。Licenses.ServiceStatus | Select-对象交换
我试过 Where-Object
哪个returns什么都没有
(Get-MsolUser -UserPrincipalName).Licenses.ServiceStatus
如果 EXCHANGE_S_ENTERPRISE 的配置状态 -eq "Success"
,我想做一个 if 语句来继续我的脚本如果您深入了解其中一位用户的服务状态,您会发现 ServiceStatus 是一个包含多个子级别的对象。
您需要访问 ServiceName 才能执行您的 Where
声明..
这是一个工作示例,它将对 MCOEV 和 Exchange_S_Enterprise 执行不同的操作,前提是它们的配置状态为SUCCESS
.
$User = Get-MsolUser -UserPrincipalName 'MyUser@MyDomain.com'
$PlanstoCheck = @('MCOEV', ' EXCHANGE_S_ENTERPRISE')
$Plans = $User.Licenses.ServiceStatus.where( { $_.ServicePlan.ServiceName -in $PlanstoCheck })
Foreach ($Plan in $Plans) {
if ($Plan.ProvisioningStatus -eq 'SUCCESS') {
switch ($Plan.ServicePlan.ServiceName) {
'MCOEV' { Write-Host 'Do thing #1' }
'EXCHANGE_S_ENTERPRISE' { 'Do THing #2' }
}
}
}
调试时,可以使用F8一次只执行一行。
在您的例子中,在 $User.Licenses.ServiceStatus 加载一个 MSOL 用户,您可以看到更深的几个级别。如果您在该级别执行 GetType()
,您还会注意到您当前的级别不是字符串,而是另一个对象,因此将对象与字符串进行比较没有产生预期的结果。