دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
دانشنامه مارال هاست دانشنامه مارال هاست
دانشنامه مارال هاست دانشنامه مارال هاست
  • صفحه اصلی
  • مقالات
    • هاست اشتراکی
    • دامنه
    • سرور مجازی
    • کنترل پنل سی‌پنل
    • کنترل پنل پلسک
    • کنترل پنل دایرکت ادمین
    • ایمیل
    • CloudLinux
    • Cloudflare
  • تماس با ما
ویندوز
  • Folder icon closed Folder open iconویندوز سرور چیست و چه کاربردی دارد؟
  • Folder icon closed Folder open iconتفاوت Windows Server با Windows معمولی
  • Folder icon closed Folder open iconآشنایی با Server Manager در Windows Server
  • Folder icon closed Folder open iconFeature در Windows Server چیست؟ آشنایی با قابلیت‌ های تکمیلی ویندوز سرور
  • Folder icon closed Folder open iconآشنایی با Windows Admin Center؛ مدیریت ویندوز سرور از طریق مرورگر
  • Folder icon closed Folder open iconآشنایی با PowerShell در Windows Server؛ معرفی دستورات و کاربردها
  • Folder icon closed Folder open iconآموزش تنظیم و تغییر رمز عبور Administrator در Windows Server
  • Folder icon closed Folder open iconآموزش تنظیم Hostname در Windows Server
  • Folder icon closed Folder open iconآموزش تنظیم DNS در کارت شبکه Windows Server
  • Folder icon closed Folder open iconتنظیم Gateway در Windows Server
  • Folder icon closed Folder open iconآموزش تنظیم تاریخ و ساعت در Windows Server
  • Folder icon closed Folder open iconآموزش فعال‌سازی Remote Desktop در Windows Server
  • Folder icon closed Folder open iconآموزش تغییر پورت RDP در Windows Server
  • Folder icon closed Folder open iconبررسی وضعیت Device Manager در Windows Server
  • Folder icon closed Folder open iconآموزش نصب آپدیت‌های Windows Server
  • Folder icon closed Folder open iconآموزش تنظیم Windows Update در Windows Server
  • Folder icon closed Folder open iconغیرفعال کردن Automatic Update در شرایط خاص
  • Folder icon closed Folder open iconساخت Restore Point در Windows Server
  • Folder icon closed Folder open iconایجاد کاربر جدید در Windows Server
  • Folder icon closed Folder open iconافزودن کاربر به گروه Administrators
  • Folder icon closed Folder open iconچک‌لیست تنظیمات اولیه Windows Server
  • Folder icon closed Folder open iconآموزش تست استرس سرور ویندوز
  • Folder icon closed Folder open iconآموزش نصب iis
  • Folder icon closed Folder open iconآموزش نصب dns
  • Folder icon closed Folder open iconآموزش عیب‌یابی پر شدن ناگهانی فضای دیسک در ویندوز سرور
  • Folder icon closed Folder open iconپیدا کردن پردازش‌های مصرف‌کننده CPU
  • Folder icon closed Folder open iconتست SMTP در ویندوز به سمت مقصد
  • Folder icon closed Folder open iconآموزش ساخت رکورد های dns در ویندوز
  • Folder icon closed Folder open iconآموزش ساخت Website جدید در IIS
  • Folder icon closed Folder open iconآموزش بررسی IIS Logs برای عیب‌یابی سایت
  • Folder icon closed Folder open iconعیب‌یابی خطای 503 Service Unavailable در IIS
  • Folder icon closed Folder open iconعیب‌یابی خطای 403 Forbidden در IIS
  • Folder icon closed Folder open iconعیب‌یابی خطای 404 Not Found در IIS
  • Folder icon closed Folder open iconآموزش نصب و فعال‌سازی URL Rewrite در IIS
  • Folder icon closed Folder open iconآموزش راه‌اندازی Reverse Proxy در IIS با ARR
  • Folder icon closed Folder open iconآموزش تنظیم Binding در IIS
  • Folder icon closed Folder open iconآموزش تنظیم چند Domain روی یک IIS Server
  • Folder icon closed Folder open iconآموزش Redirect کردن HTTP به HTTPS در IIS
  • Folder icon closed Folder open iconآموزش تنظیم Application Pool در IIS
  • Folder icon closed Folder open iconعیب‌یابی خطای HTTP Error 500 در IIS
  • Folder icon closed Folder open iconآموزش بررسی System Log در Windows Server
  • Folder icon closed Folder open iconآموزش بررسی Application Log در Windows Server
  • Folder icon closed Folder open iconآموزش بررسی Security Log در Windows Server
  • Folder icon closed Folder open iconآموزش پیدا کردن Loginهای ناموفق در Windows Server
  • Folder icon closed Folder open iconآموزش پیدا کردن Process مرتبط با یک پورت با PowerShell
  • Folder icon closed Folder open iconآموزش بررسی Connectionهای فعال و Remote IPها با PowerShell
  • Folder icon closed Folder open iconآموزش دانلود فایل از اینترنت با PowerShell
  • Folder icon closed Folder open iconچرا در Windows Server فضای دیسک آزاد نمی‌شود؟ آموزش کامل عیب‌یابی فضای Disk
  • Folder icon closed Folder open iconآموزش نصب SQL Server 2025 در Windows Server
  • Folder icon closed Folder open iconآموزش مدیریت Windows Firewall با PowerShell
  • Folder icon closed Folder open iconآموزش مدیریت Application Poolهای IIS با PowerShell
