باستخدام التشغيل التلقائي، قراءة البيانات من ملف نصي هي حالة شائعة. معظم لغات البرمجة لديها وسيلة واحدة على الأقل لقراءة ملفات النص، وPowerShell ليست استثناءً. أمر Get-Content
في PowerShell، وهو ما يعادل أمر tail في PowerShell، يقوم بقراءة محتوى ملف نصي ويقوم بتحميل البيانات إلى جلسة PowerShell.
أمر Get-Content
في PowerShell هو أداة لا غنى عنها عندما تحتاج إلى استخدام ملفات النص كإدخال لنصيبك. ربما يحتاج نصيب PowerShell الخاص بك إلى قراءة قائمة الكمبيوتر للرصد أو استيراد قالب بريد إلكتروني لإرساله إلى مستخدميك. يدعم Get-Content
في PowerShell هذه السيناريوهات بسهولة!
ماذا عن متابعة ملف سجل في الوقت الحقيقي؟ نعم، يمكن أيضًا لأمر Get-Content
في PowerShell القيام بذلك! تابع قراءة هذا المقال، وستتعلم كيفية استخدام أمر Get-Content
لقراءة ملفات النص في PowerShell.
المتطلبات المسبقة
إذا كنت مهتمًا بمتابعة الأمثلة في هذا الدرس، فستحتاج إلى متطلبات التالية.
- ستحتاج إلى كمبيوتر يعمل بنظام التشغيل Windows 10. يستخدم هذا البرنامج التعليمي إصدار Windows 10 الإصدار 20H2. ولكن لا تقلق، ستكون بخير مع إصدار Windows 10 الذي تمتلكه.
- يجب أن يكون لديك Windows PowerShell 5.1 على الأقل، أو PowerShell 7.1 مثبتًا على جهاز الكمبيوتر الخاص بك. تستخدم هنا PowerShell 7.1، ولكن أي إصدار سيعمل!
- ستكتب وتختبر الأوامر، لذا ستحتاج إلى محرر الشفرة. المحررات الموصى بها هي Windows PowerShell ISE، المدمج في نظام التشغيل Windows، و Visual Studio Code (VSCode). يستخدم هذا المقال VSCode.
- سيساعد أيضًا إذا قمت بإنشاء دليل عمل في جهاز الكمبيوتر الخاص بك. يمكن أن يكون المجلد العامل في أي مكان تريده. ومع ذلك، ستلاحظ أن الأمثلة في هذا البرنامج التعليمي تقع في المجلد C:\demo.
- للبدء، تحتاج إلى بعض المحتوى! قم بإنشاء ملف في دليل العمل الخاص بك، باسم fruits.txt والذي يتضمن عشرة فواكه مختلفة للبساطة. ستستخدم هذا الملف النصي في جميع الأمثلة.
لا تعرف أي إصدار PowerShell لديك؟ قم بزيارة المقالة كيفية التحقق من إصدار PowerShell الخاص بك (جميع الطرق!).
قراءة ملف نصي وإرجاع النتيجة كمجموعة سلاسل نصية
يقرأ الأمر Get-Content
المحتوى من ملف، وبشكل افتراضي، يرجع كل سطر من ملف نصي ككائن سلسلة نصية. ونتيجة لذلك، تصبح مجموعة كائنات PowerShell مصفوفة من كائنات السلسلة النصية.
الكود أدناه يقرأ محتويات ملف fruits.txt ويعرض النتيجة على وحدة التحكم PowerShell كما هو موضح في لقطة الشاشة أدناه.

Get-Content
. Get-Content
يقوم بقراءة وتخزين المحتوى كمصفوفة، لكن كيف تعرف ذلك بالتأكيد؟ أولاً، قم بحفظ المحتوى إلى كائن PowerShell يمكنك بعد ذلك فحصه لتحديد النوع.
نظرًا للمحتوى في اللقطة أدناه، فإن المتغير $fruits
هو مصفوفة تحتوي على عشرة كائنات. يُمثل كل كائن سطرًا واحدًا من النص.

استرجاع سطر محدد من ملف نصي
في المثال السابق، تعلمت أن نتيجة الأمر الافتراضي Get-Content
هي مصفوفة أو مجموعة من الكائنات. يُرتبط كل عنصر في المجموعة برقم فهرس، وتبدأ فهارس PowerShell عادةً من الصفر.
توضح اللقطة أدناه أن هناك عشرة عناصر في مصفوفة السلسلة. قامت المصفوفة بترقيم العناصر العشرة من الصفر إلى التسعة.

