نسخ إلى الحافظة باستخدام PowerShell: ما وراء Ctrl+C و Ctrl+V

عند كتابة الكود في باورشيل ، قد يكون أقل ما تفكر فيه هو
حافظة النظام الخاصة بـ Windows. ربما نعرف جميعاً الاختصارات المشهورة للوحة المفاتيح Ctrl-C و Ctrl-V للنسخ واللصق من الحافظة، ولكن هذا يتم عادة عبر واجهة المستخدم الرسومية. في سكريبتات باورشيل الخاصة بنا، ليست هذه الطريقة مفيدة جداً. ومع ذلك، هل كنت تعلم أن هناك وظيفة نسخ إلى الحافظة في باورشيل؟

في هذه المقالة، سأتطرق إلى كيف كنا نحصل على وظائف النسخ واللصق في باورشيل، ثم سأقدم لك الأوامر التي يوفرها باورشيل بدءًا من الإصدار 5.

قبل باورشيل v5، كان الطريقة الوحيدة للنسخ إلى الحافظة هي باستخدام التطبيق clip.exe.

تطبيق clip.exe القديم

كان هذا التطبيق موجوداً منذ وقت طويل وكان يعمل فقط. من خلال توجيه النص إلى clip.exe، كان بإمكانك الحصول على النص المنسوخ على الحافظة. كان هذا يعمل ولكن كان دائماً مزعجاً عندما يضيف عودة العربة بعد كل إدخال.

PS51> Write-Output 'Hello' | clip
The PowerShell copy to clipboard function can replace the old school clip.exe

ليس ذلك فحسب، ولكن لم يكن لدينا طريقة سهلة لسحب المعلومات من الحافظة. كنا مضطرين للصق المحتويات يدوياً بمجرد وجودها في الحافظة. مع الأوامر الأصلية للحافظة، لم يعد هذا مطلوباً!

لدينا الآن أمرين يحلان هذه المشكلة بشكل أفضل؛ Get-Clipboard و Set-Clipboard.

أمر Set-Clipboard الخاص بـ Powershell.

Set-Clipboard يحل محل clip.exe ولكن يتصرف بنفس الطريقة تمامًا. الآن، بدلاً من توجيه الناتج إلى clip، يمكنك استخدام Set-Clipboard. إذا فعلت ذلك، ستلاحظ أن العنصر الفارغ في نهاية السطر قد اختفى عند لصق المحتويات في مكان ما.

الآن، يحتوي الحافظة على سلسلة النص Hello.

PS> Write-Output 'Hello' | Set-Clipboard

ميزة أخرى مفيدة في Set-Clipboard هي معلمة Append. في السابق، كانت الحافظة قادرة فقط على تخزين عنصر واحد. الآن، باستخدام معلمة Append مع Set-Clipboard، يمكنك إضافة عدد غير محدود من العناصر دون إزالة السابقة.

PS> Write-Output 'Hello' | Set-Clipboard -Append

معلمات Get-Clipboard

حتى إذا لم تستخدم Set-Clipboard لنسخ المحتويات إلى الحافظة، يمكنك ما زال استخدام Get-Clipboard لفهم بعض الأنواع المختلفة بخلاف السلاسل البسيطة. على سبيل المثال، إذا قمت بنسخ قائمة من الملفات من مستكشف الملفات وترغب في الحصول على هذه القائمة في وحدة التحكم بـ PowerShell الخاصة بك، ما عليك سوى استخدام معلمة Format والقيمة FileDropList على Get-Clipboard.

PS51> Get-Clipboard -Format FileDropList

Directory: \\Mac\Home\Downloads


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019  10:42 AM       17919094 00_03_xr30_whatyoushouldhave.mov


    Directory: \\Mac\Home\Documents\Snagit\Autosaved Captures.localized


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
------         8/1/2019   1:58 PM      169144472 2019-08-01_13-47-55.mp4

يمكنك ملاحظة أنه يفهم نوع البيانات في الحافظة كقائمة من الملفات. كما يمكنك القيام بنفس الشيء مع الصور والكيانات الأخرى.

قم بنسخ صورة من تطبيق آخر واستخدم -Format Image لاسترداد خصائص مختلفة حول الصورة باستخدام Get-Clipboard.

PS51> Get-Clipboard -Format Image


Tag                  :
PhysicalDimension    : {Width=813, Height=113}
Size                 : {Width=813, Height=113}
Width                : 813
Height               : 113
HorizontalResolution : 96
VerticalResolution   : 96
Flags                : 335888
RawFormat            : [ImageFormat: b96b3caa-0728-11d3-9d7b-0000f81ef32e]
PixelFormat          : Format32bppRgb
Palette              : System.Drawing.Imaging.ColorPalette
FrameDimensionsList  : {7462dc86-6180-4c7e-8e3f-ee7333a7a483}
PropertyIdList       : {}
PropertyItems        : {}

عمليات التلاعب بالحافظة في PowerShell Core

للأسف ، لا تتوفر الأوامر Get-Clipboard و Set-Clipboard في PowerShell Core (الإصدار 6+) ولكن يمكنك استخدامها باستخدام وحدة WindowsCompatibility . تسمح وحدة WindowsCompatibility لك باستخدام أوامر Windows PowerShell cmdlets داخل PowerShell Core.

بمجرد تثبيت وحدة WindowsCompatibility ، قم بتشغيل Invoke-WinCommand وقم بتضمين مراجع Get-Clipboard و Set-Clipboard في الداخل.

PS622> Invoke-WinCommand -ScriptBlock {'This is on the clipboard' | Set-ClipBoard}
PS622> Invoke-WinCommand -ScriptBlock {Get-ClipBoard}
This is on the clipboard

ستجد أنه يمكنك قراءة وكتابة الحافظة تمامًا كما تفعل في Windows PowerShell.

ملخص

يمكنك القيام بالكثير مع الحافظة في PowerShell في الوقت الحاضر. تم تمكين نسخ PowerShell إلى الحافظة باستخدام Get-Clipboard و Set-Clipboard. تتيح لك هذه الأوامر استخدام PowerShell لنسخ إلى الحافظة ولصق بذكاء من الحافظة أيضًا.

للحصول على تفاصيل كاملة حول الأوامر ، تحقق من المساعدة المفصلة:

PS51> Get-Help Set-Clipboard -Detailed
PS51> Get-Help Get-Clipboard -Detailed

سيمنحك ذلك جميع المعلمات المختلفة التي يمكنك تجربتها.

Source:
https://adamtheautomator.com/powershell-copy-to-clipboard/