tentando copiar grupos de segurança para um usuário usando o utilitário dsmod group no AD

3

Eu estou tentando criar um arquivo de lote que pede para digitar samid de origem e samid de destino. Em seguida, use dsquery e dsget para descobrir a que grupo de segurança samid de origem está designado e atribua samid de destino a esses grupos de segurança usando dsmod.

Tudo funciona, exceto o comando dsmod group. Não faz nada e o arquivo em lotes é interrompido. Se eu colocar literalmente "CN=marketing,OU=test group,DC=abc,DC=com" em vez de %%g e "CN=test1,OU=test group,DC=abc,DC=com" em vez de %dusercn% , tudo funcionará bem.

qualquer ajuda seria incrível !!!

obrigado.

echo off
echo %date% at %time% 
set /p susername=enter source user name:
set /P dusername=enter destination user name:
echo %susername%
echo %dusername%
set dusercn=
%dusercn%=dsquery user -samid %dusername%
echo %dusercn%
for /f "tokens=*" %%g in ('dsquery user -samid %susername% ^|dsget user -memberof') do (
  dsmod group %%g -addmbr %dusercn%
)
echo completed
pause
    
por newbie 06.06.2012 / 17:53

1 resposta

2

Estou postando uma resposta que funcionou para mim. Espero que ajude outros novatos como eu.

echo off
echo %date% at %time%

set /p susername=enter source user name:
set /P dusername=enter destination user name:

rem echo+ is used for new line. echo+
echo entered source user name: %susername%
echo entered destination user name: %dusername%
echo+

set dusercn=0
set lines=0

for /f "tokens=*" %%g in ('dsquery user -samid %susername% ^|dsget user -memberof') do (
    echo %%g
    dsquery user -samid %dusername% | dsmod group %%g -addmbr -c
    set /a lines=lines+1
)

echo+
echo+
echo **************
echo number of lines processed %lines%
echo script completed
echo **************
pause
    
por 13.06.2012 / 14:38