ویندوز

آموزش دانلود فایل از اینترنت با PowerShell

آموزش دانلود فایل از اینترنت با PowerShell

مقدمه

PowerShell یکی از مهم‌ترین ابزارهای مدیریتی در Windows و Windows Server است که علاوه بر مدیریت سیستم، شبکه و سرویس‌ها، امکان دانلود فایل از اینترنت را نیز فراهم می‌کند.

در PowerShell معمولاً برای دانلود فایل از دستور Invoke-WebRequest استفاده می‌شود. این دستور از پروتکل‌های HTTP و HTTPS پشتیبانی می‌کند و امکان استفاده از Header سفارشی، احراز هویت، Proxy، Timeout و بسیاری از تنظیمات دیگر را فراهم می‌کند.

همچنین برای دانلود فایل‌های حجیم می‌توان از سرویس BITS و دستور Start-BitsTransfer استفاده کرد.

در این مقاله، روش‌های مختلف دانلود فایل از اینترنت با PowerShell را همراه با مثال‌های عملی بررسی می‌کنیم.


پیش‌نیازها

  • دسترسی به Windows یا Windows Server
  • دسترسی به PowerShell
  • اتصال اینترنت
  • دسترسی نوشتن در مسیر موردنظر

بررسی نسخه PowerShell

برای مشاهده نسخه PowerShell:

$PSVersionTable.PSVersion

نمونه خروجی:

Major  Minor  Patch
-----  -----  -----
5      1      19041

یا در PowerShell 7:

Major  Minor  Patch
-----  -----  -----
7      5      0

دستور اصلی دانلود فایل

برای دانلود فایل در PowerShell معمولاً از ساختار زیر استفاده می‌شود:

Invoke-WebRequest -Uri "URL" -OutFile "FILE"

برای مثال:

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "file.zip"

فایل در مسیر فعلی PowerShell ذخیره می‌شود.


دانلود یک فایل

برای دانلود ساده فایل:

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "file.zip"

پس از پایان دانلود، فایل:

file.zip

در Current Directory ذخیره خواهد شد.


مشاهده مسیر فعلی PowerShell

برای مشاهده مسیری که فایل در آن ذخیره خواهد شد:

Get-Location

نمونه:

Path
----
C:\Users\Administrator

دانلود فایل در مسیر مشخص

برای ذخیره فایل در مسیر دلخواه:

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "C:\Downloads\file.zip"

در این حالت فایل در مسیر زیر ذخیره می‌شود:

C:\Downloads\file.zip

ساخت پوشه قبل از دانلود

اگر پوشه مقصد وجود ندارد:

New-Item -ItemType Directory -Path "C:\Downloads"

سپس:

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "C:\Downloads\file.zip"

برای جلوگیری از خطا در صورت وجود پوشه:

New-Item -ItemType Directory -Path "C:\Downloads" -Force

دانلود فایل با نام دلخواه

اگر فایل اصلی نام دیگری داشته باشد، می‌توانید هنگام ذخیره نام جدید تعیین کنید:

Invoke-WebRequest -Uri "https://example.com/file.zip" -OutFile "C:\Downloads\backup.zip"

