BITS in Powershell funktioniert nicht?

1 Antwort

Vom Beitragsersteller als hilfreich ausgezeichnet

Wenn man sowohl Batch als auch Powershell richtig zu nutzen weißt, funktioniert sowohl der Download einer Webseite/Datei wie auch ihr Aufruf.

In Deinem Fall hast Du schon beim Ziel mehrere Probleme eingebaut.

  • Dein Zielpfad kann Leerzeichen enthalten, wenn dein Username/-Profile Leerzeichen enthält (zB. Bei mir der Fall "C:\Users\Erzesel Secure") dann ist am Leerzeichen Schluss un man hat einen nicht vorhandenen Pfad. Hier helfen Quotes 'c:\Pfad mit Leerzeichen'
  • Du gibst als Quelle eine Webadresse an, jedoch keine Quelldatei. Woher soll Bits wissen dass die Zieldatei datei.bla.. heisen soll. Folglich wird die Überschrift als Name der Datei übernommen und keine Extension vergeben, wenn bei der Quelle kein Dateiname definiert wurde. ergo wenn kein Dateiname in der Quelle, sollte dieser im Ziel definiert werden.

Beim Aufruf der heruntegeladenen Seite folgt das nächste Problem.

  • Du verwendest die falsche Syntax für den Befehl START . Da Du wegen eventuelle Leerzeichen im Dateipfad wieder "Quotes" verwenden musst, muss für Start auch ein Fenstername angegeben werden. Dieser kann auch leer "" bleiben. also:
start "" "Pfad\aufzurufende Datei.ext"
  • da du die Datei "datei.blablabla" nennst kann start nicht wissen wie die Dateiendung .blabla zu öffnen ist. (start ist das geschriebene Equivalent zum anklicken einer Datei). Du kannst also nur mit Dateiendungen arbeiten, welche dem System bekannt sind!

DownloadWebsite.cmd

@echo off
echo blablabla
Powershell "Start-BitsTransfer -Source 'https://www.gutefrage.net/frage/bits-in-powershell-funktioniert-nicht' -Destination '%userprofile%\Desktop\blahbla.html'"
start "" "%userprofile%\Desktop\blahbla.html"
pause

downloadFile.cmd


Powershell "Start-BitsTransfer -Source 'https://img1.dreamies.de/img/766/b/f2wn56r4me2.jpg' -Destination '%userprofile%\Desktop'"
start "" "%userprofile%\Desktop\f2wn56r4me2.jpg"

Im übrigen ist es nicht erforderlich bei einem Inlineaufruf einer Powershellzeile Policies zu definieren, dies ist nur für den Start von PS-Scriptdateien nötig.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Erzesel  09.10.2021, 18:31

PS:

Wenn ich das starte,kommt ganze zeit nur "connecting"

weshalb dein Server die verbindun nicht annimmt und wartet musst Du selber wissen. Vielleicht wartet er auf Nutzername/Passwort. das müsstest Du schon im Befehl übergeben, dafür gibts die Argumente -Authentication <String> und -Credential -Credential <PSCredential>.

Woher soll Dein server wissen, das Du die Seite nicht in eiem Browser abrufst, also die Abfrage von Username/Passwort nicht sehen kannst? Powershell hingegen "sieht" nur, der server hält irgendwie die Verbindung aufrecht, tut aber sonst nichts... "connecting"

https://docs.microsoft.com/en-us/powershell/module/bitstransfer/start-bitstransfer?view=windowsserver2019-ps

1
Heyhowasgehtab 
Beitragsersteller
 11.10.2021, 15:03

Dieses blablabla war nur dafür gedacht um irgendeine Dateiendung darzustellen,klar hab ich .exe oder .bat genommen, allerdings habe ich hier blablabla genommen, trotzdem danke

0
Erzesel  11.10.2021, 15:37
@Heyhowasgehtab

Das ändert aber nichts an der falschen Syntax.

Das Dein Script ausfürbare Dateien downloaden und diese automatisch ausführen soll finde ich zugegebenermaßen bedenklich 🤔

1
Heyhowasgehtab 
Beitragsersteller
 12.10.2021, 11:51

Jo danke dir trotzdem vielmals✌️

1