freshman2017
Goto Top

Bilder mit Powershell herunterladen

Hallo Zusammen,

ich habe eine TXT Datei mit nachfolgendem Aufbau (Input). In dieser steckt die Info mit einer Artikelnummer und dazugehörige Bild-Daten.

Mit Hilfe von PowerShell möchte ich gerne eine Output-Datei erzeugen, mit folgendem Aufbau (Output). Die Bilder sollen in ein Verzeichnis zusätzlich heruntergeladen werden.

Wäre das mit PowerShell möglich?


Input:

ArtNr|imageUrl
1|https://ostermeier.net/wp-content/uploads/2022/11/IMG_0453-750x398.jpeg
1|https://image.freepik.com/fotos-kostenlos/draufsicht-auf-verschiedene-arten-von-werkzeugen_23-2148428250.jpg
2|https://img.freepik.com/premium-photo/tools-assembly-repair-table_217516-943.jpg
2|https://inspiration.org/wp-content/uploads/2022/01/d24-2000x672-1-uai-1194x672.jpg
2|
3|https://ostermeier.net/wp-content/uploads/2022/11/IMG_0453-750x398.jpeg
3|https://image.freepik.com/fotos-kostenlos/draufsicht-auf-verschiedene-arten-von-werkzeugen_23-2148428250.jpg
3|https://img.freepik.com/premium-photo/tools-assembly-repair-table_217516-943.jpg
3|
4|https://ostermeier.net/wp-content/uploads/2022/11/IMG_0453-750x398.jpeg
4|https://image.freepik.com/fotos-kostenlos/draufsicht-auf-verschiedene-arten-von-werkzeugen_23-2148428250.jpg
4|https://img.freepik.com/premium-photo/tools-assembly-repair-table_217516-943.jpg
4|


Output:

Artikellnummer;Bild1;Bild2;Bild3;Bild5;Bild6;Bild7;
1;IMG_0453-750x398.jpeg;draufsicht-auf-verschiedene-arten-von-werkzeugen_23-2148428250.jpg;;;;;;
2;tools-assembly-repair-table_217516-943.jpg;d24-2000x672-1-uai-1194x672.jpg;;;;;;
3;IMG_0453-750x398.jpeg;draufsicht-auf-verschiedene-arten-von-werkzeugen_23-2148428250.jpg;tools-assembly-repair-table_217516-943.jpg;;;;;
4;IMG_0453-750x398.jpeg;draufsicht-auf-verschiedene-arten-von-werkzeugen_23-2148428250.jpg;tools-assembly-repair-table_217516-943.jpg;;;;;

Content-ID: 668282

Url: https://administrator.de/contentid/668282

Ausgedruckt am: 21.11.2024 um 12:11 Uhr

150704
Lösung 150704 20.09.2024 aktualisiert um 17:02:34 Uhr
Goto Top
Wäre das mit PowerShell möglich?
Klar.
# Ausgabeordner für Dateien
$outputfolder = "d:\output"  
# Eingabedatei
$importcsv = "d:\data.csv"  
# Ausgabedatei
$exportcsv = "d:\export.csv"  

[System.Net.ServicePointManager]::SecurityProtocol = 'Tls12'  

$export = foreach($imggroup in Import-Csv -Path $importcsv -Delimiter "|" | group "ArtNr"){  
    $cnt = 1
    $object = [ordered]@{Artikelnummer=$imggroup.Name}
    foreach($img in $imggroup.Group){
        try{
            Invoke-WebRequest -Uri $img.imageUrl.trim() -outfile (join-path $outputfolder (split-path $img.imageURL -Leaf)) -EA Stop
            $object."Bild$cnt" = split-path $img.imageURL -Leaf  
        }catch{
            write-host "Fehler beim runterladen: $($_.Exception.Message)" -F Red  
            $object."Bild$cnt" = "ERROR: Download Fehler!"  
        }
        $cnt++
    }
    [pscustomobject]$object
}
$export | export-csv -Path $exportcsv -Delimiter ";" -force -NoTypeInformation -Encoding UTF8  
freshman2017
freshman2017 20.09.2024 um 16:34:04 Uhr
Goto Top
Ich habe mein Input als data.csv gespeichert und erhalte leider den Fehler:

Import-Csv : Das Argument für den Parameter "Path" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder leer ist, und führen Sie   
den Befehl erneut aus.
In C:\Users\Administrator\Desktop\Bilder-Download\Bilder-Download.ps1:6 Zeichen:43
+ $export = foreach($imggroup in Import-Csv $importscv -Delimiter "|" | ...  
+                                           ~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Import-Csv], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ImportCsvCommand
 
Export-Csv : Das Argument für den Parameter "Path" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder leer ist, und führen Sie   
den Befehl erneut aus.
In C:\Users\Administrator\Desktop\Bilder-Download\Bilder-Download.ps1:21 Zeichen:28
+ $export | export-csv -Path $exportscv -Delimiter ";" -force -NoTypeIn ...  
+                            ~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Export-Csv], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ExportCsvCommand
150704
150704 20.09.2024 aktualisiert um 16:37:38 Uhr
Goto Top
War nur ein Buchstabendreher in der Variablen ...

P.s. nicht einfach nur kopieren sondern lesen, verstehen und dann erst ausführen, dann kannst du dir auch zukünftig selbst bei solchen Kleinigkeiten helfen.
freshman2017
freshman2017 20.09.2024 um 16:41:03 Uhr
Goto Top
Womit kann das jetzt noch zu tun haben?

Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Fehler beim runterladen: Ausnahme beim Aufrufen von "DownloadFile" mit 2 Argument(en):  "Ausnahmefehler während einer WebClient-Anforderung."  
Export-Csv : Das Argument für den Parameter "Path" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder leer ist, und führen Sie   
den Befehl erneut aus.
In C:\Users\Administrator\Desktop\Bilder-Download\Bilder-Download.ps1:28 Zeichen:28
+ $export | export-csv -Path $exportscv -Delimiter ";" -force -NoTypeIn ...  
+                            ~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Export-Csv], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.ExportCsvCommand
150704
150704 20.09.2024 aktualisiert um 16:52:45 Uhr
Goto Top
Scheinst noch ein veraltetes Management Framework oder System zu nutzen ... Füge mal das hier ganz oben ins Skript ein
[System.Net.ServicePointManager]::SecurityProtocol = 'Tls12'  
Und die untere Variable hast du auch nicht korrigiert. Nochmal komplett kopieren.