Problema de permissão do PowerShell / ADSI com tarefas relacionadas ao AD

1

Estou trabalhando em um script PS que fornecerá aos usuários uma GUI & alguns botões para clicar para executar algumas tarefas básicas, como desbloquear uma conta, habilitar / desabilitar, alterar senhas e matar processos / desconectar o usuário. As partes que NÃO funcionam são: ativar / desativar usuários e alterar senhas.

Primeiro de tudo, tudo funciona como um administrador de domínio, mas eu não posso fazer do usuário um administrador de domínio, então, por favor, não sugira que:)

Aqui está a parte da alteração da senha:

    $name = "osman"
    $Searcher = [ADSISearcher]"(sAMAccountName=$Name)"
    $Results = $Searcher.FindOne()
    $password = "pezevenk@321"

    [string]$adspath = $Results.Properties.adspath
    $enable = [ADSI]$adspath
    $enable.psbase.invoke("SetPassword", $password)
    $enable.psbase.CommitChanges()

O erro é bem genérico:

Exception calling "Invoke" with "2" argument(s): "Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))"
At line:14 char:13
+             $enable.psbase.invoke("SetPassword", $password)

Agora, obviamente, tentei dar permissões adequadas ao usuário antes mesmo de tentar: o usuário com o qual estou executando tem os direitos "redefinir senha" e "alterar senha" delegados nos "Usuários" pasta no AD que inclui todos os usuários.

Existe alguma maneira de ver exatamente qual permissão estou perdendo? Vocês podem pensar em mais alguma coisa que seja necessária?

Editar: estas são as permissões para a UO:

"CN=Users,DC=domainname,DC=root,DC=com","All","User","ReadProperty, GenericExecute","Descendents","00000000-0000-0000-0000-000000000000","bf967aba-0de6-11d0-a285-00aa003049e2","InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","Pwd-Last-Set","User","ReadProperty, WriteProperty","Descendents","bf967a0a-0de6-11d0-a285-00aa003049e2","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","Lockout-Time","User","WriteProperty","Descendents","28630ebf-41d5-11d1-a9c1-0000f80367c1","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Account-Control","User","WriteProperty","Descendents","bf967a68-0de6-11d0-a285-00aa003049e2","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Force-Change-Password","User","ExtendedRight","Descendents","00299570-246d-11d0-a768-00aa006e0529","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Change-Password","User","ExtendedRight","Descendents","ab721a53-1e2f-11d0-9819-00aa0040529b","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","False","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Change-Password","User","ExtendedRight","Descendents","ab721a53-1e2f-11d0-9819-00aa0040529b","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","True","ContainerInherit","InheritOnly"
"CN=Users,DC=domainname,DC=root,DC=com","User-Force-Change-Password","User","ExtendedRight","Descendents","00299570-246d-11d0-a768-00aa006e0529","bf967aba-0de6-11d0-a285-00aa003049e2","ObjectAceTypePresent, InheritedObjectAceTypePresent","Allow","domainname\osman","True","ContainerInherit","InheritOnly"
    
por user2629636 24.03.2015 / 21:40

3 respostas

1

Você pode editar o AD.msc original e adicionar a funcionalidade que desejar.
Aqui estão alguns links: Console AD personalizado < br> Redefinição de senha com o botão direito
Right Clique em Unlock
Adicionar colunas adicionais

    
por 25.03.2015 / 09:16
0

A única maneira que eu conheço para um usuário definir sua própria senha é este comando. Set-ADAccountPassword -Identity $ Name -Reset -NewPassword (ConvertTo-SecureString $ Password -AsPlainText -force) -PassThru Ele solicitará a senha atual ou, se você deixar NewPassword, solicitará as duas. Se você está tentando dar uma pessoa do tipo helpdesk, esses direitos garantem que você não está testando em uma conta administrativa, pois eles nunca poderão alterar a senha em um usuário administrativo, eles estão protegidos com o atributo adminCount = 1. pessoal do help desk para alterar as senhas no ADUC com permissão de alteração de senha na UO do usuário. Acabamos comprando um produto para permitir que os usuários redefinissem suas próprias senhas. Eu sei que não responde exatamente a sua pergunta, mas espero que algumas dessas informações ajudem.

    
por 24.03.2015 / 23:35
0

Eu notei o problema: O usuário de destino "osman" Eu estava testando isso era um administrador de domínio e, aparentemente, os administradores de domínio não herdam a delegação (não sei por que, não documentado, tanto quanto eu posso ver). Todos os outros não-administradores funcionam bem! Obrigado por todas as suas sugestões.

    
por 25.03.2015 / 17:04