2016-04-12 2 views
0

Попытка получить скрипт для присвоения лицензии O365 списку пользователей. Что мне здесь не хватает? Я получаю список пользователей для работы, выполненных на основе длины SamAccountName и даты создания пользователя. Как я могу заставить его посмотреть на каждого из пользователей внутри этого списка и назначить ему лицензию O365, если она ложна? Является ли утверждение IF идеальным для использования здесь?Назначить лицензию 0365 на список пользователей

Import-Module ActiveDirectory 
$date = (Get-Date).ToString() 
$month = (Get-Date).AddDays(-4) 

$NewUser = Get-ADuser -Filter * -Properties * | Where { ($_.samaccountname.length -eq 3 -and $_.whencreated -ge $month) } | Select-Object SamAccountName, UserPrincipalName, whencreated 

Import-Module MSOnline 
Connect-Module -Cred $User 
foreach ($item in $NewUser) {Get-MsolUser -UserprincipalName $NewUser | where {$_.isLicensed -eq $false} 
Set-MsolUserLicense -UserPrincipalName $NewUser.UserPrincipalName -AddLicenses $NewUser.licensetype 

}

ответ

0

используется, если это утверждение верно. Пожалуйста, обратитесь к следующему:

foreach($user in $NewUser){ 

$AccountInfo = Get-MsolUser -UserPrincipalName $user.UserPrincipalName -ErrorAction Stop 

$CurrentAccountSku = $AccountInfo.Licenses.AccountSkuId 


if($CurrentAccountSku -ne $null) 
{ 
Set-MsolUserLicense -UserPrincipalName $user.UserPrincipalName -AddLicenses 'contoso:ENTERPRISEPACK' -ErrorAction Stop 
} 

} 

Вот блог для добавления различных учетных записей пользователей Skus в Office 365. http://blogs.technet.com/b/treycarlee/archive/2013/11/01/list-of-powershell-licensing-sku-s-for-office-365.aspx

+0

Спасибо, связка! это дало понять. Именно поэтому я понимаю, что в полной мере происходит с синтаксисом ..... что именно является синтаксисом, действующим в правой части знака = для $ CurrentAccountSku = $ AccountInfo.Licenses.AccountSkuId? Скажем, для каждого экземпляра в $ AccountInfo смотрите объект AccountSkuid для каждого из них? все это сохраняется в $ CurrentAccountSku, так что я получаю часть. –

+0

** Еогеасп ($ пользователю в $ NewADUsers) { если ($ user.isLicensed -eq $ False) { Set-MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses .... и др } } ** бы это быть действительным заявлением? –

+0

извините за ответ поздно. $ User в $ NewADUsers - это пользовательский объект AD, который не должен иметь атрибута о лицензии. Вы можете изменить мой скрипт следующим образом: foreach ($ user в $ NewADUsers) {$ user = Get-MsolUser -UserPrincipalName $ user.UserPrincipalName -ErrorAction Stop; if ($ user.isLicensed -eq $ false) {Set-MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -ddLicenses 'contoso: ENTERPRISEPACK'}}. Значение для $ user.License.AccountSkuId равно 'contoso: ENTERPRISEPACK' здесь. –

Смежные вопросы