尝试使用 AD 中的 dsmod 组实用程序将安全组复制到用户

尝试使用 AD 中的 dsmod 组实用程序将安全组复制到用户

我正在尝试创建一个批处理文件,要求输入源 samid 和目标 samid。然后使用dsquerydsget找出源 samid 分配到哪些安全组,并使用 dsmod 将目标 samid 分配给这些安全组。

除了 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

相关内容