Você definitivamente deseja usar um loop for-each para enumerar cada usuário e aplicar a licença. O loop precisa chamar o .UserPrincipalName
de cada objeto retornado na sua consulta Get-ADUser
, já que o Office365 precisa trabalhar com esse valor ao configurar licenças:
Get-ADUser | %{ Set-MSOLUserLicense -UserPrincipalName $_.UserPrincipalName }
Eu criei minha própria resposta aqui para explicar um caso comum que eu acho que você está descrevendo em sua pergunta: você não quer aplicar as mesmas opções de licença a todos.
Um blog do TechNet sobre esse assunto é imensamente útil. Talvez você não queira conceder ao seu time de Finanças acesso ao SharePoint Online / OneDrive for Business por motivos de vazamento de dados, ou você pode ter um call center que não deseja habilitar para o Lync / Skype for Business.
Para obter informações sobre seu locatário, comece no topo:
Get-MSOLAccountSku
Isso retornará os pacotes de licença que você tem em seu inquilino. Alguns SKUs comuns são ENTERPRISEPACK e DESKLESSPACK. Estes serão listados por yourorg:LICENSEPACK
em AccountSkuId.
É importante observar que cada um desses pacotes de licenças pode ter recursos desativados quando você se inscreve no PowerShell (da mesma forma, você pode optar por marcar / desmarcar caixas de opção no Centro de administração).
Paracriarestesubconjuntodeopçõesdelicença,crieumanovavariáveleaproveiteocmdletNew-MSOLLicenseOptions
:$LicOpt=New-MsolLicenseOptions-AccountSkuId"yourorg:ENTERPRISEPACK" -DisabledPlans OFFICESUBSCRIPTION,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE,RMS_S_ENTERPRISE
(As opções acima corresponderiam à captura de tela acima, tenho certeza de que você poderia adivinhar que eu a tirei totalmente de um script de provisionamento.)
Por fim, podemos vincular isso ao seu Set-MsolUserLicense
no seu loop ForEach:
$LicOpt = New-MsolLicenseOptions -AccountSkuId "yourorg:ENTERPRISEPACK" -DisabledPlans OFFICESUBSCRIPTION,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE,RMS_S_ENTERPRISE
Get-ADUser | %{ Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses "yourorg:ENTERPRISEPACK" -LicenseOptions $LicOpt }
Como sempre, seu inquilino pode variar. Espero ter dado informações suficientes para você descobrir as opções disponíveis e aplicar de forma apropriada!