从其他域中检索用户组而不使用AD CmdLets?

powershell

89 观看

2回复

6 作者的声誉

我无权访问“管理员权限”,因此无法安装AD模块。

如何在不使用Active Directory的情况下在不同域上检索用户的用户组?有任何想法吗?我可以访问其他域,但是只能使用此脚本访问自己域中的用户,而不能访问其他用户。

$filedirectory = "C:\Users\x\Desktop\z\Project\test.txt"
$outputdirectory = "C:\Users\x\Desktop\Project\Export.csv"
$allusernames = Get-Content $filedirectory
$groups = ""

$resultarray =@()

foreach ($allusernames in $allusernames) {

$groupObject = new-object PSObject

$currentusername = $allusernames
$groups = ([ADSISEARCHER]"samaccountname=$($currentusername)").Findone().Properties.memberof -replace '^CN=([^,]+).+$','$1' | out-string

$groupObject | add-member -MemberType NoteProperty -name "User" -Value $currentusername
$groupObject | Add-Member -MemberType NoteProperty -name "Groups" -Value $groups

$resultarray +=$groupObject

} 

$resultarray | export-csv -Path $outputdirectory -NoTypeInformation
作者: Justin Ooi 的来源 发布者: 2017 年 9 月 15 日

回应 2


0

2074 作者的声誉

您可以使用ADSI指定任何域,并从中构建ADSIsearcher,如下所示:

$Searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]"LDAP://$domain")

注意,您还可以GC://用于查询全局目录并[System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()动态获取当前目录林及其域。

因为您正在查询组成员身份,请注意,组成员身份是组的属性,而不是用户的属性。memberof如果组是本地域,则该属性仅显示同一域的域的组成员身份。

作者: vrdse 发布者: 2017 年 9 月 15 日

0

6 作者的声誉

$ForestName = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest().Name
$root = [ADSI]"GC://$ForestName"
$Searcher = [ADSISEARCHER]$root

这就是我所使用的。

作者: Justin Ooi 发布者: 2017 年 9 月 27 日
32x32