Centrum Skryptów - Actice Directory

W jaki sposób mogę dodać adres e-mailowy do atrybutu proxyAddresses? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

W jaki sposób mogę dodać adres e-mailowy do atrybutu proxyAddresses?

Cześć, Skrypciarzu! W jaki sposób można dodać adres e-mailowy do atrybutu proxyAddresses, nie zastępując przy tym istniejących już atrybutów?

-- Witek

Cześć, Witku. Osobom które nie są za dobrze zaznajomione z atrybutem proxyAddresses (należeli tu do niedawna i Skrypciarze) wyjaśniamy: jest atrybut dodawany do Active Directory przez Microsoft Exchange; jest to po prostu alias umożliwiający rozpoznanie użytkownika programu Exchange przez system pocztowy innego typu. Wywołanie echa adresów proxy danego użytkownika spowoduje wyświetlenie listy typu:

NUMERIC:4257050743

sip:kenmyer@fabrikam.com

X500:/o=fabrikam/ou=APPS-WGA/cn=Xenix_Users/cn=kenmyer

X500:/o=fabrikam/ou=First Administrative Group/cn=Recipients/cn=kenmyer

x400:c=US;a=MCI;p=fab;o=northamerica;s=Myer;g=Ken;

X500:/O=fabrikam/OU=northamerica/cn=Recipients/cn=kenmyer

X400:c=US;a=finance;p=fabrikam;o=fabrikam;s=Myer;g=Ken;

x500:/o=fabrikam/ou=northamerica/cn=Recipients/cn=556899

smtp:kenmyer@fabrikam.com

SMTP:kenmyer@finance.fabrikam.com

Myślicie sobie zapewne, że straszne mnóstwo danych jak na jeden atrybut, ale to dlatego, że jest to atrybut wielowartościowy – zawierający kilka wartości. Dlatego też dzisiejszy problem jest taki trudny. Załóżmy, że chcemy dodać do listy proxyAddresses nowy adres – kenmyer@northamerica.fabrikam.com. Nie chcemy przy tym kasować starych adresów.

Większość użytkowników stwierdzi, że żaden problem, że nic prostszego, niż zmodyfikować atrybut Active Directory, np. takim skryptem:

Set objUser = GetObject _

    ("LDAP://atl-dc-1/CN=Ken Myer,OU=Finance,DC=fabrikam,DC=com")

objUser.proxyAddresses = kenmyer@northamerica.fabrikam.com

objUser.SetInfo

I co się stanie przy następnym wywołaniu echa adresów proxy Kena Myera? Lista wyglądać będzie tak:

kenmyer@northamerica.fabrikam.com

No i masz: skasowaliśmy wszystkie stare adresy, zastępując je jednym nowym. No I o to chodziło.

W jaki sposób można zatem dodać jedną wartość na końcu atrybutu wielowartościowego? To oczywiste: wystarczy użyć metody PutEx:

Const ADS_PROPERTY_APPEND = 3



Set objUser = GetObject _

    ("LDAP://cn=KenMyer,ou=Finance,dc=fabrikam,dc=com") 



objUser.PutEx ADS_PROPERTY_APPEND, "proxyAddresses", _

    Array("kenmyer@northamerica.fabrikam.com ")

PutEx to metoda interfejsu ADSI służąca właśnie do pracy z atrybutami wielowartościowymi; metoda ta udostępnia cztery różne opcje:

StałaWartośćOpis
ADS_PROPERTY_CLEAR1Zeruje wartość (lub wartości) podanego atrybutu.
ADS_PROPERTY_UPDATE2Zamienia wartości atrybutu na podane.
ADS_PROPERTY_APPEND3Dodaje nową wartość lub wartości do podanego atrybutu.
ADS_PROPERTY_DELETE4Usuwa wartość (lub wartości) podanego atrybutu.

Nie będziemy teraz zagłębiać się w opis tej metody; dodatkowe informacje znaleźć można w rozdziale poświęconym modyfikowaniu atrybutów wielowartościowych (j.ang.) w przewodniku Microsoft Windows 2000 Scripting Guide.

Wróćmy teraz do naszego skryptu. Chcemy dodać nową wartość do atrybutu proxyAddresses; w pierwszym wierszu skryptu definiujemy zatem stałą o nazwie ADS_PROPERTY_APPEND, ustalając jej wartość na 3:

Const ADS_PROPERTY_APPEND = 3

Łączymy się z kontem Kena Myera i wywołujemy metodę PutEx, podając trzy parametry:

  • Stałą ADS_PROPERTY_APPEND, instruującą skrypt, że nowa wartość ma zostać dodana do starych.
  • Nazwę atrybutu który chcemy zmodyfikować (proxyAddresses).
  • Wartość którą chcemy dodać (czyli nowy adres proxy).

Zwróćcie uwagę, że mimo iż dodajemy tylko jedną wartość, musimy podać ją w postaci tablicy; nasz kod wyglądać będzie tak:

objUser.PutEx ADS_PROPERTY_APPEND, "proxyAddresses", _

    Array("kenmyer@northamerica.fabrikam.com")

Tak z kolei wyglądać będzie echo adresów proxy Kena Myera:

kenmyer@northamerica.fabrikam.com 

NUMERIC:4257050743

sip:kenmyer@fabrikam.com

X500:/o=fabrikam/ou=APPS-WGA/cn=Xenix_Users/cn=kenmyer

X500:/o=fabrikam/ou=First Administrative Group/cn=Recipients/cn=kenmyer

x400:c=US;a=MCI;p=fab;o=northamerica;s=Myer;g=Ken;

X500:/O=fabrikam/OU=northamerica/cn=Recipients/cn=kenmyer

X400:c=US;a=finance;p=fabrikam;o=fabrikam;s=Myer;g=Ken;

x500:/o=fabrikam/ou=northamerica/cn=Recipients/cn=556899

smtp:kenmyer@fabrikam.com

SMTP:kenmyer@finance.fabrikam.com

Fajnie, nie?

Warto zaznaczyć, że nowy adres proxy pojawi się akurat na górze listy; nie jest tak łatwo ustalić kolejność poszczególnych wartości atrybutów wielowartościowych. To jednak nieważne – liczy się, że kenmyer@northamerica.fabrikam.com pojawia się w ogóle na liście.

 Do początku strony Do początku strony


Centrum Skryptów - Actice Directory