批处理文件:AD组中的FindStr

时间:2018-03-21 16:59:26

标签: batch-file

我试图通过使用批处理脚本来确定用户是否属于某个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 ,它仍然显示用户存在于列表中。

1 个答案:

答案 0 :(得分:1)

这是因为FINDSTR默认执行子字符串搜索。

这并不能保证正确的结果,但它可以让你更接近:

FINDSTR  /rc:"\<AERO\\Domain Admins\>" C:\APPS\UserGroups.txt

这是一个正则表达式,可以保证搜索字符串匹配起始和结束字边界。

编辑以回应评论

如果您的搜索包含n个单词,并且存在以相同n个单词开头的组,并且添加了一个或多个其他单词,我的建议将会失败。

例如"\<word1\>"匹配word1 word2