در این حالت فایل با نام:

backup.zip

ذخیره می‌شود.


دانلود فایل با متغیر

برای استفاده در Scriptها:

$url = "https://example.com/file.zip"
$output = "C:\Downloads\file.zip"

Invoke-WebRequest -Uri $url -OutFile $output

این روش برای Automation مناسب‌تر است.


دانلود چند فایل

فرض کنید چند URL دارید:

$urls = @(
    "https://example.com/file1.zip",
    "https://example.com/file2.zip",
    "https://example.com/file3.zip"
)

برای دانلود:

foreach ($url in $urls) {
    $fileName = Split-Path $url -Leaf
    Invoke-WebRequest -Uri $url -OutFile "C:\Downloads\$fileName"
}

فایل‌ها یکی‌یکی دانلود خواهند شد.


دانلود فایل‌ها از یک فایل متنی

ابتدا فایل:

C:\urls.txt

را ایجاد کنید:

https://example.com/file1.zip
https://example.com/file2.zip
https://example.com/file3.zip

سپس:

Get-Content "C:\urls.txt" | ForEach-Object {
    $fileName = Split-Path $_ -Leaf
    Invoke-WebRequest -Uri $_ -OutFile "C:\Downloads\$fileName"
}

بررسی وجود فایل پس از دانلود

برای بررسی وجود فایل:

Test-Path "C:\Downloads\file.zip"

اگر فایل وجود داشته باشد:

True

نمایش داده می‌شود.

در غیر این صورت:

False

مشاهده حجم فایل دانلودشده

Get-Item "C:\Downloads\file.zip"

برای نمایش فقط حجم:

(Get-Item "C:\Downloads\file.zip").Length

خروجی بر حسب Byte است.


دانلود فایل با Timeout

می‌توانید برای Request زمان Timeout مشخص کنید:

Invoke-WebRequest `
    -Uri "https://example.com/file.zip" `
    -OutFile "C:\Downloads\file.zip" `
    -TimeoutSec 30

اگر سرور در زمان تعیین‌شده پاسخ ندهد، Request متوقف می‌شود.


دانلود با User-Agent سفارشی

برخی وب‌سایت‌ها بر اساس User-Agent رفتار متفاوتی دارند.

برای تعیین User-Agent:

Invoke-WebRequest `
    -Uri "https://example.com/file.zip" `
    -OutFile "C:\Downloads\file.zip" `
    -UserAgent "Mozilla/5.0"

دانلود همراه با Header سفارشی

برای ارسال Header سفارشی:

$headers = @{
    "Authorization" = "Bearer TOKEN"
}

سپس:

Invoke-WebRequest `
    -Uri "https://api.example.com/file" `
    -Headers $headers `
    -OutFile "C:\Downloads\file.zip"

دانلود با Authorization Bearer Token

در یک دستور:

Invoke-WebRequest `
    -Uri "https://api.example.com/file" `
    -Headers @{
        Authorization = "Bearer TOKEN"
    } `
    -OutFile "C:\Downloads\file.zip"

این روش در APIها و Download Endpointهای محافظت‌شده کاربرد دارد.


دانلود با Basic Authentication

برای احراز هویت می‌توانید Credential دریافت کنید:

$credential = Get-Credential

سپس:

Invoke-WebRequest `
    -Uri "https://example.com/private/file.zip" `
    -Credential $credential `
    -OutFile "C:\Downloads\file.zip"

در صورت پشتیبانی سرور از این روش احراز هویت، Username و Password مورد استفاده قرار می‌گیرند.


دانلود با Proxy

اگر سرور از Proxy برای اینترنت استفاده می‌کند:

Invoke-WebRequest `
    -Uri "https://example.com/file.zip" `
    -Proxy "http://proxy.example.com:8080" `
    -OutFile "C:\Downloads\file.zip"

استفاده از Proxy همراه با Credential

ابتدا:

$proxyCredential = Get-Credential

سپس:

Invoke-WebRequest `
    -Uri "https://example.com/file.zip" `
    -Proxy "http://proxy.example.com:8080" `
    -ProxyCredential $proxyCredential `
    -OutFile "C:\Downloads\file.zip"

دانلود بدون بررسی Certificate

در نسخه‌های جدید PowerShell می‌توانید از:

