Archivo de export de ForEach Loop a CSV

Estoy trabajando en crear una escritura que emita todos los nombres y models de la computadora a un file del sobresalto. El código funciona sin la canalización Export-Csv pero no puedo averiguar cómo crear el file excel. Si tomo el bucle y uso sólo una computadora con el Export-Csv que también funciona bien.

#Query AD $Computers = Get-ADComputer -Filter * -searchbase "DC=domain,DC=org" #loop foreach ($computer in $Computers) { $comp=$computer.Name Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp | Where-Object {$_.model -like "*G2*"} | Select-Object Name, Model | Export-Csv "C:\User\xxxxxx\Desktop\8200s.csv" -NoTypeInformation -Encoding UTF8 -Append } 

Le sugiero que mueva el Export-CVS fuera del bucle, y use Foreach-Object para que pueda usar el pipeline.

 # Query AD for computers Get-ADComputer -Filter * -searchbase "DC=domain,DC=org" | ForEach-Object { $comp=$_.Name # return name,model for all G2 computers Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp | Where-Object {$_.model -like "*G2*"} | Select-Object Name, Model } | Export-Csv "C:\User\xxxxxx\Desktop\8200s.csv" -NoTypeInformation -Encoding UTF8 

Con algunas de sus sugerencias y un poco más de pensamiento, pude entender esto. Hemos creado un Array y un object, escribimos información a una matriz y luego al file. Pude conseguir la export y luego tuve que poner adelante un poco más de esfuerzo para averiguar todos los errores con los orderadores que harían que el script se ejecute muy lento. A continuación se muestra lo que utilizamos.

Consultar AD

 $ErrorActionPreference="Continue" $Computers = Get-ADComputer -Filter * -searchbase "OU=TechDepartment,OU=Workstations,DC=domain,DC=org" $OurArray=@() $firstObject = New-Object PSObject Add-Member -InputObject $firstObject -MemberType NoteProperty -Name Name -Value "" Add-Member -InputObject $firstObject -MemberType NoteProperty -Name Model -Value "" #loop foreach ($computer in $Computers) { $comp=$computer.Name If(Test-Connection $comp -count 1 -Quiet) { #Successful Ping Write-Host "$comp" try{ $firstObject = Get-WmiObject -Class Win32_ComputerSystem -ComputerName $comp -ErrorAction Stop | Select-Object Name, Model | Where-Object {$_.model -like "*8200*"} $OurArray += $firstObject }catch { "$comp RPC is Down"} } Else {Write-Host "$comp is offline"} } $OurArray | Export-Csv 8200s.csv -NoTypeInformation -Encoding UTF8