我正在创build一个脚本,将所有的计算机名称和模型输出到Excel文件。 代码工作没有Export-Csvpipe道,但我不知道如何创buildExcel文件。 如果我拿出循环,并使用Export-Csv只使用一台计算机,它也可以正常工作。
#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 }
我build议你将Export-CVS移出循环,并使用Foreach-Object这样就可以使用pipe道。
# 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
随着你的一些build议和一些更多的想法,我能够弄清楚这一点。 我们创build了一个Array和and对象,将信息写入数组然后写入文件。 我能够得到出口,然后不得不花费更多的精力来找出使电脑运行速度非常慢的所有错误。 以下是我们使用的。
$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