Windows Powershell ile FTP Dosya Upload İşlemi
Benden istenen şey farklı lokasyonlardaki bilgisayarlardan belirli mp3 dosyalarını yedeklemekti. Eski usül olarak kullanıcı ftp programı yardımı ile dosyaları yüklüyordu.
Biraz daha kolay olması ve anlık yapabilmeleri için Web Disk oluşturmayı düşündüm. Fakat windows 7 de bazı sorunlar çıkarttı dns hataları verdi. DNS sorunlarıyla uğraşmak yerine ilk batch ile ftp'ye dosya yükleme yapbilir miyim diye araştırma yaptım daha sonra batch yerine powershell ile basit daha sağlıklı olacağı kanaatine vardım.
"PowerShell bir komut satırı kabuğundan, bir betik dilinden ve yapılandırma yönetimi çerçevesinden yapılmış platformlar arası bir görev otomasyon çözümüdür."
Fakat uygulamada şöyle bir sorun vardı. Kullanıcı powershell uygulamasına sağ tıklayıp Run With Powershell'e tıklaması gerekli. Bunuda batch ile çözdüm.
Uygulama kısa olarak c altında kayitlar klasöründeki tüm mp3 dosyalarını buluyor ve siteadresi.com/yuklenecekdosya klasörüne yüklüyor.
Ekran görüntüsü:
Yukle.ps1
#bilgisayardan ftp ye yüklenecek klasör
$Dir="c:/kayitlar"
#ftp server ayarları
$ftp = "ftp://ftp.siteadresi.com/yuklenecekdosya"
$user = "kullaniciadi"
$pass = "sifre"
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
#klasördeki mp3 dosyalarını listeler
foreach($item in (dir $Dir "*.mp3")){
"Uploading $item..."
$uri = New-Object System.Uri($ftp+$item.Name)
$webclient.UploadFile($uri, $item.FullName)
}
#işlem bitince pcyi kapat
Stop-Computer
Batch kodunda dikkat etmeniz gerek powershell kodunun doğru konumda olması. Windows 7 lerde powershell kodunu çalıştırdığınızda hata alabilirsiniz. Windows güvenlikten dolayı programı engelleyecektir. Fakat executionpolicy remotesigned -File komutu bu sorunu ortadan kaldırır. Uygulamaya tam yetki vermiş oluyorsunuz.
yukle.bat
Powershell.exe -executionpolicy remotesigned -File C:\yukle.ps1
Yorumlar