2017-10-13 2 views
1

Ich versuche, alle Bilder, ihre Namen und Größen aus einem Ordner zu bekommen. Ich habe über 2000 davon. Ich weiß genug über die Programmierung, dass ich diesen Code aus anderen Stack-Überlauf-Fragen zusammensetzen konnte. Alles funktioniert wie erwartet außer der Linie $imgInfo | Out-File -FilePath $outFile -Append.Variable wird nicht in Datei geschrieben

$outFile = "G:\tempFile\imageSizes.txt" 

$(Get-ChildItem -Filter *.jpg).FullName | ForEach-Object { 
    $img = [Drawing.Image]::FromFile($_); 
    $imgInfo = "$([System.IO.Path]::GetFileName($_)) $($img.Width) x $($img.Height)" 
    return $imgInfo # this line is to check that $imgInfo has the correct information 
    $imgInfo | Out-File -FilePath $outFile -Append # this line isn't working 
} 

Ich versuchte $imgInfo | Out-File -FilePath $outFile -Append mit $imgInfo | Add-Content -Path $outFile und die Schaffung der entsprechenden Datei zu ersetzen, aber das entweder nicht funktioniert hat.

+5

ersetzen Was denken Sie 'return' tut? – PetSerAl

+0

'return' beendet den' ForEach-Object' Skriptblock (Code zwischen '{}'). –

+0

Ich hätte daran denken sollen. Was ist der beste Weg, um einen Wert in einer PowerShell-Variablen zu drucken? Gibt es in C++ eine 'print'-Funktion ähnlich wie 'cout' oder schreibe ich einfach' $ imgInfo', damit der Wert in der Variable auf dem Bildschirm gespeichert wird? –

Antwort

2

Wenn Sie es nur überprüfen möchten, verwenden Sie nicht zurück; es kommt aus dem Block.

nur

return $imgInfo 

mit

Write-output $imgInfo 
Verwandte Themen