กำลังพยายามตั้งค่าใบอนุญาตผู้ใช้ใน Office 365 ผ่าน Powershell

ฉันมีผู้เช่า Office 365 ที่มีแผนสิทธิ์การใช้งานหลายแผน และฉันกำลังพยายามปิดใช้งานคุณลักษณะบางอย่างของแผน E3 จำนวนมากผ่าน Powershell

นี่คือสิ่งที่ฉันมี:

$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}

ปัญหาที่ฉันพบคือฉันสามารถยืนยันได้ว่ามีผู้ใช้อยู่ และนำเข้า CSV ว่าถูกต้อง แต่ฉันได้รับข้อผิดพลาดสำหรับผู้ใช้ทุกคนใน CSV ของฉัน:

Set-MsolUserLicense : User Not Found.  User: .

สิ่งนี้ค่อนข้างน่าหงุดหงิด เนื่องจากฉันต้องการปิดการใช้งานคุณสมบัติสำหรับผู้ใช้ E3 ทั้งหมดเท่านั้น (ซึ่งจะอยู่ใน CSV ของฉัน) และคำสั่งนี้จะทำงานเมื่อคุณเรียกใช้เป็น:

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

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

อย่างที่คุณเห็น ความแตกต่างที่นี่คือฉันกำลังเรียกใช้โดยป้อนชื่อผู้ใช้เดียวโดยเฉพาะ

มันสมเหตุสมผลสำหรับฉันที่ฉันสามารถไพพ์มันอินพุตและรันผ่านลูปได้ แต่ฉันขาดอะไรบางอย่างไป

กรุณาช่วย?


person user1681573    schedule 14.04.2017    source แหล่งที่มา


คำตอบ (1)


ฉันสามารถคิดเรื่องนี้ได้ด้วยตัวเอง

น่าหงุดหงิดพอสมควร ชิ้นส่วนที่ 1 คือ "Set-MSOLUserLicense" ยอมรับเฉพาะอินพุตไปป์ไลน์สำหรับ UPN จากไฟล์ข้อความ ไม่ใช่ CSV

ประการที่สอง ด้วยเหตุผลแปลก ๆ บางประการ ServicePlans ที่ฉันพยายามปิดการใช้งานดูเหมือนจะไม่ได้รับการยอมรับเมื่อใช้เครื่องหมายคำพูดคู่

นี่คือสิ่งที่ฉันได้:

$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

และเนื่องจากสวิตช์ -Verbose ไม่ทำงาน ฉันจึงเพิ่มบล็อกสคริปต์เพื่อเริ่มการบันทึก ดังนั้น คำสั่งและบล็อกการบันทึกจะมีลักษณะดังนี้:

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