You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 08:13:19