2016-04-12 6 views
0

Versuchen Sie, ein Skript zu erhalten, um eine O365-Lizenz einer Benutzerliste zuzuweisen. Was fehlt mir hier? Ich erhalte die Liste der Benutzer, die auf Basis der SamAccountName-Länge und des Datums der Benutzererstellung arbeiten sollen. Wie bekomme ich es, um jeden der Benutzer in dieser Liste zu betrachten und ihm eine O365-Lizenz zuzuweisen, wenn sie falsch ist? Ist eine IF-Anweisung ideal, um sie hier zu verwenden?Weisen Sie einer Benutzerliste die 0365-Lizenz zu

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 

}

Antwort

0

if-Anweisung ist richtig. Bitte beachten Sie die folgenden Hinweise:

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 
} 

} 

Hier ist ein Blog zum Hinzufügen verschiedener Skus zu Office 365-Benutzerkonten. http://blogs.technet.com/b/treycarlee/archive/2013/11/01/list-of-powershell-licensing-sku-s-for-office-365.aspx

+0

Vielen Dank! Das machte es klar. Nur damit ich verstehe, was mit der Syntax passiert ... Was genau tut die Syntax auf der rechten Seite des = -Zeichens für $ CurrentAccountSku = $ AccountInfo.Licences.AccountSkuId? Wird für jede Instanz in $ AccountInfo das AccountSkuid-Objekt für jede Instanz angezeigt? all dies wird in der $ CurrentAccountSku gespeichert, so dass Teil ich bekomme. –

+0

** foreach ($ user in $ NewADUsers) { if ($ user.isLicensed -eq $ False) { Set-MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses .... et } } ** würde dies eine gültige Aussage sein? –

+0

Entschuldigung für die Antwort spät. Der $ user in $ NewADUsers ist das AD-Benutzerobjekt, das kein Attribut über die Lizenz haben sollte. Sie können mein Skript wie folgt ändern: foreach ($ user in $ NewADUsers) {$ user = Get-MsolUser -UserPrincipalName $ user.UserPrincipalName -ErrorAction Stop; if ($ user.isLicensed -eq $ false) {Set-MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses 'contoso: ENTERPRISEPACK'}}. Der Wert für $ user.License.AccountSkuId entspricht hier "contoso: ENTERPRISEPACK". –

Verwandte Themen