Invoke-WebRequest `
    -Uri "https://example.com/file.zip" `
    -OutFile "C:\Downloads\file.zip" `
    -SkipCertificateCheck

استفاده کنید.

هشدار: گزینه -SkipCertificateCheck اعتبار Certificate را بررسی نمی‌کند و نباید به‌عنوان راه‌حل دائمی در محیط Production استفاده شود.

همچنین این پارامتر در همه نسخه‌های قدیمی Windows PowerShell در دسترس نیست.


دانلود فایل با Start-BitsTransfer

برای دانلود فایل می‌توانید از BITS نیز استفاده کنید.

ابتدا Module مربوط به BITS را بررسی کنید:

Get-Command Start-BitsTransfer

سپس:

Start-BitsTransfer `
    -Source "https://example.com/file.iso" `
    -Destination "C:\Downloads\file.iso"

BITS برای انتقال فایل، به‌خصوص در Windows، ابزار مناسبی محسوب می‌شود.


دانلود چند فایل با BITS

Start-BitsTransfer `
    -Source "https://example.com/file1.zip","https://example.com/file2.zip" `
    -Destination "C:\Downloads\file1.zip","C:\Downloads\file2.zip"

دانلود فایل حجیم با BITS

برای فایل‌های حجیم:

Start-BitsTransfer `
    -Source "https://example.com/large-file.iso" `
    -Destination "C:\Downloads\large-file.iso"

BITS برای انتقال فایل‌های بزرگ و انتقال‌هایی که ممکن است با اختلال شبکه مواجه شوند گزینه قابل بررسی است.


دانلود در پس‌زمینه با BITS

برای ایجاد Job غیرهم‌زمان:

Start-BitsTransfer `
    -Source "https://example.com/file.iso" `
    -Destination "C:\Downloads\file.iso" `
    -Asynchronous `
    -DisplayName "ISO Download"

برای مشاهده Jobها:

Get-BitsTransfer

مشاهده وضعیت دانلود BITS

Get-BitsTransfer |
Select-Object DisplayName,JobState,BytesTransferred,BytesTotal

نمونه:

DisplayName  JobState     BytesTransferred BytesTotal
-----------  --------     ----------------  ----------
ISO Download Transferring 524288000        2147483648

تکمیل Job در BITS

در دانلود Asynchronous، پس از انتقال کامل فایل باید Job را Complete کنید.

ابتدا:

Get-BitsTransfer

Job موردنظر را دریافت کنید:

$job = Get-BitsTransfer -Name "ISO Download"

سپس:

Complete-BitsTransfer -BitsJob $job

لغو دانلود BITS

برای لغو Job:

$job = Get-BitsTransfer -Name "ISO Download"
Remove-BitsTransfer -BitsJob $job

دانلود با curl در PowerShell

نسخه‌های جدید Windows معمولاً ابزار curl.exe را نیز در اختیار دارند.

برای بررسی:

curl.exe --version

برای دانلود فایل:

curl.exe -L "https://example.com/file.zip" -o "C:\Downloads\file.zip"

پارامتر:

-L

باعث دنبال کردن Redirectها می‌شود.

و:

-o

نام فایل خروجی را تعیین می‌کند.


ادامه دانلود نیمه‌تمام با curl

یکی از قابلیت‌هایی که curl.exe برای دانلود ارائه می‌دهد، Resume است:

curl.exe -L -C - "https://example.com/file.iso" -o "C:\Downloads\file.iso"

گزینه:

-C -

تلاش می‌کند دانلود را از ادامه فایل موجود انجام دهد، البته سرور مقصد نیز باید از این قابلیت پشتیبانی کند.


دانلود فایل با لینک Redirect

بسیاری از لینک‌های Download ابتدا Redirect می‌شوند.

Invoke-WebRequest معمولاً Redirectهای HTTP را مدیریت می‌کند.

مثال:

Invoke-WebRequest `
    -Uri "https://example.com/download" `
    -OutFile "C:\Downloads\software.exe"

دانلود فایل EXE

Invoke-WebRequest `
    -Uri "https://example.com/software.exe" `
    -OutFile "C:\Downloads\software.exe"

قبل از اجرای فایل EXE دانلودشده، منبع فایل و Signature آن را بررسی کنید.


بررسی Digital Signature فایل دانلودشده

برای فایل‌های Executable:

Get-AuthenticodeSignature "C:\Downloads\software.exe"

نمونه وضعیت معتبر:

Status
------
Valid

وجود Signature معتبر یکی از مواردی است که می‌تواند در بررسی اصالت فایل مفید باشد.


محاسبه Hash فایل دانلودشده

برای بررسی Hash:

Get-FileHash "C:\Downloads\file.zip"

پیش‌فرض معمولاً SHA256 است.

نمونه:

Algorithm Hash
--------- ----
SHA256    A12B34C56D...

بررسی SHA256 فایل

به‌صورت صریح:

Get-FileHash `
    -Path "C:\Downloads\file.zip" `
    -Algorithm SHA256

اگر سایت سازنده Hash رسمی منتشر کرده باشد، مقدار دانلودشده را با آن مقایسه کنید.


دانلود و بررسی موفقیت عملیات

می‌توانید از try و catch استفاده کنید:

try {
    Invoke-WebRequest `
        -Uri "https://example.com/file.zip" `
        -OutFile "C:\Downloads\file.zip" `
        -ErrorAction Stop

    Write-Host "Download completed successfully."
}
catch {
    Write-Host "Download failed:"
    Write-Host $_.Exception.Message
}

