Powershell:将Get-ADUser的输出管道输出到Set-MsolUserLicense

时间:2016-04-27 21:19:24

标签: powershell office365

我对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的管道,它不起作用。

1 个答案:

答案 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将为您提供该名称的属性,它应该能够自动使用正确的值。