Powershell: ไปป์เอาต์พุตของ Get-ADUser ไปยัง Set-MsolUserLicense

ฉันยังใหม่กับ Powershell และฉันติดอยู่กับการพยายามคิดสิ่งนี้ เรากำลังย้ายไปยัง Office 365 และเป็นเรื่องที่น่าปวดหัว ไม่จำเป็นต้องมาจาก Microsoft หรือผู้ให้บริการของเรา แต่เรามีความ 'สนุก' มากมายในการทำให้สิ่งนี้ทำงานตามใจเรา

ฉันมี CSV ของผู้ใช้ที่ฉันต้องลบสิทธิ์การใช้งานของพวกเขาใน O365 ออกจากผลิตภัณฑ์หนึ่ง และให้สิทธิ์การใช้งานอีกครั้งสำหรับผลิตภัณฑ์อื่น ฉันกำลังพยายามทำสิ่งนี้ในฐานะ 'เรือเดินสมุทร' สองลำและฉันก็หลงทาง นี่คือสิ่งที่ฉันมี:

Import-Csv "C:\Users\myuser\Desktop\convert.csv" | ForEach-Object {Get-ADUser -Identity $_.user | select UserPrincipalName | Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -RemoveLicenses "mycorp:ENTERPRISEDESKLESS"}

CSV มีส่วนหัวเป็น 'ผู้ใช้' และบันทึกผู้ใช้บางส่วนเป็นเพียงชื่อบัญชี ถ้าฉันตรวจสอบคำสั่งจนถึงเอาท์พุตของฟังก์ชัน Select ทุกอย่างทำงานได้อย่างถูกต้อง มันเป็นการไพพ์ของเอาท์พุตนั้นไปยัง Set-MsolUserLicense ที่ไม่ทำงาน


person Andrew    schedule 27.04.2016    source แหล่งที่มา


คำตอบ (1)


ฉันไม่มีวิธีทดสอบในขณะนี้ แต่ควรใช้งานได้เช่นนี้

Import-Csv "C:\Users\myuser\Desktop\convert.csv" | ForEach-Object {Get-ADUser -Identity $_.user | Set-MsolUserLicense -RemoveLicenses "mycorp:ENTERPRISEDESKLESS"}

ต่อข้อมูลช่วยเหลือสำหรับ Set-MsolUserLicense

-UserPrincipalName <string>
    The user ID of the user to update.

    Required?                    true
    Position?                    named
    Default value                
    Accept pipeline input?       true (ByPropertyName)
    Accept wildcard characters?  false

พารามิเตอร์ UserPrincipalName ยอมรับอินพุตจากไปป์ไลน์และ ByPropertyName ดังนั้นเนื่องจาก Get-ADUser จะจัดเตรียมคุณสมบัติของชื่อนั้นให้คุณเมื่อคุณไพพ์ไปที่ Set-MsolUserLicense จึงควรใช้ค่าที่ถูกต้องโดยอัตโนมัติ

person Martin Lhotsky    schedule 27.04.2016
comment
นั่นดูเหมือนจะได้ผล ฉันยังคงเห็นข้อผิดพลาดเกี่ยวกับใบอนุญาตที่ไม่ถูกต้อง แต่ดูเหมือนว่าจะทำการเปลี่ยนแปลงโดยไม่คำนึงถึง ขอบคุณ! - person Andrew; 28.04.2016