2016-04-12 48 views
0

Kullanıcı listesine O365 lisansı atamak için bir komut dosyası almaya çalışmak. Burada neyi özlüyorum? SamAccountName uzunluğuna ve kullanıcının oluşturulduğu tarihe dayanarak çalışacak kullanıcıların listesini alırım. Bu listenin içindeki her bir kullanıcıya bakmak ve yanlışsa O365 lisansını atamak için nasıl alabilirim? Burada kullanmak için bir IF beyanı ideal mi?Bir kullanıcı listesine 0365 lisans atama

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 

}

cevap

0

Kullanım beyanı doğru ise. Lütfen aşağıdakine bakın:

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 
} 

} 

Office 365 kullanıcı hesaplarına farklı Skus eklemek için bir blog. http://blogs.technet.com/b/treycarlee/archive/2013/11/01/list-of-powershell-licensing-sku-s-for-office-365.aspx

+0

Teşekkürler bir demet! Bu açık yaptı. Sadece bu yüzden sözdizimi ile tam olarak ne olduğunu anlıyorum ..... $ = CurrentInccountSku = $ HesapInfo.Licenses.AccountSkuId = işaretinin sağ tarafında yapılan sözdizimi tam olarak nedir? Her bir örnek için $ AccountInfo'da her biri için AccountSkuid nesnesine bakın mı? Bütün bunlar $ CurrentAccountSku'da saklanır, böylece aldığım bölüm. –

+0

** foreach ($ NewADUsers içinde $ user) ** herhalûkarda { ($ user.isLicensed -eq $ False) { Set MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses .... et } if} geçerli bir ifade olmak mı? –

+0

geç cevap için üzgünüm. $ NewADUsers'daki $ kullanıcısı, lisans ile ilgili hiçbir özniteliği olmaması gereken AD kullanıcı nesnesidir. Benim betiğimi şöyle değiştirebilirsin: foreach ($ newADUsers'ta $ kullanıcı) {$ user = Get-MsolUser -UserPrincipalName $ user.UserPrincipalName -ErrorAction Stop; ($ user.isLicensed -eq $ false) {Set-MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses 'contoso: ENTERPRISEPACK'}}. $ User.License.AccountSkuId değeri 'contoso: ENTERPRISEPACK' değerine eşittir. –