این روش برای Scriptهای مدیریتی مناسب‌تر است.


دانلود فقط در صورت نبود فایل

برای جلوگیری از دانلود دوباره:

$file = "C:\Downloads\file.zip"

if (-not (Test-Path $file)) {
    Invoke-WebRequest `
        -Uri "https://example.com/file.zip" `
        -OutFile $file
}

دانلود و جایگزینی فایل قبلی

در صورت وجود فایل:

$file = "C:\Downloads\file.zip"

if (Test-Path $file) {
    Remove-Item $file -Force
}

Invoke-WebRequest `
    -Uri "https://example.com/file.zip" `
    -OutFile $file

مشاهده Headerهای فایل قبل از دانلود

می‌توانید ابتدا Request را بدون ذخیره فایل بررسی کنید:

$response = Invoke-WebRequest -Uri "https://example.com/file.zip"

سپس:

$response.Headers

اطلاعات Header پاسخ نمایش داده می‌شود.


مشاهده Status Code

$response = Invoke-WebRequest -Uri "https://example.com"

$response.StatusCode

خروجی موفق معمولاً:

200

است.


مشاهده Content-Type

$response = Invoke-WebRequest -Uri "https://example.com"

$response.Headers["Content-Type"]

برای مثال:

application/zip

یا:

text/html

مشاهده Help

برای مشاهده راهنمای دستور:

Get-Help Invoke-WebRequest

راهنمای کامل:

Get-Help Invoke-WebRequest -Full

مثال‌ها:

Get-Help Invoke-WebRequest -Examples

برای BITS:

Get-Help Start-BitsTransfer -Full

مهم‌ترین پارامترهای Invoke-WebRequest

پارامترتوضیح
-Uriآدرس فایل یا Resource
-OutFileمسیر ذخیره فایل
-Headersارسال Header سفارشی
-UserAgentتعیین User-Agent
-Credentialاستفاده از Credential
-Proxyتعیین Proxy Server
-ProxyCredentialCredential مربوط به Proxy
-TimeoutSecتعیین Timeout
-Methodتعیین HTTP Method
-SkipCertificateCheckنادیده گرفتن Certificate در نسخه‌های پشتیبانی‌شده

تفاوت Invoke-WebRequest و Start-BitsTransfer

ویژگیInvoke-WebRequestStart-BitsTransfer
دانلود فایل✅✅
HTTP/HTTPS✅✅
Header سفارشی✅محدودتر
Bearer Token✅محدودتر
مناسب API✅❌
دانلود پس‌زمینهمحدود✅
مدیریت Job❌✅
مناسب فایل حجیم✅✅
مناسب Automation✅✅
کنترل Request HTTPبیشترکمتر

برای دانلودهای عادی و Scriptها معمولاً:

Invoke-WebRequest

انتخاب مناسبی است.

برای انتقال‌های پس‌زمینه و برخی دانلودهای طولانی:

Start-BitsTransfer

می‌تواند گزینه مناسبی باشد.


تفاوت Invoke-WebRequest و curl

