找回密码
 加入
搜索
查看: 5527|回复: 14

[系统综合] [已解决]判断定指域帐号是否属指定的安全组问题

  [复制链接]
发表于 2012-3-30 08:25:15 | 显示全部楼层 |阅读模式
本帖最后由 fuinei 于 2012-3-30 11:21 编辑

各位好,由于公司使用域管理,有时需判断指定的域帐号是否属特定安全组,,希望各位能告知一下如何可以判断定指域帐号是否属指定的安全组(如域帐号abc是否为安全组wireless的成员),谢谢!

评分

参与人数 1金钱 +15 收起 理由
afan + 15 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-3-30 08:56:59 | 显示全部楼层
#Include <AD.au3>
_AD_IsMemberOf
 楼主| 发表于 2012-3-30 09:31:19 | 显示全部楼层
回复 2# netegg
<AD.au3>UDF前几天在我发的另外一个帖子中502762378兄提及过
http://www.autoitx.com/forum.php ... 17&highlight=AD
使用下面的代码测试时总是报错
#Include <AD.au3>
$result = _AD_IsMemberOf("wireless","abc","")
MsgBox(0,"",$result)
请问为什么呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2012-3-30 09:36:08 | 显示全部楼层
各位好,前天在P大和502762378兄的指导下了解到如何判断指定的帐号/组是否为本机管理员权限.由于公司使用域管 ...
fuinei 发表于 2012-3-30 08:25



    好意提醒楼主:
    按现在您的帖子的排版, 您觉得有利于他人阅读吗?
    想别人帮助你, 为什么你还这么为难别人?
 楼主| 发表于 2012-3-30 09:40:28 | 显示全部楼层
回复 4# user3000
谢谢提醒,马上修改主题描述
发表于 2012-3-30 09:50:36 | 显示全部楼层
回复 5# fuinei

ad没连上?
发表于 2012-3-30 09:52:52 | 显示全部楼层
回复 3# fuinei


    很明显你的组名称输入错误
你用_AD_GetUserGroups看看组的全称是什么?
 楼主| 发表于 2012-3-30 10:05:20 | 显示全部楼层
回复 7# 502762378
使用_AD_GetUserGrups还是相同的报错,奇怪!
由于AD中同一个用户可属多个组,这个自定义函数如果正常的话应该是会返回指定帐号所属的所有安全组吧?
 楼主| 发表于 2012-3-30 10:06:17 | 显示全部楼层
回复 6# netegg
AD.udf是否需修改呢?我测试用的电脑已加入域,连接域控肯定是没有问题的
发表于 2012-3-30 10:25:33 | 显示全部楼层
回复 8# fuinei


    它会返回所有的通讯组和安全组,你_AD_Open()和_AD_close()了吗?
发表于 2012-3-30 10:29:40 | 显示全部楼层
#include <AD.au3>
; 打开Active Directory连接
_AD_Open()
; 获取用户将成为其成员的组名(FQDN)的排序数组
Global $aUser = _AD_GetUserGroups("abc")
If @error > 0 Then
   MsgBox(64, "Active Directory Functions", "User '" & @UserName & "' has not been assigned to any group")
Else
  _ArraySort($aUser, 0, 1)
   _ArrayDisplay($aUser, "Active Directory Functions - Group names user '" & @UserName & "' is immediately a member of")
EndIf
; 关闭Active Directory连接
_AD_Close()

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2012-3-30 10:53:15 | 显示全部楼层
回复 11# 502762378
原来是丢了_AD_open()和_AD_close()导致的,使用以下代码实现可符合要求
#include <AD.au3>
_AD_Open()
$result = _AD_IsMemberOf("wireless","abc","")
If $result = 1 Then
        MsgBox(0,"",@UserName & "属wireless组")
Else
        MsgBox(0,"",@UserName & "不属wireless组")
EndIf
_AD_Close()
AD.au3这个UDF很好很强大
发表于 2012-3-30 11:24:48 | 显示全部楼层
回复 12# fuinei


    告你先用_AD_GetUserGrups看abc的所有组名称
正确组名称的书写要写CN,OU,DC,你试试下边的码
#include <AD.au3>
_AD_Open()
$result = _AD_IsMemberOf("wireless","abc","")
If $result = 1 Then
        MsgBox(0,"",abc & "属wireless组")
Else
        MsgBox(0,"你看看错误多少",@error);错误1表示查询的组不存在
EndIf
_AD_Close()
 楼主| 发表于 2012-3-30 11:53:00 | 显示全部楼层
本帖最后由 fuinei 于 2012-3-30 11:55 编辑

回复 13# 502762378

谢谢502762378兄的指导,正确的组名要写CN,OU,DC???我测试时不用也没有报错哦
你的代在条件成立的If语句中字符abc漏了引号,按照你的思路稍为修改了一下
#include <AD.au3>
_AD_Open()
$result = _AD_IsMemberOf("wireless","abc","")
If @error = 1 Then
        MsgBox(48,"Error","域中不存在wireless")
        Exit
EndIf
If $result = 1 Then
        MsgBox(0,"","abc" & "属wireless组")
Else
        MsgBox(0,"","abc" & "不属于wireless组")
EndIf
_AD_Close()
发表于 2012-3-30 12:07:32 | 显示全部楼层
回复 14# fuinei


    哈哈,是我没测试太严谨了,你的方法是对的
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-1 07:36 , Processed in 0.120321 second(s), 35 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表