Powershell Erstellen neue Zeile für mehrere array-Objekte mit Export-csv
Habe ich ein Kuckucksei, dass ich noch nicht viel gesehen, die schreiben auf. Wie auch immer, hier geht.
Ich versuche zu bauen, ein array, und exportieren Sie Sie in CSV. Das problem ist, wenn es mehr als ein Ergebnis zurückgegeben, ich kann nicht herausfinden, wie Sie es zu der CSV-Datei als neue Zeile. Ich bin derzeit mit einem join zu werfen, alle Ergebnisse in die gleiche Zelle, aber das ist nicht optimal. Was ich wirklich mag zu tun ist, fügen Sie eine neue Zeile und werfen Sie die zusätzlichen Ergebnisse, darunter in der gleichen Spalte. Macht das Sinn? Hier ist, was ich jetzt habe:
# Grab all VMs, put into variable
$vms = Get-VM
# Use to build report
foreach ($vm in $vms){
New-Object PSObject -Property @{
VMName = $vm.Name
UsedSpaceGB = $vm.UsedSpaceGB
StorageAllocatedGB = ($vm.HardDisks.capacitygb | Measure-Object -Sum).Sum
NumberOfCPUs = $cm.NumCpu
MemoryGB = $vm.MemoryGB
Datastores = Get-Datastore -VM $vm
Application = ($vm | Get-Annotation -CustomAttribute Applications -ErrorAction SilentlyContinue).Value | select
} | select VMName,@{label="Application";expression={$_.Application -join ","}},UsedSpaceGB,StorageAllocatedGB,NumberOfCPUs,MemoryGB,@{l="Datastores";e={$_.Datastores -join ","}} | Export-Csv -Path C:\script\VMCapacityUsedByApp.csv -NoClobber -Append -NoTypeInformation
}
Durch die Art und Weise, diese ist mit VMware PowerCLI-Snap-in. Jede Hilfe wird sehr geschätzt.
- Welche Eigenschaft ist Ihnen mehrere gibt?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, sieht aus wie datenspeicher und Anwendungen sind die einzigen Felder, die sind wieder arrays nach deinen bisherigen code. Unter der Annahme, dass die $cm.NumCpu sein sollte, war $vm.NumCpu der folgende code sollte das tun, was Sie wollen. Sie werden herausfinden, wenn Sie mehr datenspeicher oder Anwendungen, und dann eine Schleife durch die Erweiterung des arrays für diese Felder erstellen neuer Datensätze für die gleiche VM Auflistung zusätzlicher datenspeicher und Anwendungen, bis es läuft out-of-records. Ich habe es, um nur eine Liste alle details auf einer VM auf dem ersten Album, aber ich bin sicher, Sie können herausfinden, wie zu ändern, wenn nötig. Versuchen, diesen code und sehen, wie es aussieht auf Sie:
Kann es eine weitere elegante Möglichkeit, es zu tun, aber das sollte funktional sein für Sie zumindest. Ich habe keine VM-Maschinen zu testen, gegen, oder das plugin, das Sie verwenden, so dass ich aus Daten, die im Einklang mit dem, was du bist, ihn zu füttern (Saiten für alle Felder außer datastores und die Anwendung, die beide Ihre eigenen array von strings) und endete mit Ausgabe wie diese:
Das ist das, was Sie suchen, denke ich.