Как я могу отключить и включить приложения Office 365 для всех пользователей одновременно с помощью powershell?

Я нашел сценарии в документации Microsoft, которые показывают, как (для этого примера) отключить Yammer для отдельного пользователя:

$UPN = "someone@domain.com"
$LicenseDetails = (Get-MsolUser -UserPrincipalName $UPN).Licenses
ForEach ($License in $LicenseDetails) {
    $DisabledOptions = @()
    $License.ServiceStatus | ForEach {
        If ($_.ProvisioningStatus -eq "Disabled" -or $_.ServicePlan.ServiceName -like "*YAMMER*") { 
            $DisabledOptions += "$($_.ServicePlan.ServiceName)" 
        } 
    }
    $LicenseOptions = New-MsolLicenseOptions -AccountSkuId $License.AccountSkuId -DisabledPlans $DisabledOptions
    Set-MsolUserLicense -UserPrincipalName $UPN -LicenseOptions $LicenseOptions
}

Как мне трубу что-то вроде {Get-MsolUser} (для всех в моей организации) или группа Outlook для этого, а не только один UPN?

2 ответа

У меня была аналогичная проблема с включением intune для определенных пользователей. Странно, что Microsoft предлагает только опцию «отключить планы».

Я точно настроил ваш сценарий выше, и вот сценарий, который я должен работать только в ИТ-команде, например. Обратите внимание, что он проверяет текущую лицензию и изменяет что-либо только в том случае, если intune отключен.

      $us = Get-ADGroupMember "IT Team" 

foreach($u in $us){
$username = $u.SamAccountName

$userinfo = Get-ADUser $username

$upn = $userinfo.UserPrincipalName  

write-host $upn -BackgroundColor black -foregroundcolor white

    $LicenseDetails = (Get-MsolUser -UserPrincipalName $UPN).Licenses
    ForEach ($License in $LicenseDetails) {
        $DisabledOptions = @()
        $License.ServiceStatus | ForEach {
       # $_.ServicePlan.ServiceName
       # $_.ProvisioningStatus
            If ($_.ProvisioningStatus -eq "Disabled") { 
                $DisabledOptions += "$($_.ServicePlan.ServiceName)" 
            } 
        }


    }

     if($DisabledOptions -like "*INTUNE_A*"){
       
            write-host "Intune disabled - enabling intune" -foregroundcolor red
            $enableintune =  $DisabledOptions | Where-Object { $_ –ne "INTUNE_A" }

            #$enableintune

            $LicenseOptions = New-MsolLicenseOptions -AccountSkuId $License.AccountSkuId -DisabledPlans $enableintune
            Set-MsolUserLicense -UserPrincipalName $UPN -LicenseOptions $LicenseOptions
           }else{
          
           write-host "Intune enabled - no changes" -foregroundcolor green
      }  

}

Если вы позвоните Get-MsolUser без указания -UserPrincipalName $UPN, он вернет всех пользователей в арендаторе. Затем вы можете перебрать этот список, извлечь их UPN и затем выполните этот фрагмент против него.

Другие вопросы по тегам