⚙️ #تطبيق #كيفية #تحميل #الملفات #عبر #FTP #باستخدام #PowerShell #يلا #ماتش #منتوف #MANTOWF
[elementor-template id=”7268″]
كيفية تحميل الملفات عبر FTP باستخدام PowerShell – يلا ماتش
بروتوكول نقل الملفات (FTP) هو خدمة شائعة تستخدم لنقل الملفات بين العملاء والخوادم. غالبًا ما يكون من المفيد أتمتة عمليات نقل الملفات هذه ، ويمكن أن تكون البرامج النصية لـ PowerShell مفيدة لتسريع هذه العملية.
كيفية استخدام FTP في بوويرشيل
هناك عدة طرق مختلفة لإجراء عمليات نقل FTP في PowerShell.
أبسط هو استخدام WebClient.UploadFile
. PowerShell هي لغة برمجة نصية موجهة للكائنات ، ولديك حق الوصول الكامل إليها .NET
المكتبات الافتراضية مع New-Object
. مع هذا ، يمكنك إنشاء واحدة جديدة WebClient
قم بتعيين بيانات الاعتماد الخاصة به ، وقم بتحميل ملف.
$client = New-Object System.Net.WebClient $client.Credentials = New-Object System.Net.NetworkCredential("username", "password") $client.UploadFile("ftp://example.com/path/archive.zip", "C:archive.zip")
سيعمل هذا بشكل جيد ، لكنه لن يكون قادرًا على معالجة الطلبات المشفرة باستخدام بروتوكول TLS / SSL ، أو إجراء عمليات نقل FTP “نشطة”. استخدام FtpWebRequest
المغطاة أدناه ، سوف تحل هذه المشكلة.
ليس من الأفضل تخزين اسم المستخدم وكلمة المرور في برنامج نصي ، خاصة إذا كان هذا البرنامج النصي ملتزمًا بمستودع Git مشترك. يمكنك بدلاً من ذلك تعيين متغيرات البيئة مثل FtpUsername
والوصول إليها في البرنامج النصي.
function uploadToFTPServer($remote, $local) { $client = New-Object System.Net.WebClient $client.Credentials = New-Object System.Net.NetworkCredential($Env:FtpUsername, $Env:FtpPassword) $client.UploadFile($remote, $local) } uploadToFTPServer "ftp://example.com/path/archive.zip", "C:archive.zip"
سيسمح لك تحويل هذا إلى وظيفة أيضًا بإجراء عمليات نقل متعددة بسهولة عن طريق استدعاء الوظيفة بمعلمات مختلفة.
عمليات نقل FTP المتقدمة باستخدام PowerShell
إذا كنت بحاجة إلى مزيد من التحكم ، فيجب عليك استخدامه FtpWebRequest
. سيدعم هذا عمليات نقل TLS ، ويسمح لك أيضًا بإيقاف تشغيل الوضع الخامل. أسهل طريقة لاستخدامه هي فتح دفق ملف ونسخه إلى دفق FTP.
function uploadToFTPServer($remote, $local) { $request = [System.Net.FtpWebRequest]::Create($remote) $request.Credentials = New-Object System.Net.NetworkCredential($Env:FtpUsername, $Env:FtpPassword) $request.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile $request.UsePassive = $true $fileStream = [System.IO.File]::OpenRead($local) $ftpStream = $request.GetRequestStream() $fileStream.CopyTo($ftpStream) $ftpStream.Dispose() $fileStream.Dispose() } uploadToFTPServer "ftp://example.com/archive.zip" "C:archive.zip"
نظرًا لأنه يستخدم تدفقات الملفات ، وليس قراءة كل وحدات البايت ، فإن هذا له ميزة العمل بشكل أفضل مع عمليات نقل الملفات الضخمة.
إرسال تحويلات SFTP باستخدام Posh-SSH
SFTP هو بروتوكول FTP بديل يعمل عبر SSH. يعد استخدامه أكثر تعقيدًا قليلاً من استخدام FTP العادي ، حيث لا يمكنك فقط إرسال اسم مستخدم وكلمة مرور ، ولا يدعمه PowerShell الأصلي.
ستحتاج إلى تثبيت ملف Posh-SSH
حزمة للتواصل عبر SFTP:
Install-Module -Name Posh-SSH
بعد ذلك ستتمكن من بدء جلسة جديدة باستخدام كائن بيانات اعتماد جديد. يعمل هذا بنفس طريقة عمليات نقل طلبات الويب ، باستثناء أنك ستحتاج أيضًا إلى إغلاق الجلسة في النهاية.
Import-Module Posh-SSH $Password = ConvertTo-SecureString $Env:FtpPassword -AsPlainText -Force $Credential = New-Object System.Management.Automation.PSCredential ($Env:FtpUsername, $Password) $FilePath = "C:archive.zip" $SftpPath="/folder" $ThisSession = New-SFTPSession -ComputerName '1.2.3.4' -Credential $Credential Set-SFTPFile -SessionId ($ThisSession).SessionId -LocalFile $FilePath -RemotePath $SftpPath Get-SFTPSession | % { Remove-SFTPSession -SessionId ($_.SessionId) }
إرسال ملفات ضخمة مع شريط تقدم في PowerShell
باستخدام ملف دفق CopyTo
أمر بسيط ، ولكن بالنسبة لعمليات النقل الطويلة ، قد ترغب في نوع من مراقبة التقدم. هذا أمر معقد بعض الشيء لإضافته ، حيث سيتعين عليك نسخ التدفقات بنفسك ، لكنه يعمل بشكل جيد مع النص التالي:
$request = [Net.WebRequest]::Create("ftp://example.com/path/archive.zip") $request.Credentials = New-Object System.Net.NetworkCredential($Env:FtpUsername, $Env:FtpPassword) $request.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile $fileStream = [System.IO.File]::OpenRead("C:archive.zip") $ftpStream = $request.GetRequestStream() $buffer = New-Object Byte[] 10240 while (($read = $fileStream.Read($buffer, 0, $buffer.Length)) -gt 0) { $ftpStream.Write($buffer, 0, $read) $pct = ($fileStream.Position / $fileStream.Length) Write-Progress ` -Activity "Uploading" -Status ("{0:P0} complete:" -f $pct) ` -PercentComplete ($pct * 100) } $ftpStream.Dispose() $fileStream.Dispose()
أقراء أيضا
افضل 40 تطبيق أندرويد مجانا بأداء خرافي
[elementor-template id=”7272″]
المصدر : منتوف ومواقع انترنت 👇كيفية تحميل الملفات عبر FTP باستخدام PowerShell – يلا ماتش
إرسال التعليق
يجب أنت تكون مسجل الدخول لتضيف تعليقاً.