Ihr Problem war, dass die Datei in jeder Schleife überschrieben wurde. Jetzt speichert Ihr Skript zunächst alles in einer Variablen und exportiert es am Ende.
ein paar weitere probleme mit ihrem script:
- Der Try / Catch wird im Moment nie etwas fangen, da kein Abbruchfehler vorliegt.
- Das Format Ihres Skripts war furchtbar - bitte formatieren Sie es besser, sonst ist es sehr schwer zu lesen.
- Warum wählen Sie am Ende alles aus, bevor Sie es exportieren? Wenn Sie alles exportieren möchten, müssen Sie nichts auswählen. Wenn es sich um Sortierzwecke handelt, ändern Sie
New-Object PSObject -property
auf[pscustomobject]
. Dadurch wird bereits die korrekte Sortierreihenfolge erzwungen
Hier ist das aktualisierte Skript
$computers = Get-ADComputer -SearchBase "DC=some,DC=web,DC=com" -Filter * | Select-Object -ExpandProperty Name $outtbl = foreach ($computer in $computers){ if(!(Test-Connection -CN $computer -BufferSize 16 -Count 1 -ea 0 -quiet)) { write-host "Cannot reach $computer offline." -f red } else { Try{ $sr = Get-WmiObject -Class Win32_BIOS -ComputerName $computer -ErrorAction Continue $Xr = Get-WmiObject -Class Win32_Processor -ComputerName $computer -ErrorAction Continue $ld = Get-ADComputer $computer -Properties * -ErrorAction Continue $r = " GB" -f ((Get-WmiObject Win32_PhysicalMemory -ComputerName $computer | Measure-Object Capacity -Sum).Sum / 1GB) $x = gwmi win32_computersystem -ComputerName $computer | select @ Else {'Desktop Or Other something else.'}}},Manufacturer,@ Else {$_.model}}},username -ErrorAction Continue New-Object PSObject -Property @{ ServiceTag = $sr.serialnumber ComputerName = $ld.name IPV4Address=$ld.ipv4Address Enabled=$ld.Enabled Description=$ld.description OU=$ld.DistinguishedName.split(',')[1].split('=')[1] Type = $x.type Manufacturer=$x.Manufacturer Model=$x.Model RAM=$R ProcessorName=($xr.name | Out-String).Trim() NumberOfCores=($xr.NumberOfCores | Out-String).Trim() NumberOfLogicalProcessors=($xr.NumberOfLogicalProcessors | Out-String).Trim() AddressWidth=($xr.Addresswidth | Out-String).Trim() OperatingSystem=$ld.operatingsystem OperatingSystemServicePack=$ld.OperatingSystemServicePack OperatingSystemVersion=$ld.OperatingSystemVersion OperatingSystemHotfix=$ld.OperatingSystemHotfix LastLogonDate=$ld.lastlogondate ObjectCreated=$ld.Created ObjectModified=$ld.whenChanged LoggedInUser=$x.username } } catch [Exception] { "Error communicating with $computer, skipping to next" } } } $outtbl | select Computername,ServiceTag,IPV4Address,Description,Enabled,OU,Type,Manufacturer,Model,RAM,ProcessorName,NumberOfCores,NumberOfLogicalProcessors,AddressWidth,OperatingSystem,OperatingSystemServicePack,OperatingSystemVersion,OperatingSystemHotfix,ObjectCreated,ObjectModified,LoggedInUser,LastLogonDate | Format-Table * -Wrap -AutoSize | Out-String -Width 4096 | Out-File $env:USERPROFILE\Desktop\AD-Inventory.txt