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

时间:2012-06-06 15:56:58

标签: batch-file active-directory dsquery

我正在尝试创建一个批处理文件,要求输入源samid和目标samid。然后使用dsquery和dsget找出分配了哪些安全组源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 个答案:

答案 0 :(得分:0)

感谢您的帮助。我发布的答案对我有用。希望它能帮助像我这样的其他新手。

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