PowerShell Invoke-WebRequest, comment utiliser automatiquement le nom de fichier d'origine?

Comment puis-je utiliser Invoke-WebRequest pour télécharger un fichier, mais le faire automatiquement le nom de fichier de la même manière que si j'ai téléchargé via un navigateur? Je n'ai pas trouvé un moyen de faire -OutFile travail sans spécifier manuellement le nom de fichier. Je suis très bien avec ce, concernant quelques autres lignes de code.

Une bonne solution:

  • De travail même si le nom de fichier n'est pas dans l'URL de la requête. Par exemple, l'URL de téléchargement de Visual Studio x64 Outils de Débogage à Distance est http://go.microsoft.com/fwlink/?LinkId=393217 mais il télécharge le fichier rtools_setup_x64.exe.
  • Pas sauver tout le fichier en mémoire avant de les écrire sur le disque, à moins que Invoke-WebRequest déjà fait de même avec l'-OutFile paramètre (?)

Merci!

  • Ce qui se passe lorsque vous utilisez l'url directe dans votre extrait de code - http://download.microsoft.com/download/D/2/8/D28C6482-555B-4777-876F-85897C071FB6/rtools_setup_x64.exe
  • Apparemment Invoke-WebRequest encore vous oblige à spécifier le nom de fichier local.
  • Je tiens à ajouter, une bonne solution d'utiliser le Contenu de l'en-tête de Disposition pour résoudre le nom du fichier. wget et curl faire tout cela et c'est une simple attente d'une commande de téléchargements d'une URL à un nom de fichier. De nombreux services de servir un "fichier", mais derrière une URL qui n'est pas lui-même contient le nom de fichier.
  • Je n'ai trouver PS cette mise en œuvre qui fait honneur à l'-tête Content-Disposition. Il serait peut-être possible d'extraire simplement que la fonctionnalité pour créer un PS qui l'Invoque-WebRequest peut être transmis à enregistrer le fichier à l'aide de la meilleure indication du nom de fichier à partir de la réponse.
InformationsquelleAutor Vimes | 2014-08-04