繁体   English   中英

如何改善此AD更新Powershell脚本?

[英]How can I improve this AD update powershell script?

多年前,我编写了此Powershell脚本,用于从CSV文件更新AD。 我想尝试优化以更快地运行并且没有错误...但是我不确定从哪里开始/有什么可以改善它的。 欢迎任何建议。

$users = Import-Csv -Path C:\Scripts\Employees.csv

foreach ($user in $users) {
Get-ADUser -ErrorAction SilentlyContinue -Filter "EmployeeID -eq '$($user.EmployeeID)'" -Properties * -SearchBase "ou=Logins,dc=domain,dc=com" |
    Set-ADUser -EmployeeNumber $($user."EmployeeNumber") -Department $($user."Department") -Title $($user."Title") -Office $($user."office") -StreetAddress $($user."Address") -City $($user."City") -State $($user."State") -PostalCode $($user."PostalCode") -Company $($user."Company") -OfficePhone $($user."telephone") -Mobile $($user."cell") -Fax $($user."Fax")

Get-ADUser -ErrorAction SilentlyContinue -Filter "EmployeeID -eq '$($user.EmployeeID)'" -Properties * -SearchBase "ou=Logins,dc=domain,dc=com" |
    Set-ADUser -Replace @{ExtensionAttribute1=($user.custom1); ExtensionAttribute2=($user.custom2); ExtensionAttribute3=($user.custom3); ExtensionAttribute4=($user.custom4)}
}

就这个话题而言,只有我的2美分价值...许多人可以而且会对此有不同的看法。 因此,总是很高兴等待其他意见。

至于您的基准查询...

我想尝试优化以更快地运行并且没有错误

这是非常主观的事情。

  1. 您所说的优化是什么意思?
  2. 您是什么意思使其更快运行?

为什么您觉得它不是最佳的? 您为什么觉得速度不够快? 您使用了哪些指标或将其与哪些指标进行了比较?

因此,您需要确定以上内容对您意味着什么,然后才能采用可行的路线。 因为这取决于您的操作以及操作方式,所以它会很流畅。

参考文献:

如何加快对AD对象的PowerShell操作

周末脚本:PowerShell速度改进技术

慢速代码:使PowerShell脚本运行更快的5种方法

编码速度

为什么PowerShell无法快速运行循环?

这么说...

我不能提出一个原因,为什么您要为相同的getter数据使用两次Get-ADUser / Set-ADUser,只是您的setter不同。 进行获取并设置一次。 对于大型记录集/数据,循环速度很慢。 请记住,ADDS对一次将返回的记录数施加了限制。 如果您追求的不是默认值,则需要更改该广告设置/请求。 如果它是一个大的记录集,最好对它进行分块和拆分,而不要对一个较小的记录集进行并行操作。 看一下Parraller处理/工作流程/运行空间中的操作方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM