1

如果有人可以帮助我修复我的脚本,我将不胜感激,我想在字符串的末尾添加一个 4 位随机数,本质上它是一个脚本,它读取一个电子邮件地址的 csv 文件,然后创建一个 powershell文件供我运行,但我遇到问题的部分是附加到密码字符串的随机 4 位数字,请参见下文,如果我现在运行脚本,它运行时没有错误但没有附加 4 位随机数,任何人都可以帮助我确定它的一些小东西我错过了谢谢

土豆


@echo off & setlocal EnableDelayedExpansion
for /F "delims=" %%j in ('type "Input.csv"') do (
set /A RND=%RANDOM% %% 8889 + 1111
echo.Set-MsolUser -UserPrincipalName %%j -StrongPasswordRequired $false
echo.Set-MsolUserPassword -userPrincipalName %%j -NewPassword "TTech%RND%*" -ForceChangePassword   $false
echo.Set-MsolUser -UserPrincipalName %%j -PasswordNeverExpires $true
echo.   
) >> "Output.txt"
4

3 回答 3

2

您需要更改%var%!var!有效地访问变量的动态值delayedexpansion

set /A RND=!RANDOM! %% 8889 + 1111

会将您的变量设置RND为 1111..9999

echo.Set-MsolUserPassword -userPrincipalName %%j -NewPassword "TTech!RND!*" -ForceChangePassword   $false

然后将结果值附加到TTech

或者,尝试

set RND=000!RANDOM!
...
echo.Set-MsolUserPassword -userPrincipalName %%j -NewPassword "TTech!RND:~-4!*" -ForceChangePassword   $false

这将构造一个字符串000+ 0..32767然后使用最后 4 个字符,TTech这样你就会得到前导零填充的 4 位数字。

于 2013-10-31T16:42:13.443 回答
0

这将为您提供一个随机的 4 位数字:

set num=%random%%random%%random%%random%
set num=%num:~-4%

或者在循环内启用延迟扩展:

set num=!random!!random!!random!!random!
set num=!num:~-4!
于 2013-11-01T10:11:04.120 回答
0

将此用于您的随机数:

Set max=9999
Set min=1000
Set /A rand=%random% %% (max - min + 1)+ min
Echo %rand%

请记住,在 for 循环中,您需要使用延迟扩展并转义括号。

 Set max=9999
 Set min=1000

 for /l %%a in (1,1,10) do (
 Set /A rand=!random! %% ^( max - min + 1 ^) + min
 Echo.!rand!
 )
 exit /b

根据 Magoo 的回答,您知道问题在于使用延迟变量语法而不是标准括号。我将他的答案和我的答案打包成几个易于重用的小功能。

call :RandomRange 1000 9999 ret
Echo %ret%

call :RandomRange2 ret
echo %ret%
exit /b

:RandomRange min max ret
@echo off & setlocal enabledelayedexpansion
Set /A rand=!random! %% (%2 - %1 + 1) + %1
endlocal & set %3=%rand%
exit /b

:RandomRange2 ret
@echo off & setlocal enabledelayedexpansion
set rnd=000!random!
set rnd=!rnd:~-4!
endlocal & set %1=%rnd%
exit /b

希望有帮助

于 2013-10-31T16:32:49.340 回答