【发布时间】:2018-04-17 14:28:31
【问题描述】:
我有一个 .cmd 文件脚本,我运行它来检查用户是否在 AD 组中。
过程是这样的:
- 更新他们的广告组列表
- 检查他们是否有正确的组来安装应用程序
- 如果函数的结果是
N,则跳到下一个检查
这是我的脚本:
REM ======== SET variables ========
SET @ADGroups=C:\APPS\%USERNAME%\ADGroups.txt
REM ======== update AD groups ========
gpresult /r > %@ADGroups%
REM ======== APP1 =========
call:Check_ADGroup "App1 Name"
IF %@InGroupYN% == Y (
call:Install_App
)
REM ======== APP2 =========
call:Check_ADGroup "App2 Name"
IF %@InGroupYN% == Y (
call:Install_App
)
::--------------------------------------------------------
::-- Function Check In AD GROUP
::--------------------------------------------------------
:Check_ADGroup
SET @Result=[]
SET @InGroupYN=N
FOR /F "delims=" %%a in ('FINDSTR /rc:"%~1" %@ADGroups%') DO SET @Result=%%a
IF @Result == [] (
REM ======== Set to No ========
SET @InGroupYN=N
) ELSE (
REM ======== Set to Yes ========
SET @InGroupYN=Y
)
goto:eof
由于某种原因,@InGroupYN 始终以 Y 运行,无论函数返回 true 还是 false
命令行中的变量是否需要考虑一些作用域?
【问题讨论】:
-
您的代码在我看来应该可以工作,我找不到任何严重的错误。您希望 AD 组区分大小写吗?
标签: batch-file command