我试图通过使用批处理脚本来确定用户是否属于某个Active Directory(AD)组。
我使用FINDSTR
函数搜索特定的字符串,但似乎找不到确切的字符串匹配。
e.g。
@ECHO OFF
SETLOCAL ENABLEEXTENSIONS
REM check if the file exists
IF NOT EXIST "C:\APPS\UserGroups.txt" (
rem CREATE UserGroups file
> "C:\APPS\UserGroups.txt" dir
echo UserGroups.txt Created!
)
REM List AD groups associated with this user
whoami /groups > "C:\APPS\UserGroups.txt"
REM check if they are a domain admins in AD
FINDSTR /c:"AERO\\Domain Admins" C:\APPS\UserGroups.txt
PAUSE
当前脚本会验证用户是否在 AERO \ Domain Admins 组中。但是,如果我删除" s"并搜索 AERO \ Domain Admin ,它仍然显示用户存在于列表中。
答案 0 :(得分:1)
这是因为FINDSTR默认执行子字符串搜索。
这并不能保证正确的结果,但它可以让你更接近:
FINDSTR /rc:"\<AERO\\Domain Admins\>" C:\APPS\UserGroups.txt
这是一个正则表达式,可以保证搜索字符串匹配起始和结束字边界。
编辑以回应评论
如果您的搜索包含n个单词,并且存在以相同n个单词开头的组,并且添加了一个或多个其他单词,我的建议将会失败。
例如"\<word1\>"
匹配word1 word2