ویژگیInvoke-WebRequestcurl.exe
دانلود فایل✅✅
HTTP/HTTPS✅✅
Header سفارشی✅✅
Authentication✅✅
Resume Downloadمحدود✅
API Request✅✅
خروجی PowerShell Object✅❌
مناسب PowerShell Script✅✅
Cross-platform✅ در PowerShell جدید✅

اگر Script کاملاً PowerShell است، Invoke-WebRequest معمولاً طبیعی‌ترین انتخاب است.

اگر Resume و قابلیت‌های تخصصی انتقال HTTP موردنیاز باشد، curl.exe نیز گزینه مناسبی است.


خطاهای رایج

Unable to connect to the remote server

PowerShell نمی‌تواند به سرور مقصد متصل شود.

ابتدا شبکه را بررسی کنید:

Test-NetConnection example.com -Port 443

The remote name could not be resolved

این خطا معمولاً به DNS مربوط است.

برای بررسی:

Resolve-DnsName example.com

یا:

nslookup example.com

404 Not Found

URL فایل اشتباه است یا فایل دیگر در مسیر موردنظر وجود ندارد.

URL را بررسی کنید.


403 Forbidden

سرور اجازه دسترسی به فایل را نمی‌دهد.

ممکن است نیاز به Authentication، Token، Cookie یا Header خاص وجود داشته باشد.


401 Unauthorized

دسترسی به فایل نیازمند Authentication است.

Credential یا Token را بررسی کنید.


The request was aborted: Could not create SSL/TLS secure channel

این خطا ممکن است به TLS یا Certificate مربوط باشد.

در سیستم‌های قدیمی ممکن است نیاز باشد TLS 1.2 فعال شود.

برای Windows PowerShell قدیمی:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

سپس دوباره دانلود را آزمایش کنید.


Could not establish trust relationship for the SSL/TLS secure channel

Certificate سایت معتبر نیست یا سیستم نمی‌تواند Chain آن را تأیید کند.

بهترین راه، اصلاح Certificate یا Trust Store است.

استفاده از Skip Certificate Validation فقط برای تست توصیه می‌شود.


Access to the path is denied

PowerShell اجازه نوشتن در مسیر مقصد را ندارد.

برای مثال مسیر:

C:\Windows\

ممکن است نیازمند دسترسی Administrator باشد.

مسیر دیگری مانند:

C:\Downloads\

را انتخاب کنید یا PowerShell را با Administrator اجرا کنید.


Download بسیار کند است

موارد زیر را بررسی کنید:

  • سرعت اینترنت سرور
  • محدودیت سرور مقصد
  • Latency
  • Packet Loss
  • Proxy
  • Firewall
  • محدودیت Bandwidth VPS
  • سرعت Storage

برای تست ارتباط:

Test-NetConnection example.com -Port 443

بهترین روش‌ها

  • برای Scriptهای PowerShell از Invoke-WebRequest استفاده کنید.
  • برای فایل‌های حجیم و انتقال‌های پس‌زمینه، BITS را بررسی کنید.
  • همیشه فایل را از منبع رسمی دریافت کنید.
  • برای فایل‌های نرم‌افزاری Hash یا Digital Signature را بررسی کنید.
  • Token و Password را مستقیماً داخل Scriptهای عمومی قرار ندهید.
  • از HTTPS به‌جای HTTP استفاده کنید.
  • برای Automation از try و catch استفاده کنید.
  • قبل از دانلود فایل بزرگ، فضای خالی Disk را بررسی کنید.
  • فایل‌های EXE و Scriptهای ناشناس را مستقیماً اجرا نکنید.
  • از غیرفعال کردن بررسی Certificate در Production خودداری کنید.

اشتباهات رایج

  • دانلود فایل از URL ناشناس
  • اجرای مستقیم فایل دانلودشده بدون بررسی
  • ذخیره Password یا Token به‌صورت Plain Text
  • استفاده دائمی از Skip Certificate Validation
  • دانلود فایل حجیم بدون بررسی فضای Disk
  • استفاده از مسیر اشتباه در -OutFile
  • اشتباه گرفتن URL صفحه Download با URL مستقیم فایل
  • نادیده گرفتن HTTP Status Code
  • عدم بررسی Hash فایل‌های حساس
  • استفاده از PowerShell بدون دسترسی مناسب به مسیر مقصد

چک‌لیست

