وحدة PowerShell لتنزيل الملفات.
يتطلب منك Invoke-WebRequest توفير اسم ملف الإخراج ، والذي قد لا تعرفه مقدمًا ، وليس من الممكن دائمًا استخراجه من عنوان URL.
كما أنه يحتفظ بالملف بأكمله في الذاكرة أثناء التنزيل ، وهو أخبار سيئة في حالة تنزيل ملفات كبيرة.
لن يحتفظ بالتاريخ المعدل للملف المصدر الأصلي كما يفعل العديد من المتصفحات.
أيضًا (على Windows PowerShell مع تعيين $ ProgressPreference كإعداد افتراضي) يتم تحديث شريط التقدم بشكل متكرر بحيث يبطئ بشكل كبير في التنزيل.
يمكن لـ StartStransfer تحديد اسم الملف تلقائيًا ، لكنه لا يعمل مع جميع عناوين URL ويتم دعمه فقط على Windows.
تتطلب بعض عناوين URL أن وكلاء مستخدمين مختلفين يتصلون بنجاح.
هذه الوحدة تحل هذه المشاكل:
يستخدم فئة .NET HTTPCLIENT (التي ينصح بها الآن لاستخدامها من قبل Microsoft على فئة WebClient التي تم تجاهلها الآن).
سيحاول أولاً الاستيلاء على اسم الملف من رأس تحديد المحتوى. يتم الحصول على الرؤوس من خلال طلب GET منتظم (حيث تبين أن بعض خوادم الويب ترفض طلبات الرأس). إذا لم يكن هذا الرأس موجودًا ، فسوف يستخرج اسم الملف من عنوان URL المطلق (نظرًا لأن عنوان URL المقدم قد يعيد توجيهه إلى مكان آخر).
يتم دفق الملف مباشرة إلى القرص بدلاً من الاحتفاظ به بالكامل في الذاكرة.
سيتم تحديث التاريخ المعدل بمجرد اكتمال التنزيل لمطابقة الرأس المعدل الأخير إذا تم العثور عليه.
يقتصر شريط التقدم على تحديث كل 250 مللي ثانية لمنع الإفراط في استخدام موارد النظام.
ستتم محاولة سلاسل وكيل المستخدمين لـ Chrome و GoogleBot Web Crawler افتراضيًا.
التثبيت من معرض PowerShell عن طريق تشغيل الأمر التالي:
تثبيت وحدة -name name psdownload
solve-uri "https://aka.ms/vs/17/release/vc_redist.x64.exe"
سيؤدي ذلك إلى إرجاع URI المطلق (URI المعاد توجيهه) ، وكذلك اسم الملف وحجم الملف وتاريخ تعديله الأخير إذا كان متاحًا من رؤوس الاستجابة.
invoke -download -uri "https://aka.ms/vs/17/release/vc_redist.x64.exe" -destination "$ env: UserProfileDownloads"
سيؤدي ذلك إلى تنزيل الملف إلى مجلد التنزيلات.
يتم دعم إدخال خط الأنابيب أيضًا:
"https://aka.ms/vs/17/release/vc_redist.x64.exe"،"https://aka.ms/vs/17/release/vc_redist.x86.exe" | استدعاء التنزيل -أقيمت "$ env: UserProfileDownloads"
يتم قبول عنوان URL أيضًا كمستعار لـ URI .
المعلمات الاختيارية:
اسم الملف
استخدم هذا لتجاوز اسم الملف بدلاً من محاولة اكتشاف تلقائي.
useragent
Mozilla/5.0 (Windows NT 10.0 ؛ Win64 ؛ X64) AppleWebkit/537.36 (KHTML ، مثل Gecko) Chrome/116.0.0.0 Safari/537.36
googlebot/2.1 (+http: //www.google.com/bot.html)
تجاوز وكيل المستخدم الافتراضي. بشكل افتراضي ، سوف يدور من خلال استخدام:
الرؤوس
الافتراضي هو @{'قبول' = ' / '} ، وهو أمر ضروري لخداع بعض الخوادم في تقديم تنزيل ، مثل من filezilla.
Temppath
افتراضيًا ، سيتم حفظ التنزيل قيد التقدم إلى ٪ temp ٪ / $ env: temp.
تجاهل
تجاهل الرأس المعدل التاريخ ، سيكون Modified هو تاريخ تنزيل الملف بدلاً من ذلك.
blockfile
حدد الملف كما تم تنزيله من الإنترنت (افتراضيًا لا يفعل ذلك).
noclobber
استخدم هذا لمنع الكتابة فوق ملف موجود.
noprogress
قمع شريط التقدم.
Passhru
إرجاع كائن FileInfo إلى خط الأنابيب للملف الذي تم تنزيله.
تم اختبار هذا مقابل عدد كبير من عناوين URL ، يرجى تقديم مشكلة إذا لم يتمكن من تنزيل ملف معين. لاحظ أن بعض صفحات الويب قد تعمل بعض JavaScript لتشغيل التنزيل الفعلي. هذا النوع من عنوان URL غير مدعوم ، يجب أن يشير مباشرة إلى مورد ما دون الحاجة إلى تنفيذ أي نصوص من جانب العميل.