我有一个只包含两列的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,那将非常感激。
答案 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用户对象是否存在