我对Powershell很新,而且我一直试图想出这个。我们正在迁移到Office 365,这一直是一个令人头痛的问题,不一定是来自微软或我们的提供商,但我们已经有很多“乐趣”让这个对我们有利。
我有一个用户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的管道,它不起作用。
答案 0 :(得分: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的输入,因此当您将其传递给Set-MsolUserLicense时,Get-ADUser将为您提供该名称的属性,它应该能够自动使用正确的值。