2015-06-22 1 views
0

На работе у нас появился целый ряд телефонных номеров. Это означает, что каждый номер звонка изменяется. Это необходимо отразить в нашем Active Directory для легкого доступа и других зависимостей. Существует простой файл excel, который включает следующие атрибуты (phonenumber) (расширение) (первое имя). Расширение можно удалить, так как оно включено в основной номер, так что это не важно. К сожалению, исходный файл не содержит UPN.Массовое изменение индивидуального атрибута в Active Directory из исходных данных

Я рассмотрел варианты, чтобы сделать это, была предложена целая куча here. Тем не менее, все те, которые могут сделать то, что нам нужно, основаны на установленном программном обеспечении. Однако это не вариант на нашем сервере.

Поэтому мой вопрос: есть ли способ массового редактирования всего в команде promt или powershell? Я хотел бы сделать что-то подобное, но потом что-то для уникальных атрибутов для определенных пользователей;

get-aduser -filter { city -like 'Glitter*' } | set-aduser -city 'Las Vegas' -PostalCode 89123 –PassThru 

(reference)

+0

Имя и фамилия не гарантированы. Вы счастливы, полагая, что они есть? Я догадываюсь, что образец был скопирован откуда-то, так как вы не пытаетесь изменить город или почтовый индекс – Matt

+0

Да, вам определенно нужно иметь UPN в этом файле – Vesper

+0

Как вы можете видеть, я ссылаюсь на то, откуда я получил почтовый индекс. Причина, по которой я опубликовал это, - это то, что я могу запустить на сервере. Но это действительно другое, потому что нужна индивидуальная информация. Отображаемое имя уникально, у одного нет одинакового общего имени. Но для экспорта имен UPN, а затем добавить его в файл excel и исключить несуществующие имена, потребуется еще больше времени, чем можно вручную их изменить. На данный момент я говорю о 100 записях, больше за ними последует. – Ircghost

ответ

1

Предположим, что ваш исходный файл установлен, как это в вашем вопросе, это должно быть хорошее начало для того, что вам нужно. Преобразуйте исходный файл в csv, чтобы сохранить некоторую головную боль. Это предполагает, что первая строка равна first lastname,phonenumber,extension. Заказ не имеет значения.

# Collect the source data as a powershell object we can process in a loop 
$list = Import-CSV "C:\temp\sourcedata.csv" 

# Process each user individually 
ForEach($user in $list){ 
    # Get the user matching the display name 
    $results = Get-ADUser -filter "DisplayName -eq '$($user."First LastName")'" 

    # If a user was returned set the phone number 
    If($results){ 
     $results | Set-ADUser -OfficePhone $user.phonenumber -WhatIf 
    } Else { 
     Write-Warning "$($user.'First LastName') not found" 
    } 
} 

Мы используем Get-ADUser, чтобы найти «один» пользователь и внести изменения, основанные на записи в исходном файле. Вы можете оставить -Whatif там для тестирования. PowerShell расскажет вам, что он редактирует, чтобы вы могли почувствовать, что происходит. Мы принимаем -OfficePhone - атрибут, который вы обновляете.

+0

Похоже, он действительно может работать. Отчитается после некоторых тестов! – Ircghost

+0

@Ircghost проверить мое обновление. Забыл упомянуть о вашем исходном файле. – Matt

Смежные вопросы