پس از مطالعه این مقاله باید بتوانید:

  • با PowerShell فایل دانلود کنید.
  • فایل را با نام دلخواه ذخیره کنید.
  • مسیر مقصد دانلود را مشخص کنید.
  • چند فایل را دانلود کنید.
  • Header سفارشی ارسال کنید.
  • از Bearer Token استفاده کنید.
  • Proxy تنظیم کنید.
  • Timeout تعیین کنید.
  • با BITS فایل دانلود کنید.
  • دانلود پس‌زمینه ایجاد کنید.
  • فایل دانلودشده را با Hash بررسی کنید.
  • Digital Signature فایل EXE را بررسی کنید.
  • خطاهای رایج دانلود را عیب‌یابی کنید.

مقالات مرتبط

  • آموزش کامل Invoke-WebRequest در PowerShell
  • آموزش کامل curl در Windows Server
  • آموزش Start-BitsTransfer در PowerShell
  • آموزش Test-NetConnection در PowerShell
  • آموزش بررسی Connectionهای فعال با PowerShell
  • آموزش Resolve-DnsName در PowerShell
  • آموزش مدیریت فایل‌ها با PowerShell
  • آموزش Extract کردن ZIP با PowerShell
  • آموزش Get-FileHash در PowerShell
  • آموزش مدیریت Processها با PowerShell

مطالعات بیشتر و منابع رسمی

برای مطالعه مستندات رسمی PowerShell می‌توانید از منابع زیر استفاده کنید:

  • Microsoft Learn – Invoke-WebRequest
  • Microsoft Learn – Start-BitsTransfer
  • Microsoft Learn – Get-BitsTransfer
  • Microsoft Learn – Get-FileHash
  • Microsoft Learn – Get-AuthenticodeSignature

برای مشاهده مستندات داخل PowerShell نیز می‌توانید از دستورات زیر استفاده کنید:

Get-Help Invoke-WebRequest -Full
Get-Help Start-BitsTransfer -Full
Get-Help Get-FileHash -Full

جمع‌بندی

PowerShell ابزارهای مختلفی برای دانلود فایل از اینترنت در Windows و Windows Server در اختیار مدیر سیستم قرار می‌دهد. برای اکثر دانلودهای معمولی و Scriptهای مدیریتی، دستور Invoke-WebRequest یکی از ساده‌ترین و کاربردی‌ترین گزینه‌ها است.

با استفاده از این دستور می‌توانید فایل را از طریق HTTP یا HTTPS دریافت کنید، مسیر و نام فایل را مشخص کنید، Header و Authentication ارسال کنید و تنظیماتی مانند Proxy و Timeout را کنترل کنید.

برای دانلودهای پس‌زمینه یا انتقال فایل‌های حجیم نیز Start-BitsTransfer گزینه کاربردی دیگری است. علاوه بر این، ابزار curl.exe می‌تواند برای سناریوهایی مانند Resume Download و کنترل پیشرفته‌تر Request مورد استفاده قرار گیرد.

در محیط‌های Production بهتر است علاوه بر دانلود فایل، صحت آن را با Get-FileHash یا Get-AuthenticodeSignature بررسی کنید تا ریسک اجرای فایل‌های تغییرکرده یا نامعتبر کاهش پیدا کند.

هنوز نیاز به کمک دارید؟

آیا سوالی دارید؟

آیا این مقاله برای شما مفید بود؟ بله خیر

نظرات خود را بنویسید... لغو پاسخ

اشتراک گذاری این مقاله

آموزش دانلود فایل از اینترنت با PowerShell

کپی کردن لینک

Clipboard Icon

جدیدترین مقالات

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی ...
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

تقویم

سپتامبر 2026
شیدسچپج
 1234
567891011
12131415161718
19202122232425
2627282930 
« جولای    

عضویت

جدیدترین پست‌ها

آموزش نصب و راه‌اندازی RustDesk Server با Docker
آموزش نصب و راه‌اندازی RustDesk Server با Docker
2 minutes جولای 2, 2026
آموزش نصب و راه‌اندازی Matrix Synapse + Element Web + Coturn با Docker روی Ubuntu 24.04
4 minutes جولای 2, 2026
CXS چیست و چگونه کار می‌کند
1 minute می 3, 2026
ساخت سرور چت المنت بروی لینوکس
5 minutes آوریل 25, 2026
Geo Routing و Geo DNS
2 minutes آوریل 22, 2026

سلام