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
}
ありがとうございました!これは明らかにした。ちょうど私は文法に何が起こっているのかを理解しています..... $ CurrentAccountSku = $ AccountInfo.Licenses.AccountSkuIdの=記号の右側に書かれている構文はなんですか? $ AccountInfoのインスタンスごとに、それぞれのアカウントのAccountSkuidオブジェクトを見ていますか?すべてこれは$ CurrentAccountSkuに格納されているので、私はその部分を取得します。 –
** foreachの($ NewADUsersの$ユーザ){ ($ user.isLicensed -eq $偽)なら、{ セットMsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses ....ら }} **これは希望有効な声明ですか? –
ご迷惑をおかけしました。 $ NewADUsersの$ユーザーは、ADユーザーオブジェクトです。ライセンスには属性が必要ありません。このようにスクリプトを変更することができます。foreach($ NewADUsersの$ user){$ user = Get-MsolUser -UserPrincipalName $ user.UserPrincipalName -ErrorAction Stop; if($ user.isLicensed -eq $ false){Set-MsolUserLicense -UserPrincipalName $ user.UserPrincipalName -AddLicenses 'contoso:ENTERPRISEPACK'}}。 $ user.License.AccountSkuIdの値は、ここでは「contoso:ENTERPRISEPACK」と等しくなります。 –