Пытается скопировать группы безопасности для пользователя с помощью утилиты группы dsmod в AD

Я пытаюсь создать командный файл, который просит ввести исходный samid и целевой samid. Затем с помощью dsquery и dsget выясните, для каких групп безопасности назначен исходный samid, и назначьте samid назначения этим группам безопасности, используя dsmod.

Все работает, кроме команды dsmod group. Он ничего не делает и пакетный файл останавливается. Если я буквально положил "CN=marketing,OU=test group,DC=abc,DC=com" вместо %%g а также "CN=test1,OU=test group,DC=abc,DC=com" вместо %dusercn%работает нормально.

Может кто-нибудь помочь с этим? Я вставил свой сценарий здесь. Эта последняя маленькая вещь убивает меня.

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

1 ответ

Спасибо за всю вашу помощь. я публикую ответ, который работал для меня. надеюсь, это поможет другим новичкам, как я.

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
Другие вопросы по тегам