none
Output in Foreach RRS feed

  • Frage

  • Hallo,

    ich wollte eine Liste in eine Datei schreiben lassen. Bei der Foreach-Schleife unten wird nur der letzte Eintrag geschrieben, und nicht alle Einträge (ca. 100).

    foreach($vmlist in $vm){
    	$vminfo = Get-VM $vmlist | Select-Object Name, PowerState, Notes
        Write-Output $vminfo | Out-File C:\test.txt
    }
    Was mache ich hier falsch? Ist "Write-Output" für diese Schleife ungeeignet?

    • Bearbeitet -honeybee- Freitag, 29. Januar 2021 10:21
    Freitag, 29. Januar 2021 10:20

Antworten

Alle Antworten

  • Du vergisst den -Append Schalter ;-)

    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert -honeybee- Freitag, 29. Januar 2021 10:44
    Freitag, 29. Januar 2021 10:21
  • Danke für den Hinweis. Jetzt wird im Output die Überschrift für jeden Eintrag angezeigt. Welchen Parameter braucht man, um das zu ändern, dass nur eine Überschrift für alle Einträge erscheint?
    Freitag, 29. Januar 2021 10:48
  • ... oder Du weist den Ausdruck einer Variablen zu und schreibst die Datei dann in einem Rutsch ...

    $Output =
    foreach ($vmlist in $vm) {
        Get-VM $vmlist | Select-Object Name, PowerState, Notes
    }
    $Output | Out-File C:\test.txt

    Eventuell wäre ein Export-CSV in diesem Fall vielleicht sowieso besser geeignet, da es sich ja um strukturierte Daten handelt. Dann also am Ende einfach:

    $Output | Export-Csv -Path C:\test.csv -NoTypeInformation


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Freitag, 29. Januar 2021 11:00