Author Posts

January 1, 2012 at 12:00 am

by JohnnyLeuthard at 2013-03-25 11:14:25

I am using the Get-ADComputer cmdlet to get a list of all computer objects in a forest. I wrapped it in a script to grab the properties I needed format the output.
The problem is it will randomly throw errors. Not always at the same location. I am not sure if it might be an AD permissions issue or something else? I typically get al tease 20,000 results before it bombs out on me...give or take a few thousand.Can anybody give me a little direction as to why this is happening?

the command I use to launch the script is (see script below)
Get-Data | Export-Csv -NoTypeInformation "C:\Temp\Testing.csv"

Server
64-bit Windows 2008 R2 server
24 GB RAM
10 GB free space on the volume I am writing to

Forest
Windows2003Forest

This is the error
[quote]
Get-ADComputer : The server has returned the following error: invalid enumeration context.
At line:20 char:23
+ Get-ADComputer < <<< -SearchScope Subtree -ResultSetSize $null -filter * -properties * | select `
+ CategoryInfo : NotSpecified: (:) [Get-ADComputer], ADException
+ FullyQualifiedErrorId : The server has returned the following error: invalid
enumeration context.,Microsoft.ActiveDirectory.Management.Commands.GetADComputer
[/quote]


function Get-Data
{
[CmdletBinding()]
Param
(

)
begin
{
#Load the AD modules
Import-Module ActiveDirectory
}#begin
Process
{
#Queary AD for the following info
Get-ADComputer -SearchScope Subtree -ResultSetSize $null -filter * -properties * | select `
@{Name="Domain";Expression={ ($_.DNSHostName -replace "^\w*.\.", "" ).trim()}},
ObjectGUID,
@{Name="Name";Expression={ ($_.Name).trim()}},
DNSHostName,
@{Name="OU";Expression={$_.CanonicalName}},
OperatingSystem,
@{Name="pwdLastSet";Expression={ [datetime]::fromfiletime($_.pwdLastSet)}},
DistinguishedName,
@{Name="lastLogonTimestamp";Expression={ [datetime]::fromfiletime($_.lastLogonTimestamp)}}
}#Process
end
{
}#End
}#Function

by compugab at 2013-03-25 11:49:28

Maybe you try to enumerate to much propertites. Change your Get-ADComputer call to something like this :

Get-ADComputer -SearchScope Subtree -ResultSetSize $null -filter * -properties DNSHostName,CanonicalName,pwdLastSet,LastLogonTimestamp

by JohnnyLeuthard at 2013-03-25 12:24:38

The problem is I need to have one column that has the domain name so I am grabbing it from the DNSHostname and if I put that in with the properties I get an error . I can try that as a test though and see what happens.

by JohnnyLeuthard at 2013-03-25 13:04:07

Now that I walked away from my computer for a bit and come back fresh I realized I can still use my select statement and also format and parse the data but rather than pulling -properties * just pull the properties I need. I ran it without select and I am about 5-6 thousand past the oint where it usually bombs out and gives that error. I will update this thread when it finished running.

Thanks for such a quick response!?

by JohnnyLeuthard at 2013-03-25 13:18:55

Right after I sent this I bombed again LOL but it did get a Little further. 🙂

So maybe it's something to do with memory? I'm not 100% sure how it is treating this since it's one lone command.
even though it is passing it across the pipeline and then out to a CSV is it still storing the data in memory and once the buffer fills up it dies?
If it is keeping everything in memory maybe if i could step through and write a few lines and then clear it?

On thing I found through Google (my best friend) is someone saying to use the -resultspageSize and set it to something like 10?