用于更新用户的PowerShell脚本'&引用;说明“;以用户名作为唯一标识符的字段

用于更新用户的PowerShell脚本'&引用;说明“;以用户名作为唯一标识符的字段,powershell,Powershell,我有一个CSV文件,只包含两列-用户名和描述 如果用户的用户名在此CSV中,我想在广告中更新用户的说明字段 这方面的伪代码类似于: foreach( Row in CSV ) { if( Row[username] exists in AD ) { ThisADAccount[Description] = Row[description] } } 但坦率地说,我不知道如何在PowerShell中做到这一点 此外,同时,我想通过设置username@domain.

我有一个CSV文件,只包含两列-用户名和描述

如果用户的用户名在此CSV中,我想在广告中更新用户的
说明
字段

这方面的伪代码类似于:

foreach( Row in CSV ) {
    if( Row[username] exists in AD ) {
        ThisADAccount[Description] = Row[description]
    }
}
但坦率地说,我不知道如何在PowerShell中做到这一点

此外,同时,我想通过设置
username@domain.com
。这方面的伪代码是:

foreach( User in AD ) {
    ThisADAccount[E-mail] = ThisADACcount[Username] + "@domain.com"
}
foreach( Row in CSV ) {
    if( Row[username] exists in AD ) {
        ThisADAccount[Description] = Row[description]
        ThisADAccount[E-mail] = ThisADACcount[Username] + "@domain.com"
    }
}
仅当帐户的用户名在CSV文件中时才需要执行此操作,但是,为了一次性完成这两项工作,扩展的伪代码将是:

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

如果有人能帮助我将此伪代码转换为工作的PowerShell,我将不胜感激。

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


对于
PowerShell
,循环的格式几乎是正确的。您只需使用cmdlet
Set-ADUser
设置用户属性,然后
Get-ADUser
检查广告用户对象是否存在。

差不多了,Richard-但不完全是!不过我觉得你很接近。我认为,您的代码中唯一需要更改的是电子邮件。我想使用用户自己的用户名更新用户的电子邮件,例如,如果他们在AD中的用户名是
j6test1
,我想将他们的电子邮件更改为
j6test1@ashingtonhigh.org
。我的电子表格不包含任何关于电子邮件的信息。@dunc我已经更新了我的答案,如果用户不存在,我还看到了一个错误。给我一分钟,我会修好的。干得好@Richard,谢谢。当你解决了这个问题,请告诉我,我会给你答案的。谢谢你,理查德,太棒了。答案是肯定的。如果我想同时更新
Office
字段,那就是
-Office$Row。officeinmycsv
的列名是什么?是的,如果您想看到所有其他选项运行命令
Help Set ADUser-full
,那就行了。