Powershell-从管理员组获取用户列表

时间:2020-07-27 20:41:39

标签: powershell active-directory

我通常是编程的新手,我正在尝试创建一个Powershell脚本,该脚本将:

-连接到虚拟控制器

-获取有权访问的所有活动目录用户的列表

-如果列表包含活动目录组,它将拉出该组中的个人列表。

这是我到目前为止所拥有的:

connect-viserver vcxx.com
import-module ActiveDirectory
Write-Host "---Admins---"
Get-VIPermission | where {$_.Role -eq "Admin"} | Select Role, UID

这就是显示的内容:

Role      : Admin
Uid       : /VIServer\user/Datacenter/Permission=Admin-CORP\xxxAdmins-group/

现在,我希望脚本查看关键字 group OR admins 的UID的最后一部分,如果找到了然后它会做到:

Get-ADGroupMember xxxAdmins-Group |Get-ADUser -Properties *|select name, account |ft -AutoSize

如果不清楚,请通知我。 感谢您的指导。


在@Chakani的帮助下,这就是我现在拥有的

$VIPerms =  Get-VIPermission | where {$_.Role -eq "Admin"} | Select UID
$UID = $VIPerms.UID
$ADGroup = $UID -replace '.+\\(.+)/$','$1'
$ADGroupArray  = $ADgroup -split '\s'
$ADSplit = Foreach($i in $ADGroupArray){If($i -match '(admins|group)') {$i -split "-group"}}
$ADSplit
$Users  = Foreach($j in $ADSplit){Get-ADGroupMember $j|Get-ADUser -Properties *|select givenname, surname, samaccountname }
$Users | select givenname, surname, samaccountname | ft -autosize

1 个答案:

答案 0 :(得分:0)

我相信,在这种情况下,最好的方法是使用其中一个powershell regex运算符,并且看起来像这样:

将cmdlet的UID输出分配给一个变量,然后对其进行解析,如果它与您要查找的内容相匹配(如果我理解该最后一节中的“管理员”或“组”之类的声音,请在''和'/'之间正确地剪裁出所需的东西,然后将其放入Get-ADGroupMember中。

如果UID的所有先前结构都将始终保持相同的结构,那么我将首先进行替换,然后将剩余的内容与所需的内容进行匹配,如下所示:

$VIPerms =  Get-VIPermission | where {$_.Role -eq "Admin"} | Select Role, UserID
$UID = $VIPerms.UID
$ADGroup = $UID -replace '.+\\(.+)/$','$1'
If($ADGroup -match '(admins|group)'){

     Get-ADGroupMember $ADGroup |Get-ADUser -Properties *|select name, account |ft -AutoSize
}

确保在“ $ 1”周围使用单引号,以便获得“第一组”的正则表达式值,而不是变量$ 1。