لعرض السطر الخامس فقط من المحتوى، ستحتاج إلى تحديد رقم الفهرس 4
، وتضمينه في الأقواس المربعة (المعروفة بتعبير المصفوفة).
قد تلاحظ أن أمر
Get-Content
محاط بأقواس. تخبر هذه العلامة التعبيرية PowerShell بتشغيل الأمر المحاط بالأقواس أولاً قبل العمليات الأخرى.
في اللقطة أدناه، سترى أن النتيجة الوحيدة المُرجعة هي raspberry
، وهو العنصر في الفهرس 4
والذي يتوافق مع السطر الخامس في ملف النص.

Get-Content
results.ماذا لو أردت الحصول على المحتوى في السطر الأخير؟ لحسن الحظ، لا تحتاج إلى معرفة العدد الإجمالي للأسطر. بدلاً من ذلك، استخدم [-1]
كالفهرس، وسيقوم Get-Content
بعرض السطر الأخير فقط من الملف.
تقييد عدد النتائج الأعلى المُرجعة بواسطة Get-Content
استخدم معلمة TotalCount
من Get-Content
لاسترجاع عدد محدد من الأسطر من ملف نصي. تقبل معلمة TotalCount
قيمة طويلة تعني قيمة قصوى قدرها 9,223,372,036,854,775,807.
على سبيل المثال، يقرأ الأمر أدناه المحتوى ويحد من النتيجة إلى ثلاثة عناصر.
كما يتوقع، تعرض النتيجة أدناه فقط الأسطر الثلاث الأولى من بداية الملف النصي.

Get-Content
command and the TotalCount
parameter.استخدم معلمة PowerShell Tail لإرجاع النتائج من نهاية ملف
في المثال السابق، استخدمت الأمر البرمجي PowerShell Get-Content
لقراءة ملف نصي وتحديد النتائج الأعلى. من الممكن أيضًا تحقيق النتيجة المعاكسة باستخدام PowerShell Get-Content
. استخدم معلمة PowerShell Tail
لقراءة عدد محدد من الأسطر من نهاية الملف.
الكود في المثال أدناه يقرأ الملف النصي ويعرض محتوى الأسطر الأربعة السفلية.
بعد تشغيل أمر السطر PowerShell tail
، ستكون النتيجة المتوقعة محدودة إلى الأسطر الأربعة الأخيرة من المحتوى، كما هو موضح في الصورة أدناه.

Get-Content
Tail
parameter.غالبًا ما يتم استخدام معلمة Tail
بالتزامن مع معلمة Wait
. باستخدام معلمة Wait
، يتم الاحتفاظ بالملف مفتوحًا ويتم فحص المحتوى الجديد مرة كل ثانية واحدة. يظهر العرض أدناه استخدام معلمتي Tail
و Wait
. للخروج من Wait
، استخدم مفتاح CTRL+C
.

wait
and Tail
parameters with Get-Content
.العودة بالنتائج كسلسلة واحدة
قد لاحظت في الأمثلة السابقة أنك كنت تتعامل مع سلاسل كمصفوفة نصوص في إخراج PowerShell Get-Content
. وكما تعلمت حتى الآن، يسمح لك طابع المصفوفة بالتعامل مع المحتوى عنصرًا واحدًا في كل مرة.
تعمل المصفوفات غالبًا بشكل رائع ولكن يمكن أن تجعل استبدال السلاسل أكثر صعوبة. يقوم معلم الباراميتر Raw
في Get-Content
بقراءة محتوى الملف ككائن سلسلة واحدة. على الرغم من أن الشيفرة أدناه هي نفسها التي تم استخدامها في المثال الأول، يقوم معلم الباراميتر Raw
بتخزين محتوى الملف كسلسلة واحدة.
يوضح لقطة الشاشة أدناه أن إضافة معلم الباراميتر Raw
إلى Get-Content
يؤدي إلى معالجة المحتوى كسلسلة وليس كمصفوفة من الكائنات.

Raw
parameter of Get-Content
reads the file content as a single string object.بمجرد أن يكون لديك محتويات ملف في سلسلة واحدة باستخدام معلم الباراميتر Raw
، ما الذي يمكنك فعله بها؟ ربما تحتاج إلى البحث عن سلسلة واستبدالها داخل محتوى تلك الملف. في المثال أدناه، يقرأ Get-Content
محتوى ملف كسلسلة واحدة. ثم، باستخدام عامل الاستبدال replace
، يتم استبدال كلمة معينة بأخرى.
ذات الصلة: البحث واستبدال السلاسل

