get-adcomputer error: “Contexto de enumeração inválido” ao executar o script do powershell

3

Estamos mudando para o WDS para implantação, portanto, estou escrevendo um script do PowerShell que fará o ping em um computador e, se responder, obterá seu endereço MAC e definirá o campo netbootGUID no Active Directory. Ele roda e funciona ... por um tempo e depois retorna:

Get-ADComputer : The server has returned the following error: invalid enumeration context. At \Path\To\Scripts\setNetbootGUIDremoteComputers.ps1:3 char:15

  • get-adcomputer <<<< -Filter * -searchbase "OU=Somehwere,DC=My,DC=AD,DC=TLD" -ResultSetSize $null | foreach-object {
    • CategoryInfo : NotSpecified: (:) [Get-ADComputer], ADException
    • FullyQualifiedErrorId : The server has returned the following error: invalid enumeration context.,Microsoft.ActiveDirectory.Management.Commands.GetADComputer

Este é o script:

import-module ActiveDirectory

get-adcomputer -Filter * -searchbase "OU=Somewhere,DC=MY,DC=AD,DC=TLD" -ResultSetSize $null | foreach-object {

    $strComputer = $_.Name
    $ping = new-object System.Net.NetworkInformation.Ping
    $Reply = $ping.send($strComputer)

    if ($Reply.status –eq “Success”){
            $colItems = GWMI -cl "Win32_NetworkAdapterConfiguration" -name "root\CimV2" -comp $strComputer -filter "IpEnabled = TRUE"

            ForEach ($objItem in $colItems) {
                $MAC = $objItem.MacAddress.Replace(":", "") 
                Write-Host "Machine Name: " $strComputer
                Write-Host "MAC Address:" $MAC                          
                [guid]$nbGUID = "00000000-0000-0000-0000-$MAC"        
                $comp = get-adcomputer $strComputer -Properties netbootGUID
                $comp.netbootGUID = $nbGUID.ToByteArray()
                set-adcomputer -Instance $comp
                write-output "$strComputer" | out-file -filePath c:\somewhere\guidSet.txt -append
            }
    }
    else {
        write-output "$strComputer" | out-file -filePath c:\somewhere\offline.txt -append
    }
    $Reply = ""



}

Não tenho ideia do motivo pelo qual estou recebendo esse erro ou o que isso significa. Meu GoogleFu está falhando comigo hoje.

    
por MDMarra 23.06.2011 / 23:16

4 respostas

0

Eu nunca resolvi isso. Eu acabei fazendo UOs sob o recipiente maior e executando isso contra 1k contas de cada vez.

Infelizmente, isso continuará sendo um mistério, já que esse ambiente não existe mais.

    
por 14.03.2012 / 14:27
0

NB: Eu não sou um guru do PS

Meu google fu apresentou o link a seguir .

Em suma, acho que tem algo a ver com a parte -ResultSetSize $null do script. No link, o OP usava -notlike "*" em vez do -eq "$Null"

Talvez brincar com essa parte do roteiro e ver o que acontece.

    
por 23.06.2011 / 23:40
0

Eu gosto dos comandos get-adcomputer e quest-active directory para casos em que preciso de muitas informações em um servidor, mas, caso contrário, permaneço com os comandos do diretório ativo dsquery e dsget , porque eu acho o get-adcomputer e especialmente os comandos quest desnecessariamente lentos, embora algo possa estar exigindo que você não use esses comandos ds . Se você tiver acesso a esses comandos, isso pode valer a pena, mesmo que seja apenas uma mensagem de erro diferente, pois ignora o uso de get-adcomputer e o método existente para determinar a capacidade de ping (tipo Mickey). -Mouse, mas às vezes assim fornece informações adicionais) -

dsquery computer ou=Somewhere,dc=My,dc=AD,dc=TLD | ?{$_ -imatch "cn=([^,]+,),"} | % {
    $your_computer = $Matches[1]
    $cannot_ping_computer = $false

    # similarly for the ping command, but should be it's own little function
    ping $your_computer | ?{$_ -imatch "\s*Packets: Sent = (\d+), Received = (\d+)" }|% {
      # or whatever conditions you find satisfactory
      if ($Matches[1] -ne $Matches[2]) $cannot_ping_computer = $true
    }
    if ( $cannot_ping_computer ) {
      #command to jump to next element in pipe, I cannot recall >.<      
    }
    # rest of your code...
}

Fui desempregado nos últimos dois meses e não tenho acesso a uma máquina Windows, portanto, o código está fora do meu limite, mas espero que funcione para você. Parece certo.

Espero que você tenha resolvido o problema, mas se não, espero que isso ajude de alguma forma.

Boa sorte! :)

    
por 19.11.2011 / 19:42
0

Eu tentaria jogar com o parâmetro ResultPageSize com base nessa postagem . Talvez configurando algumas centenas de resultados por vez.

    
por 14.03.2012 / 14:12