如何仅编辑多个用户的名字 (givenName) 并使用 csv 导入
How to edit only the Firstname (givenName) of multiple users and import with csv
如果我有一个用户列表,其中所有用户的 samAccountName 都是数字示例,745744、745746 等……。我一直在寻找可以完成以下任务的 powershell 脚本:
- 先在用户面前放一个不带引号的“XX”name/givenname
- 如果我有所有用户 samAccountName 的列表,请让脚本从 csv 文件导入用户列表。
在 excel 中只有一列的 samAccountName 足以用于 csv,还是我还需要在 csv 中包含所有用户 givenName?示例 A 列 samAccountName,B 列 Firstname??
例如 givenName 是 JOAQUIN,我需要名字是 XXJOAQUIN。我必须为大约 500 个用户执行此操作,而我们现在正在手动执行此操作,因此我唯一需要更改的是在用户 givenNames 之前添加“XX”……
先谢谢大家了。
如果您的 CSV 文件的第一列是 samAccountName,您可以这样做。
$Users = Import-CSV "Users.csv"
Foreach($User in $Users){
$ADUser = Get-ADUser $User.samAccountName
$ADUser.GivenName = "XX$($ADUser.GivenName)"
Set-ADUser -Instance $ADUser
}
如果你是搜索数字用户,你可以在文档中查找使用 Get-ADUser
来获取所有用户,并使用 foreach
循环来评估它是否是数字,并且设置账号。
如果您的 CSV 文件仅包含一个 header 和 samAccountName
后跟 samAccountNames,如下所示:
samAccountName
745744
745746
那你就可以用下面这段代码,把路径改成你用户的csv文件的路径。
这可以做得更短,并更好地使用管道来减少代码,但这会工作得很好。
$users = Import-Csv -Path .\users.csv
foreach($user in $users) {
$obj = Get-ADUser -Identity $user.samAccountName
Set-ADUser -Identity $user.samAccountName -GivenName ("xx" + $obj.GivenName)
}
您还可以将输出直接从 Get-ADUser
传送到 Set-ADUser
,如下所示:
$users = Import-Csv -Path .\users.csv
foreach($user in $users) {
Get-ADUser -Identity $user.SamAccountName | % {Set-ADUser -Identity $_.SamAccountName -GivenName ("xx" + $_.GivenName)}
}
另一种方式是:
$users = Import-Csv -Path .\users.csv
foreach($user in $users) {
Set-ADUser -Identity $user.SamAccountName -GivenName ("xx" + $(Get-ADuser -Identity $user.SamAccountName).GivenName)
}
如果我有一个用户列表,其中所有用户的 samAccountName 都是数字示例,745744、745746 等……。我一直在寻找可以完成以下任务的 powershell 脚本:
- 先在用户面前放一个不带引号的“XX”name/givenname
- 如果我有所有用户 samAccountName 的列表,请让脚本从 csv 文件导入用户列表。
在 excel 中只有一列的 samAccountName 足以用于 csv,还是我还需要在 csv 中包含所有用户 givenName?示例 A 列 samAccountName,B 列 Firstname??
例如 givenName 是 JOAQUIN,我需要名字是 XXJOAQUIN。我必须为大约 500 个用户执行此操作,而我们现在正在手动执行此操作,因此我唯一需要更改的是在用户 givenNames 之前添加“XX”……
先谢谢大家了。
如果您的 CSV 文件的第一列是 samAccountName,您可以这样做。
$Users = Import-CSV "Users.csv"
Foreach($User in $Users){
$ADUser = Get-ADUser $User.samAccountName
$ADUser.GivenName = "XX$($ADUser.GivenName)"
Set-ADUser -Instance $ADUser
}
如果你是搜索数字用户,你可以在文档中查找使用 Get-ADUser
来获取所有用户,并使用 foreach
循环来评估它是否是数字,并且设置账号。
如果您的 CSV 文件仅包含一个 header 和 samAccountName
后跟 samAccountNames,如下所示:
samAccountName
745744
745746
那你就可以用下面这段代码,把路径改成你用户的csv文件的路径。 这可以做得更短,并更好地使用管道来减少代码,但这会工作得很好。
$users = Import-Csv -Path .\users.csv
foreach($user in $users) {
$obj = Get-ADUser -Identity $user.samAccountName
Set-ADUser -Identity $user.samAccountName -GivenName ("xx" + $obj.GivenName)
}
您还可以将输出直接从 Get-ADUser
传送到 Set-ADUser
,如下所示:
$users = Import-Csv -Path .\users.csv
foreach($user in $users) {
Get-ADUser -Identity $user.SamAccountName | % {Set-ADUser -Identity $_.SamAccountName -GivenName ("xx" + $_.GivenName)}
}
另一种方式是:
$users = Import-Csv -Path .\users.csv
foreach($user in $users) {
Set-ADUser -Identity $user.SamAccountName -GivenName ("xx" + $(Get-ADuser -Identity $user.SamAccountName).GivenName)
}