Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在不使用远程服务器管理工具的情况下获取用户的AD角色_Powershell_Active Directory_Windows 10 - Fatal编程技术网

Powershell 在不使用远程服务器管理工具的情况下获取用户的AD角色

Powershell 在不使用远程服务器管理工具的情况下获取用户的AD角色,powershell,active-directory,windows-10,Powershell,Active Directory,Windows 10,我正在尝试编写一个powershell命令,检查用户是否属于AD组,但是,我不想使用RSAT模块,因为这可能会成为登录脚本,我们不希望用户安装这些模块。这确实让我想到了这个问题,但是,我不知道如何过滤结果,检查值是否在其中 例如,下面确实返回了组IT的LDAP形式的用户列表,但如何使用用户名检查特定用户,而不是其中的显示名称 ([System.DirectoryServices.DirectorySearcher]"(&(objectCategory=group)(name=IT))")

我正在尝试编写一个powershell命令,检查用户是否属于AD组,但是,我不想使用RSAT模块,因为这可能会成为登录脚本,我们不希望用户安装这些模块。这确实让我想到了这个问题,但是,我不知道如何过滤结果,检查值是否在其中

例如,下面确实返回了组IT的LDAP形式的用户列表,但如何使用用户名检查特定用户,而不是其中的显示名称

([System.DirectoryServices.DirectorySearcher]"(&(objectCategory=group)(name=IT))").FindOne().Properties["Member"]
FindOne,不管它说什么,也返回多行;事实上,FindAll和FindOne都返回相同的结果


我应该使用不同的命令来搜索广告吗?具体地说,我想检查一个广告组是否包含一个用户当前用户,或者相反,检查某个用户当前用户是某个特定广告组的成员。

如果确实需要,您可以这样做,如果确实需要,我可以帮助您这样做。但是,如果您要在感兴趣的用户的凭据下运行此脚本,那么您可以从用户的登录令牌中获取所有组。已包含用户所在的所有安全组的递归列表。它不包括“组类型”为Distribution的组

登录令牌包含一个SID列表,因此绝对最快的方法是使用您感兴趣的组的SID进行比较,因为它根本不需要发出任何网络请求。这对于那些登录时可能不在线的笔记本电脑用户来说尤其方便——你的脚本仍然可以工作

$currentIdentity=[Security.Principal.WindowsIdentity]::GetCurrent 如果$currentIdentity.Groups.Where{$\.Value-eq S-1-1-0},第一个{在所有人中? 对 }否则{ 不 } 要查找组的SID,请使用以下命令:

获取ADGroup GroupName.SID.Value 然后将该值复制/粘贴到脚本中

如果希望在脚本中使用组的名称,则可以将其转换为WindowsPrincipal并使用。但是,这将需要发出网络请求以通过其名称查找组

$currentIdentity=[Security.Principal.WindowsIdentity]::GetCurrent $currentPrincipal=新对象System.Security.Principal.WindowsPrincipal$currentIdentity 如果$currentPrincipal.IsInRoleEveryone{ 对 }否则{ 不 }
谢谢加布里埃尔;我对任何方法都很满意,事实上,它不一定要使用我所拥有的,而不仅仅是我通过搜索找到的。这似乎正是我需要的。非常感谢。为什么这张票和我的另一张一起被随机否决?厌倦了别人对我的问题百般挑剔,并对他们投了反对票。。。