Как я могу улучшить этот скрипт PowerShell для обновления AD? - PullRequest
0 голосов
/ 06 сентября 2018

Я написал этот скрипт Powershell несколько лет назад для обновления AD из файла CSV. Я хотел бы попытаться оптимизировать, чтобы работать быстрее и без ошибок ... но я не уверен, с чего начать / что могло бы улучшить его. Любые предложения приветствуются.

$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)}
}

1 Ответ

0 голосов
/ 07 сентября 2018

Только мои 2цента стоят на этой теме ... многие могут и будут иметь разные взгляды на это. Так что всегда приятно ждать других мнений.

Что касается базового запроса ...

Я хотел бы попытаться оптимизировать работу быстрее и без ошибок

Это очень субъективная вещь.

  1. Что вы подразумеваете под оптимизацией?
  2. Что вы имеете в виду, говоря, что он работает быстрее?

Почему вы чувствуете, что это не оптимально? Почему вы чувствуете, что это не достаточно быстро? Какие показатели вы использовали или с чем сравнивали?

Итак, вам нужно решить, что вышеизложенное значит для вас, а затем суметь выбрать маршрут, который работает. Потому что в зависимости от того, что вы делаете и как, это будет изменчиво.

Ссылки:

Как ускорить операции PowerShell над объектами AD

Сценарий выходного дня: методы улучшения скорости PowerShell

Медленный код: 5 лучших способов ускорить выполнение сценариев PowerShell

Кодирование скорости

Почему нельзя запускать циклы PowerShell быстро?

Все это, как говорится ...

Я не могу придумать причину, по которой вы бы дважды использовали Get-ADUser / Set-ADUser для одних и тех же данных получения, только ваш установщик отличается. Получите и установите один раз. Для больших наборов записей / данных циклы просто медленные. Помните, ADDS накладывает ограничения на количество записей, которые он будет возвращать за раз. Если вам нужно больше, чем по умолчанию, вам нужно изменить этот параметр / запрос AD. Если это большой набор записей, лучше разбить его на части и разбить, чем на параллельные операции с меньшим набором записей. Посмотрите, как это делается в parraller processing / workflows / runspaces.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...