PowerShell'de URL'den Dosya Nasıl İndirilir?


Çok yaygın bir gereksinim, PowerShell'deki bir URL'den dosya indirebilmenizdir. Bu PowerShell eğitiminde, PowerShell kullanarak URL'lerden dosya indirmeye yönelik farklı yöntemleri keşfedeceğiz ve her yöntem için örnekler ve tam komut dosyaları sunacağız.

PowerShell'deki bir URL'den dosya indirmek için Invoke-WebRequest cmdlet'ini, dosyanın URL'si için -Uri parametresi ve -OutFile ile birlikte kullanabilirsiniz. Hedef yol için parametresi. Örneğin:

Invoke-WebRequest -Uri "https://powershellfaqs.com/wp-content/uploads/2024/02/TestFile.zip" -OutFile "C:\Bijay\TestFile.zip"

Bu tek satırlık PowerShell kullanarak dosyaları doğrudan internetten indirmenin basit ve etkili bir yoludur.

1. Invoke-WebRequest'i Kullanma

Invoke-WebRequest cmdlet'i, PowerShell'de dosya indirmenin en basit yöntemidir. Unix/Linux sistemlerindeki wget veya curl komutlarına benzer ve standart PowerShell cmdlet'lerinin bir parçasıdır.

PowerShell kullanarak bir dosyayı indirmek için Invoke-WebRequest'in nasıl kullanılacağına ilişkin bir örnek:

# Define the URL and the destination path
$url = "https://powershellfaqs.com/wp-content/uploads/2024/02/TestFile.zip"
$destination = "C:\Bijay\TestFile.zip"

# Use Invoke-WebRequest to download the file
Invoke-WebRequest -Uri $url -OutFile $destination

Bu komut dosyası, indirmek istediğiniz dosyanın URL'sini ve onu kaydetmek istediğiniz yerel yolu ayarlar, ardından dosyayı URL'den belirtilen hedefe indirmek için Invoke-WebRequest'i kullanır.

PowerShell betiğini Visual Studio kodunu kullanarak çalıştırdıktan sonra çıktıyı aşağıdaki ekran görüntüsünde görebilirsiniz.

2. Start-BitsTransfer'ı Kullanma

PowerShell'de dosya indirmenin başka bir yöntemi de Start-BitsTransfer cmdlet'ini kullanmaktır. Bu cmdlet, daha sağlam ve ağ aktarımları için uygun olan BITS'in (Arka Plan Akıllı Aktarım Hizmeti) bir parçasıdır. Özellikle büyük dosyalar için veya aktarım süreci üzerinde daha fazla kontrole ihtiyaç duyduğunuzda kullanışlıdır.

PowerShell'de bir dosyayı indirmek için Start-BitsTransfer'ı şu şekilde kullanabilirsiniz:

# Define the source URL and the destination path
$source = "https://powershellfaqs.com/largefile.iso"
$destination = "C:\Bijay\largefile.iso"

# Use Start-BitsTransfer to download the file
Start-BitsTransfer -Source $source -Destination $destination

Bu komut dosyası önceki örneğe benzer şekilde çalışır ancak indirme için ağ kesintilerini giderebilen ve indirme işlemlerini devam ettirebilen Start-BitsTransfer'i kullanır.

3. New-Object System.Net.WebClient'ı Kullanma

Daha nesne odaklı bir yaklaşımı tercih edenler için PowerShell'de dosya indirmek için System.Net.WebClient sınıfını kullanabilirsiniz. Bu yöntem, indirme işlemi üzerinde yüksek düzeyde kontrol sağlar ve başlıkları değiştirmenize, proxy sunucuları kullanmanıza ve daha fazlasına olanak tanır.

PowerShell'de System.Net.WebClient kullanımının bir örneğini burada bulabilirsiniz.

# Create a new WebClient object
$webClient = New-Object System.Net.WebClient

# Define the URL and the destination file
$url = "https://powershellfaqs.com/document.pdf"
$destination = "C:\Bijay\document.pdf"

# Download the file
$webClient.DownloadFile($url, $destination)

Bu komut dosyası bir WebClient nesnesi oluşturur, URL'yi ve hedefi ayarlar ve ardından dosyayı DownloadFile yöntemiyle indirir.

4. Güvenli Bağlantıları Yönetme (HTTPS)

Dosyaları güvenli bağlantılardan (HTTPS) indirirken SSL/TLS sertifikalarıyla ilgili sorunlarla karşılaşabilirsiniz. Bunu gerçekleştirmek için PowerShell'deki ServicePointManager ayarlarını sertifika kontrolünü atlayacak şekilde ayarlayabilirsiniz:

# Ignore SSL/TLS certificate errors (use with caution)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true }

# Now proceed with the download using any of the methods above
# Create a new WebClient object
$webClient = New-Object System.Net.WebClient

# Define the URL and the destination file
$url = "https://powershellfaqs.com/document.pdf"
$destination = "C:\Bijay\document.pdf"

# Download the file
$webClient.DownloadFile($url, $destination)

SSL/TLS kontrollerini atlamanın sizi ortadaki adam saldırıları gibi güvenlik risklerine maruz bırakabileceğini unutmayın. Bu yaklaşımı yalnızca kaynağın güvenliğinden ve bütünlüğünden emin olduğunuzda kullanın.

Çözüm

Dosyaları bir URL'den indirmek PowerShell'in kolaylaştırdığı yaygın bir görevdir. PowerShell'deki bir URL'den dosya indirmek için PowerShell'de Invoke-WebRequest, Start-BitsTransfer veya System.Net.WebClient'i kullanabilirsiniz.

Bu PowerShell eğitiminde, çeşitli yöntemler ve örnekler kullanarak PowerShell'de URL'den dosya indirmenin nasıl yapılacağını anlattım.

İlgili makaleler