使用用户名作为唯一标识符更新用户“描述”字段的PowerShell脚本

时间:2016-10-14 09:52:49

标签: powershell

我有一个只包含两列的CSV文件 - 用户名和说明。

如果用户的用户名在此CSV中,我想更新用户的Description字段。

这个伪代码类似于:

foreach( Row in CSV ) {
    if( Row[username] exists in AD ) {
        ThisADAccount[Description] = Row[description]
    }
}

但坦率地说我不知道​​如何在PowerShell中做到这一点!

此外,与此同时,我想通过设置E-mail来更新这些用户的username@domain.com字段。伪代码就是:

foreach( User in AD ) {
    ThisADAccount[E-mail] = ThisADACcount[Username] + "@domain.com"
}

只有当帐户的用户名在CSV文件中时才需要这样做,但是一次性实现这两个作业的扩展伪代码将是:

foreach( Row in CSV ) {
    if( Row[username] exists in AD ) {
        ThisADAccount[Description] = Row[description]
        ThisADAccount[E-mail] = ThisADACcount[Username] + "@domain.com"
    }
}

如果有人可以帮我将这个伪转换为正常工作的PowerShell,那将非常感激。

1 个答案:

答案 0 :(得分:1)

首先,您需要导入ActiveDirectory模块才能通过PowerShell在AD中编辑对象。接下来使用Import-CSV,请注意您需要更改-path-Delimiter参数以适合您的CSV。我还假设您的CSV列标题为(username,Description)。

Import-Module ActiveDirectory
$CSV = Import-Csv -Path 'T:\YourCSV.csv' -Delimiter ','

foreach( $Row in $CSV ) {
    if(Get-ADUser -LDAPFilter "(sAMAccountName=$($Row.username))") {
        Set-ADUser -Identity $Row.username `
                   -Description $Row.Description `
                   -EmailAddress "$($Row.username)@domain.com"
    }
}

您几乎已经使用PowerShell格式的正确循环,只需使用cmdlet Set-ADUser设置用户属性,Get-ADUser检查AD用户对象是否存在