我想要运行的命令是:
Get-ADUser -Filter * -SearchBase "ou=test,dc=our,dc=domain,dc=edu" | Set-MsolUserLicense -AddLicenses ourorg:STANDARDWOFFPACK_IW_STUDENT
但是失败的回应是:
Set-MsolUserLicense:输入对象无法绑定,因为它不包含绑定所有必需参数所需的信息:ObjectId At line:1 char:111 Get-ADUser -Filter * -SearchBase“ou =测试学生,ou =学生,dc = campus,dc = org,dc = edu“| Set-MsolUserLicense<<<< -AddLicenses nwcu:STANDARDWOFFPACK_IW_STUDENT 单独地,这两个命令都有效.我可以选择OU中的所有用户,我也可以手动使用带有-UserPrincipalName的Set-MsolUserLicense命令来许可单个用户. 这是因为Get-ADUser没有像Set-MsolUserLicense那样返回ObjectID吗? Get-ADUser确实返回ObjectGUID.如果我在这里正确的轨道,有没有办法将这些一起映射到管道输入? 编辑:我知道这样做的流行方式涉及为此上传CSV文件,我知道我可以CSV导出这些用户,但我已经让它们在OU中如此干净整洁,所以我很想做如果可能的话,现在导入/导出. 提前致谢!
Get-ADUser | %{ Set-MSOLUserLicense -UserPrincipalName $_.UserPrincipalName }
我在这里创建了自己的答案,以解释我认为您在问题中描述的一个常见案例:您不希望将相同的许可选项应用于每个人.
A TechNet Blog对此事非常有帮助.出于数据泄漏的原因,您可能不希望财务团队访问SharePoint Online / OneDrive for Business,或者您可能有一个您不希望为Lync / Skype for Business启用的呼叫中心.
要获取有关租户的信息,请从顶部开始:
GET-MSOLAccountSku
这将返回您在租户中的许可证包.一些常见的SKU是ENTERPRISEPACK和DESKLESSPACK.这些将由yourorg列出:AccountSkuId下的LICENSEPACK.
请务必注意,当您通过PowerShell应用时,每个许可证包都可以禁用这些功能(类似地,您可以选择在管理中心中选中/取消选中选项框).
要创建此许可证选项子集,请创建新变量并利用New-MSOLLicenSEOptions cmdlet:
$LicOpt = New-MsolLicenSEOptions -AccountSkuId“yourorg:ENTERPRISEPACK”-DisabledPlans OFFICESUBSCRIPTION,MCOSTANDARD,SHAREPOINTWAC,SHAREPOINTENTERPRISE,RMS_S_ENTERPRISE
(上面的选项对应上面的截图,我相信你可以猜到我完全从配置脚本中删除了它.)
最后,我们可以将它与ForEach循环中的Set-MsolUserLicense联系起来:
$LicOpt = New-MsolLicenSEOptions -AccountSkuId "yourorg:ENTERPRISEPACK" -DisabledPlans OFFICESUBSCRIPTION,RMS_S_ENTERPRISE Get-ADUser | %{ Set-MsolUserLicense -UserPrincipalName $_.UserPrincipalName -AddLicenses "yourorg:ENTERPRISEPACK" -LicenSEOptions $LicOpt }
与往常一样,您的租户可能会有所不同.我希望我已经给你足够的信息来发现可用的选项并适当地应用!