Mencoba mengatur lisensi pengguna di Office 365 melalui Powershell

Saya memiliki penyewa Office 365 dengan beberapa paket lisensi dan saya mencoba menonaktifkan fitur tertentu dari paket E3 secara massal melalui Powershell.

Inilah yang saya punya:

$ENTERPRISEPACK=New-MsolLicenseOptions -AccountSkuId companyname:ENTERPRISEPACK -DisabledPlans "FLOW_0365_P2", "POWERAPPS_0365_P2"

Import-CSV c:\scripts\inputfiles\e3users.csv | foreach-object -process { Set-MsolUserLicense -UserPrincipalName $_.upn -LicenseOptions $ENTERPRISEPACK -Verbose}

Masalah yang saya hadapi adalah saya dapat memverifikasi keberadaan pengguna, dan mengimpor CSV sebagai valid, tetapi saya mendapatkan kesalahan untuk setiap pengguna di CSV saya:

Set-MsolUserLicense : User Not Found.  User: .

Ini cukup membuat frustrasi, karena saya hanya ingin menonaktifkan fitur untuk semua pengguna E3 (yang ada di CSV saya) dan perintah ini berfungsi saat Anda menjalankannya sebagai:

$ENTERPRISEPACK=New-MsolLicenseOptions -AccountSkuId companyname:ENTERPRISEPACK -DisabledPlans "FLOW_0365_P2", "POWERAPPS_0365_P2"

Set-MsolUserLicense -UserPrincipalName [email protected] -LicenseOptions $ENTERPRISEPACK -Verbose

Seperti yang Anda lihat, perbedaannya di sini adalah saya menjalankannya dengan satu nama pengguna yang dimasukkan secara spesifik.

Masuk akal bagi saya bahwa saya dapat menyalurkan inputnya dan menjalankannya melalui satu loop, tetapi saya melewatkan sesuatu.

Tolong bantu?


person user1681573    schedule 14.04.2017    source sumber


Jawaban (1)


Saya bisa menyelesaikannya sendiri.

Yang cukup membuat frustrasi, bagian nomor 1 adalah "Set-MSOLUserLicense" hanya menerima input saluran untuk UPN dari file teks, dan bukan CSV.

Kedua, untuk beberapa alasan aneh, ServicePlans yang saya coba nonaktifkan sepertinya tidak dikenali saat menggunakan tanda kutip ganda.

Inilah yang akhirnya saya dapatkan:

$ENTERPRISEPACK=New-MsolLicenseOptions -AccountSkuId company:ENTERPRISEPACK -DisabledPlans 'FLOW_O365_P2','POWERAPPS_O365_P2','RMS_S_ENTERPRISE'

Get-Content "C:\scripts\inputfiles\E3users.txt" | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $ENTERPRISEPACK

Dan, karena saklar -Verbose tidak berfungsi, saya menambahkan blok skrip untuk menghentikan pencatatan. Jadi, perintah dan blok logging terlihat seperti ini:

Get-Content "C:\scripts\inputfiles\E3users.txt" | foreach {Set-MsolUserLicense -UserPrincipalName $_ -LicenseOptions $ENTERPRISEPACK -ea silentlycontinue -ev +action


# if there were no errors, write to the screen and file what was done
if($action.count -eq 0)
{
 Write-Host -ForegroundColor Green "Changed license for" $_
 Write-output $_ | Out-File C:\scripts\OutputFiles\FeatureDisable\logs\LicenseSuccesslogEnterprise04072017.csv -Append
}
# if the initial command failed, then write to a failure logfile 
if($action.count -eq 1)
{
 Write-Host -foreground Yellow "Failed to change license for" $_
 Write-Output $_ | out-file C:\scripts\OutputFiles\FeatureDisable\logs\LicenseFailurelogEnterprise04072017.csv -Append
}
Clear-Variable -Name action}
person user1681573    schedule 14.04.2017