replace
operator.اقرأ المحتوى فقط من الملفات التي تم مطابقتها مع عامل التصفية
هل لديك مجلد ممتلئ بالملفات ولكن تحتاج إلى قراءة محتوى بعضها فقط؟ باستخدام PowerShell Get-Content
، لا داعي لتصفية الملفات بشكل منفصل قبل قراءة محتواها. يحدد معلم الأمر Filter
لـ Get-Content
أي ملفات يقرأها.
لتوضيح قراءة محتوى بعض الملفات فقط، أنشئ أولاً بعض الملفات للقراءة. كما هو موضح أدناه، قم بإنشاء الملفات في مجلد العمل الخاص بك باستخدام Add-Content
.

.log
files using Add-Content
.بعد إنشاء ملفات الاختبار الخاصة بك، استخدم معلم الـ Filter
ومعلم الـ Path
لقراءة فقط الملفات ذات الامتداد .log
في الدليل الجذري. يشير النجمة المستخدمة في تعريف التصفية إلى Get-Content
لقراءة أي ملف ينتهي بـ .log
. تحد النجمة النهائية لمعلم المسار قراءة الملفات للدليل الجذري فقط.
كما هو موضح في الإخراج أدناه، يتم عرض محتوى الملفات .log
فقط.

Filter
parameter with PowerShell Get-Content
to limit the read files.ذات الصلة: Get-ChildItem: قائمة الملفات، والسجلات، والشهادات، والمزيد كواحد
قراءة تيار البيانات البديل لملف
حتى الآن، كنت تعمل حصريًا مع ملفات النصوص، ولكن يمكن لأمر Get-Content
قراءة البيانات من تيار البيانات البديل (ADS) لملف. لا تتردد في قراءة المزيد حول التيارات، ولكن يمكنك أن تعتبر التيار كخاصية بيانات أخرى مخزنة جنبًا إلى جنب مع محتويات الملف النموذجية.
تعتبر تيارات البيانات البديلة ميزة في نظام ملفات Windows NTFS، وبالتالي فإن هذا لا ينطبق على
Get-Content
عند استخدامه مع أنظمة التشغيل غير Windows.
يمكنك رؤية تيارات البيانات البديلة عند تشغيل Get-Item
مع معلمة Stream
. عند الإشارة إلى ملف باستخدام معلمة Stream
، يُرجى العلم أن Get-Item
يعيد خاصية تُسمى Stream
كما هو موضح أدناه. يُمثل تيار محتوى الملف الافتراضي هذا بواسطة :$DATA
.
لتوضيح التيار الافتراضي :$DATA
، استخدم أمر Get-Item
لعرض جميع التيارات المتاحة في ملف fruits.txt. كما هو موضح أدناه، يعرض Get-Item
تيارًا واحدًا فقط.

Get-Item
.معلمة Stream
في Get-Content
تقرأ صراحة محتوى التيار الافتراضي :$DATA
كما هو موضح أدناه. المحتوى الذي يتم إرجاعه هو نفس محتوى Get-Content
الافتراضي حيث يتم قراءة تيار :$DATA
بشكل افتراضي.

:$DATA
stream using Get-Content
.لتوضيح استرجاع تيار بيانات بديل باستخدام Get-Content
، قم بتعديل ملف باستخدام Add-Content
لإضافة التيار الجديد. استخدم Get-Item
لعرض التيار الجديد جنبًا إلى جنب مع التيار الافتراضي :$DATA
، كما هو موضح في المثال أدناه.

نظرًا لأنه يتم قراءة التيار :$DATA
فقط بشكل افتراضي، استخدم معلمة Stream
لأمر Get-Content
لاسترجاع محتوى التيار الجديد Secret
. كما هو موضح أدناه، يتم عرض محتوى التيار Secret
بدلاً من محتوى الملف الافتراضي.

Get-Content
to read the Secret
alternate data stream content.خطوات مقبلة باستخدام PowerShell Get-Content
في هذا المقال، لقد تعلمت العديد من الطرق لاستخدام Get-Content
لقراءة وتلاعب بالمحتوى. حتى تعلمت أن Get-Content
مرن بما فيه الكفاية لقراءة المحتوى من تيارات بيانات بديلة!
بناءً على ما تعلمته في هذا المقال، ما هي الطرق الأخرى التي يمكنك استخدام Get-Content
بها في عملك؟ ربما يمكنك استخدام Get-Content
لتحديد ما إذا كان ملف النسخ الاحتياطي قديمًا وتشغيل مكالمة تلقائية لتشغيل عملية نسخ احتياطي؟
Source:
https://adamtheautomator.com/powershell-get-content/