โมดูล PowerShell สำหรับการดาวน์โหลดไฟล์
Invoke-Webrequest ต้องการให้คุณจัดหาชื่อไฟล์เอาท์พุทซึ่งคุณอาจไม่ทราบล่วงหน้าและไม่สามารถแยกออกจาก URL ได้เสมอไป
นอกจากนี้ยังถือไฟล์ทั้งหมดในหน่วยความจำในขณะที่ดาวน์โหลดซึ่งเป็นข่าวร้ายหากดาวน์โหลดไฟล์ขนาดใหญ่
มันจะไม่เก็บวันที่แก้ไขของไฟล์ต้นฉบับเป็นเบราว์เซอร์จำนวนมาก
นอกจากนี้ (บน Windows PowerShell พร้อมชุด $ ProgressPreference เป็นค่าเริ่มต้น) แถบความคืบหน้าได้รับการอัปเดตบ่อยครั้งจนทำให้การดาวน์โหลดช้าลงอย่างมาก
Start-BitStransfer สามารถกำหนดชื่อไฟล์โดยอัตโนมัติ แต่ไม่ทำงานสำหรับ URL ทั้งหมดและรองรับ Windows เท่านั้น
URL บางตัวต้องการตัวแทนผู้ใช้ที่แตกต่างกันเชื่อมต่อสำเร็จ
โมดูลนี้แก้ปัญหาเหล่านี้:
มันใช้คลาส. NET HTTPClient (ซึ่งตอนนี้แนะนำสำหรับการใช้งานโดย Microsoft ผ่านคลาส WebClient ที่เลิกใช้แล้วในขณะนี้)
มันจะพยายามคว้าชื่อไฟล์จากส่วนหัวของเนื้อหา ส่วนหัวจะได้รับจากคำขอ GET ปกติ (เนื่องจากเว็บเซิร์ฟเวอร์บางตัวได้รับการแสดงเพื่อปฏิเสธคำขอหัว) หากส่วนหัวนี้ไม่มีอยู่มันจะแยกชื่อไฟล์ออกจาก URL สัมบูรณ์ (เนื่องจาก URL ที่ให้มาอาจเปลี่ยนเส้นทางที่อื่น)
ไฟล์ถูกสตรีมโดยตรงไปยังดิสก์แทนที่จะถือไว้ในหน่วยความจำทั้งหมด
วันที่แก้ไขจะได้รับการอัปเดตเมื่อการดาวน์โหลดเสร็จสมบูรณ์เพื่อให้ตรงกับส่วนหัวที่แก้ไขล่าสุดหากพบ
แถบความคืบหน้าถูก จำกัด ให้อัปเดตทุก ๆ 250ms เพื่อป้องกันการใช้ทรัพยากรระบบมากเกินไป
สตริงตัวแทนผู้ใช้สำหรับ Chrome และ googlebot web crawler จะถูกพยายามตามค่าเริ่มต้น
ติดตั้งจากแกลเลอรี PowerShell โดยเรียกใช้คำสั่งต่อไปนี้:
ติดตั้งโมดูล -ชื่อ psdownload
Resolve-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"phtps"phttps://aka.ms/vs/17/release/vc_redist.x86.exe" | Invoke -Download -destination "$ env: userprofiledownloads"
URL ยังได้รับการยอมรับว่าเป็นนามแฝงของ URI
พารามิเตอร์เสริม:
ชื่อไฟล์
ใช้สิ่งนี้เพื่อแทนที่ชื่อไฟล์แทนที่จะพยายามตรวจจับอัตโนมัติ
ผู้ใช้งาน
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
เทมพัท
โดยค่าเริ่มต้นการดาวน์โหลดระหว่างดำเนินการจะถูกบันทึกเป็น % temp % / $ env: temp
เพิกเฉย
ละเว้นส่วนหัวที่แก้ไขวันที่ที่แก้ไขจะเป็นวันที่ที่ดาวน์โหลดไฟล์แทน
blockfile
ทำเครื่องหมายไฟล์ตามที่ดาวน์โหลดจากอินเทอร์เน็ต (โดยค่าเริ่มต้นจะไม่ทำเช่นนี้)
คนโง่
ใช้สิ่งนี้เพื่อป้องกันการเขียนทับไฟล์ที่มีอยู่
ความคืบหน้า
ปราบปรามแถบความคืบหน้า
passthru
ส่งคืนวัตถุ FileInfo ไปยังไปป์ไลน์สำหรับไฟล์ที่ดาวน์โหลด
สิ่งนี้ได้รับการทดสอบกับ URL จำนวนมากโปรดส่งปัญหาหากไม่สามารถดาวน์โหลดไฟล์เฉพาะได้ โปรดทราบว่าหน้าเว็บบางหน้าอาจเรียกใช้ JavaScript เพื่อทริกเกอร์การดาวน์โหลดจริง ไม่รองรับ URL ประเภทนี้จะต้องชี้ไปที่ทรัพยากรโดยตรงโดยไม่จำเป็นต้องเรียกใช้สคริปต์ฝั่งไคลเอ็นต์ใด ๆ