none
Manipulace s AD

    Dotaz

  • Dobrý den,

    potřebuju napsat skript, který bude pravidelně kontrolovat účty uživatelů v AD a odemykat je v případě, že budou zamčené.

    Otázka zní: je možné takový skript pustit z PC, které není v doméně?

    Např. často uváděný skript:

    Const ADS_UF_ACCOUNTDISABLE = 2
     
    Set objUser = GetObject _
    ("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")
    intUAC = objUser.Get("userAccountControl")
     
    objUser.Put "userAccountControl", intUAC OR ADS_UF_ACCOUNTDISABLE
    objUser.SetInfo

    Předpokládá se, že je puštěný na počítači, který je členem domény?

    Díky. Martd


    mart

    26. dubna 2012 6:41

Odpovědi

  • a jak mas PRESNE adresu LDAPu?

    Musis napr. takto:

        Set objUser = GetObject("LDAP://adresa.ldap.serveru.local/CN=user,OU=neco,OU=neco,DC=a,DC=b,DC=local")
        intUAC = objUser.Get("userAccountControl")
        MsgBox intUAC

    Konkretni skript pro vsechny uzivatele z OU:

    Set objUsers= GetObject("LDAP://DCXY.neco.com/OU=""Domain Users"",DC=neco,DC=com")
    for each user in ObjUsers
    	if user.class ="user" then MsgBox user.displayName
    next

    Pokud neprojde trik se shodnymi domenovymi a lokalnimi credentials uloz si domenovy login v control panelu nebo proste otevrenim \\adresa.ldap.serveru.local a potvrzenim ze se maji cred. ulozit

    MP




    27. dubna 2012 11:08
    Moderátor

Všechny reakce

  • 1. Zkuste skript spoustet bud pomoci planovace, kde zadate administratora ve tvaru domena\administrator, nebo rucne se stejnym tvarem specifikace. Pokud neuvedete v prihlasovacich udajich domenu, bude se bude skript provadet s prihlasovacimi udaji lokalniho administratora.

    2. Alternativne muzete pouzit vzdalene provedeni prikazu s nastroji ze Sysinternals.

    3. Take Powershell umoznuje vykonani prikazu na dalku

    M.

    26. dubna 2012 7:25
    Moderátor
  • Variantu 1 jsem zkusil, ale končí to chybou "Neznámé uživatelské jméno nebo heslo". Potíž bude asi v tom, že PC, ze kterého to pouštím, je v jiné doméně. Domény mezi sebou nemají vytvořený žádný vztah (bohužel to tak musí zůstat).


    mart

    27. dubna 2012 5:54
  • Zkus pod LOKALNIM uzivatelem ktery ma stejne jmeno i heslo jako existujici domenovy uzivatel.

    MP

    27. dubna 2012 10:47
    Moderátor
  • V takovém případě se skript pustí, ale pracovat s AD neumí.

    M.


    mart

    27. dubna 2012 10:54
  • a jak mas PRESNE adresu LDAPu?

    Musis napr. takto:

        Set objUser = GetObject("LDAP://adresa.ldap.serveru.local/CN=user,OU=neco,OU=neco,DC=a,DC=b,DC=local")
        intUAC = objUser.Get("userAccountControl")
        MsgBox intUAC

    Konkretni skript pro vsechny uzivatele z OU:

    Set objUsers= GetObject("LDAP://DCXY.neco.com/OU=""Domain Users"",DC=neco,DC=com")
    for each user in ObjUsers
    	if user.class ="user" then MsgBox user.displayName
    next

    Pokud neprojde trik se shodnymi domenovymi a lokalnimi credentials uloz si domenovy login v control panelu nebo proste otevrenim \\adresa.ldap.serveru.local a potvrzenim ze se maji cred. ulozit

    MP




    27. dubna 2012 11:08
    Moderátor
  • Tenhle příklad mi funguje. Vrací číslo.

    Děkuji, budu bádat dál.

    M.


    mart

    27. dubna 2012 11:28
  • Neni kde badat, myslim, ze to, na co ses ptal, je vyresene a na priladech oddemonstrovane:

    takovy script lze (uspesne) spusti na nedomenovem pocitacit:
    - pokud (spravne!) explicitne zadas k jakemu LDAP serveru se ma pripojovat
    - jsi schopen sek tomuto serveru autentikovat ulozenym domenovym nebo shodnym lokalnim jmenem a heslem

    MP


    27. dubna 2012 11:32
    Moderátor
  • Ano, můj dotaz je tímto vyřešený. Ještě jednou díky všem.

    mart

    27. dubna 2012 11:34
  • NZ, prosim oznac odpoved (prispevek/prispevky ktery vedl/y k vyreseni problemu).

    Dik

    MP



    27. dubna 2012 11:38
    Moderátor