如何从 CSV 更改 AD 中的多个电话号码

Posted

技术标签:

【中文标题】如何从 CSV 更改 AD 中的多个电话号码【英文标题】:How to change multiple telephone numbers in AD from a CSV 【发布时间】:2018-08-03 15:01:23 【问题描述】:

大家早上好,

我有一个用户列表(大约 200 个 samAccountName),AD 中唯一需要更新的字段是电话号码字段。示例用户 John Smith 电话号码是 44444,需要更改为 12345。我猜 csv 文件将包含 samAccountName 的列,第二列将是电话号码,这将是要覆盖的号码列表用户当前号码在 AD 中。

我在想我可以使用@Henrik Stanley Mortensen 的脚本并对其进行修改,但不确定要更改哪些字段。这是我第一个问题的网址....

How to edit only the Firstname (givenName) of multiple users and import with csv

【问题讨论】:

请向我们展示您迄今为止所做的尝试。您提到的脚本是一个很好的起点。 SO 不是其他人为您编写代码的地方。就 PowerShell 脚本和 Active Directory 管理而言,您要问的是一项非常简单的任务。如果您发现自己无法对问题提出至少第一次尝试,我强烈建议您阅读所涉及的两件事或聘请某人为您完成工作。 不要刻薄。如果我知道该怎么做,我不会问这个问题。我可以手动完成,虽然这没什么大不了的。我只是好奇它是否可以自动化。我打算在圣诞节假期学习powershell,但希望这里有人可以帮助解决这个问题。 到目前为止,我已尝试修改此 Import-Csv .csv | ForEach-Object Set-ADUser -Identity $_.samAccountName -Replace @Mobile=$_.MobilePhone 到这个 Import-Csv c:\Adobe\users.csv | ForEach-Object Set-ADUser -Identity $_.samAccountName -Replace @"Telephone number"=$_.telephoneNumber 但出现错误 我能够让它工作我尝试了这个 Import-Csv c:\Adobe\users.csv | ForEach-Object Set-ADUser -Identity $_.samAccountName -Replace @telephoneNumber=$_.telephoneNumber 并且成功了..... 【参考方案1】:

首先让我说我同意堆栈不是代码生成站点。如果您有一点代码可以显示您尝试过的内容,那将会有很长的路要走。即使它是可怕的社区中的其他人也会对你感到同情和同情而不是消极。其次,请去亚马逊购买“在一个月的午餐中学习 Powershell”这本书,这将帮助你很多,让你的基础知识打下来。真正容易阅读。

https://www.amazon.com/Learn-Windows-PowerShell-Month-Lunches/dp/1617294160/ref=sr_1_3?ie=UTF8&qid=1533311287&sr=8-3&keywords=powershell+books

好的,现在离开我的肥皂盒。因此,我创建了一个名为 updatetelphones.csv 的 csv,并将其放在桌面上的 C:\temp 文件夹中。它有两列,一列名为 SamAccountName,另一列名为 TelephoneNumber。注意没有空格。使用 powershell,我们希望将其导入到变量中,然后遍历每个项目并为用户设置电话号码。

$UsersToUpdate = import-csv -Path "C:\temp\updatetelephones.csv"

foreach($User in $UsersToUpdate)

    Set-ADUser -Identity $User.SamAccountName -OfficePhone $User.TelephoneNumber -WhatIf    

以上是powershell代码。现在仔细查看我的 set-aduser 命令的末尾,我有一个 -whatif。任何时候您对 AD 进行更改,我建议您首先使用 -whatif 测试您的脚本。这会模拟更改,但不会进行任何更改,因此您可以确认它是准确的。所以用它来测试你的身边。验证后删除“-whatif”并运行以实际进行更改。和平与快乐的PowerShell学习!

【讨论】:

非常感谢您的回复,非常感谢,一定会购买您提到的圣诞假期阅读的书。我现在要重新阅读您的答案,看看我是否理解所有内容.... 听起来不错! PS我与那本书没有任何关系。我让我所有的系统管理员都读到我雇佣的并且帮了我很多忙。 嘿,JMill,我刚刚测试了您的脚本,它也可以工作。再次感谢您! @jwalk_pv2001 也不确定您使用的是 powershell 命令提示符还是 ise,但如果您不使用 ise,请使用它来创建您的 powershell 脚本。 ISE 已安装在您的计算机上,并且更加友好。 wzup @JMill 是的,当你说 -Whatif 语句用于模拟脚本时,我正在使用 ISE 测试脚本然后运行脚本问题,这是否意味着在我运行脚本然后它带我回到提示,没有错误,这意味着脚本很好,然后我可以删除 -Whatif 语句??【参考方案2】:

很奇怪,我使用telephonenumber作为Get-ADUser属性,而OfficePhone作为参数来设置telephonenumber属性

Set-AdUser -Identity $user.SID -Credential $credential -OfficePhone $vp_telephonenumber -Server DC2.abc.com

【讨论】:

以上是关于如何从 CSV 更改 AD 中的多个电话号码的主要内容,如果未能解决你的问题,请参考以下文章

SQL Select CASE-WHEN - 如何从电话号码中删除格式

如何将多个表中的电话号码插入mysql中的单个联系人表?

为啥表格里电话号码存为CSV的格式后变成1.83E+10

如何从android中的给定电话号码获取电话号码类型标签

如何从 csv 文件中读取数据并将其存储在数据库中?弹簧靴

从电话号码获取 Lync 用户