Set-AdProperty

Сегодня из общения с Пашей Дугаевым «узнал» что людям «иногда» бывает нужно задать из PowerShell атрибут какого нибудь объекта в Active Directory🙂 . Процесс не сложный, но в PowerShell 1.0 не очень «красивый». Поэтому для удобного использования стоит завернуть его в такую вот функцию:

 

function Set-ADProperty ($DN, $Property, $Value)
{
	$Obj = [adsi]"LDAP://$DN"
	$Obj.psbase.InvokeSet($Property,$Value)
	$Obj.psbase.CommitChanges()
}

Функцию можно поместить в профиль, для того чтобы она была всегда под рукой. Ну или скопипастить прямо в командную строку если на один раз. Использование:

Set-ADProperty "CN=Василий Гусев,OU=Юзеры,DC=Домен,DC=Local" "displayName" "Гусев Василий"

PS: AD Cmdlets не требует😉

комментариев 10 to “Set-AdProperty”

  1. Pavel Nagaev Says:

    Мощно!

  2. Xaegr Says:

    Паш, не подкалывай🙂

  3. AD Domains « PowerShell и другие скрипты Says:

    […] Рубрика: Learn, PowerShell, Practice, Scripting, Tips — Xaegr @ 15:42 Продолжая тему Active Directory и PowerShell, приведу несколько команд […]

  4. Tushka Says:

    Интересно
    а например, если нужно у юзера поменять свойство publicdelegates

    то эта функция удалит все имеющиеся записи этого свойства и задаст указанное — т.е. заменит

    а вот как сделать чтобы не заменяло, а добавляло?

  5. Xaegr Says:

    2 Tushka: Сейчас нет возможности проверить, но вроде должно сработать так:
    Get-ADProperty ($DN, $Property)
    {
    $Obj = [adsi]»LDAP://$DN»
    $Obj.$Property
    }

    $Temp = Get-ADProperty $MyDN «PublicDelegates»

    $Temp += «Новое значение»

    Set-ADProperty $MyDN «PublicDelegates» $Temp

  6. Tushka Says:

    у меня не заработало
    Мне кажется причина может быть в этом:
    «To add multiple values, use the AddRange method.»
    http://msdn.microsoft.com/en-us/magazine/cc188700.aspx

    но как это прикрутить в Set-ADProperty — пока не могу понять

    Я заранее прошу прощения, ибо только начинаю исследовать PS

  7. Tushka Says:

    так же народ использует PutEx
    но у меня это почему-то не заработало в foreach

  8. Xaegr Says:

    Не на чем поэксперементировать… Попробуйте так:
    $obj.PublicDelegates.AddRange(@(«222″,»333»))

  9. Tushka Says:

    в общем таки получилось сделать PutEx’ом

    function Set-ADProperty ($DN, $property, $value) {$Obj = [adsi]»LDAP://$DN»; $Obj.putex(3, «$property», @(«$value»)), $obj.setinfo()}

    Большое Вам спасибо Xaegr — вы научили меня общаться с функциями ;о)

  10. Xaegr Says:

    2 Tushka: Всегда рад помочь🙂


Обсуждение закрыто.

%d такие блоггеры, как: