我正在使用此脚本将大量信息提取到另一个程序使用的制表符分隔的纯文本文件中。该脚本运行良好,创建文件并用数据填充它,但是当它达到大约 250MB 的数据时,我收到下面列出的错误。我相信这是因为我只是想收集太多数据,但我不知道如何解决它!
脚本:
Import-module ActiveDirectory
$Domain = 'DomainName'
Get-ADGroup -Filter * -Properties * | ForEach-Object {
$Group = $_
Get-ADGroup $Group -Properties Members | Select-Object -ExpandProperty Members | Get-ADObject | ?{$_.ObjectClass -eq "user"} |
Get-ADUser -Properties * | Select-Object @{
Name = 'Domain'
Expression = { $Domain }
}, @{
Name = 'Group Name'
Expression = { $Group.Name }
}, @{
Name = 'Type'
Expression = { $Group.GroupCategory }
}, @{
Name = 'Description'
Expression = { $_.Description }
}, @{
Name = 'Distinguished Name'
Expression = { $_.DistinguishedName }
}, @{
Name = 'Managed By'
Expression = { $Group.ManagedBy }
}, @{
Name = 'Members'
Expression = { $_.MemberOf }
}, @{
Name = 'Full Name'
Expression = { $_.Name }
}, @{
Name = 'User Name'
Expression = { $_.SamAccountName }
}, @{
Name = 'Display Name'
Expression = { $_.DisplayName }
}
} | Export-Csv -delimiter "`t" -path C:\Test.txt –nti
编辑:我曾尝试使用 directorysearcher 工具,因为我知道它可以解决索引问题,但是我无法正确获取代码。我需要获取用户和组信息。我有用户信息,但它没有为所有用户获取数据,我如何搜索域中的所有用户?
Import-module ACtiveDirectory
$Domain = 'domain'
$strFilter = "(&(objectCategory=person)(objectClass=user))"
$objCollection=@()
$objDomain = New-Object System.DirectoryServices.DirectoryEntry
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = "Subtree"
$colProplist = "name", "samaccountname", "description", "distinguishedname", "memberof", "displayname"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
$colResults = $objSearcher.FindAll()
$objCollection = $colResults | select -Expand Properties |
select @{
n = 'Domain'
e = { $Domain }
}, @{
n = 'Group Name'
e = { $Group.Name }
}, @{
n = 'Type'
e = { $Group.GroupCategory }
}, @{
n = 'Description'
e = { $_.description }
}, @{
n = 'Distinguished Name'
e = { $_.distinguishedname }
}, @{
n = 'Managed By'
e = { $Group.ManagedBy }
}, @{
n = 'Members'
e = { $_.memberof }
}, @{
n = 'Full Name'
e = { $_.name }
}, @{
n = 'User Name'
e = { $_.samaccountname }
}, @{
n = 'Display Name'
e = { $_.displayname }
}
$objCollection | Export-Csv -delimiter "`t" -path C:\Test9.txt -nti