如何用PowerShell和Microsoft Graph禁用Yammer(Viva Engage)计划
使用Microsoft Graph PowerShell禁用用户的Yammer服务
要替换原有的Msol脚本实现禁用Yammer,在Microsoft Graph PowerShell中需要通过指定**许可证选项(LicenseOptions)**来禁用对应的服务计划,核心是先获取目标许可证的SkuID和YAMMER_EDU对应的服务计划ID,再更新用户的许可证配置。
核心步骤说明
- 确定目标许可证的SkuID:通过
Get-MgSubscribedSku获取对应SkuPartNumber(如STANDARDWOFFPACK_STUDENT)的SkuID。 - 获取YAMMER_EDU的服务计划ID:从目标许可证的服务计划列表中筛选出
YAMMER_EDU对应的ID。 - 构建许可证选项:指定要禁用的服务计划,若用户已分配该许可证,需保留原有禁用计划并新增Yammer的禁用项;若为新分配许可证,可直接在添加时指定禁用计划。
- 应用配置:使用
Set-MgUserLicense更新用户的许可证设置。
完整脚本示例
# 定义目标Sku和用户UPN $targetSkus = @("STANDARDWOFFPACK_STUDENT", "STANDARDWOFFPACK_IW_STUDENT") $userUPN = "$o365name" # 获取用户当前的许可证分配信息 $user = Get-MgUser -UserId $userUPN -Select AssignedLicenses # 初始化许可证选项数组 $licenseOptions = @() foreach ($skuPart in $targetSkus) { # 获取当前Sku的详细信息 $sku = Get-MgSubscribedSku -Filter "SkuPartNumber eq '$skuPart'" if (-not $sku) { Write-Warning "未找到许可证Sku:$skuPart" continue } # 获取YAMMER_EDU对应的服务计划ID $yammerPlan = $sku.ServicePlans | Where-Object { $_.ServicePlanName -eq "YAMMER_EDU" } if (-not $yammerPlan) { Write-Warning "许可证$skuPart中不包含YAMMER_EDU服务计划" continue } # 检查用户是否已分配该许可证 $existingLicense = $user.AssignedLicenses | Where-Object { $_.SkuId -eq $sku.SkuId } if ($existingLicense) { # 保留原有禁用计划,新增Yammer禁用项(去重避免重复) $updatedDisabledPlans = $existingLicense.DisabledPlans + $yammerPlan.ServicePlanId | Select-Object -Unique } else { # 若用户未分配该许可证,此处可选择添加并禁用Yammer(按需调整) $updatedDisabledPlans = @($yammerPlan.ServicePlanId) # 如需同时添加许可证,可将AddLicenses参数设置为@{SkuId = $sku.SkuId; DisabledPlans = $updatedDisabledPlans} } # 添加到许可证选项数组 $licenseOptions += @{ SkuId = $sku.SkuId DisabledPlans = $updatedDisabledPlans } } # 应用许可证配置更新 if ($licenseOptions.Count -gt 0) { Set-MgUserLicense -UserId $userUPN -AddLicenses @() -RemoveLicenses @() -LicenseOptions $licenseOptions Write-Host "已成功更新用户$userUPN的Yammer禁用设置" }
补充说明
- 若你是新分配许可证时直接禁用Yammer,可简化代码:
$skuId = (Get-MgSubscribedSku -Filter "SkuPartNumber eq 'STANDARDWOFFPACK_STUDENT'").SkuId $yammerPlanId = (Get-MgSubscribedSku -Filter "SkuPartNumber eq 'STANDARDWOFFPACK_STUDENT'" | Select-Object -ExpandProperty ServicePlans | Where-Object { $_.ServicePlanName -eq "YAMMER_EDU" }).ServicePlanId Set-MgUserLicense -UserId "$o365name" -AddLicenses @{ SkuId = $skuId DisabledPlans = @($yammerPlanId) } -RemoveLicenses @()
- 确保已安装并连接
Microsoft Graph PowerShell模块,且拥有User.ReadWrite.All、SubscribedSku.Read.All等必要权限。
内容的提问来源于stack exchange,提问作者Mr Tea
相关产品推荐
相关产品推荐

