هل تحتاج إلى تقسيم المسارات للحصول على أجزاء محددة منها؟ إذا كان الأمر كذلك، فإن PowerShell Split-Path
هو الصديق الذي يمكنك الاعتماد عليه. عندما تعمل مع الملفات والشهادات والسجل، ستلاحظ أن المسارات تمثل مواقعها.
وفي بعض الأحيان، قد تحتاج إلى تصفية أي جزء من المسار للعودة، ربما عند القيام بالتأمين. محظوظ لك، ستعلمك هذه الدورة التعليمية طرق استخدام أمر PowerShell Split-Path
للقيام بذلك.
هيا! استمر في القراءة، ودعنا نحصل لك على سلاح جديد لأدوات PowerShell الخاصة بك!
المتطلبات المسبقة
إذا كنت تخطط لمتابعة الأمثلة في هذا البرنامج التعليمي التفاعلي، ستحتاج إلى كمبيوتر يعمل بأي نسخة حديثة من ويندوز تحتوي على PowerShell 5.1 أو أحدث. سيتم استخدام ويندوز 10 20H2 مع PowerShell 7.1.1 في هذا البرنامج التعليمي.
ما الذي يحتويه المسار؟
قبل الانغماس في عمق مع أمر PowerShell Split-Path
، دعنا نتأكد من أنك واضح حول ما هو المسار. يحدد المسار موقع العنصر الذي يتبع تنسيقًا معينًا.
على سبيل المثال، يمكن أن يكون مسار الملف كالتالي: C:\demo\subfolder1\TestFile_11.txt. إذا قمت بتفريق هذا المسار إلى أجزاء، يتضمن المسار ما يلي:
- C: is the drive or the qualifier, or the specified path. The qualifier is the part of the path from the left up to the colon (
:
) character. - \demo\subfolder1\ هو المجلد والمجلدات الفرعية أو الحاويات.
- TestFile_11.txt هو اسم الملف أو الورقة. الورقة هي العنصر الأخير أو الجزء الأخير من المسار.
تذكر، على الرغم من ذلك، أن المسارات ليست حصرية للملفات والمجلدات. قد تشمل المسارات الصحيحة ما يلي:
- الشهادة (على سبيل المثال، Cert:\CurrentUser\My)
- السجل (على سبيل المثال، HKCU:\Software)
- الوظيفة (على سبيل المثال، Function:\New-Guid)
- المتغير (على سبيل المثال، Variable:\PSEdition)
- دليل النشاط (على سبيل المثال، AD:\CN=Users,DC=Constoso,DC=com)
معلمات الفصل في PowerShell Split-Path
مثل أي cmdlet، يأتي Split-Path
مع مجموعة من المعلمات التي تعدل كيفية سلوك الـ cmdlet وتعيد إخراجها. وهذه المعلمات هي التي تشكل بناء جملة PowerShell Split-Path
.
-Path
– هذه المعلمة تقبل سلسلة أو أكثر من مسارات تريد تقسيمها. تقبل هذه المعلمة أيضًا إدخال الأنابيب. الرموز المميزة في المسارات مقبولة أيضًا.-LiteralPath
– مثل المعلمة-Path
، تقبل المعلمة-LiteralPath
أيضًا مسارات للتقسيم. لكن هذه المعلمة ستعامل المسار فقط كما هو مكتوب. وهذا يعني أن الأمر لن يفسر الرموز المميزة إذا استخدمت هذه المعلمة لتحديد المسارات.-Resolve
– هذه المعلمة تخبر cmdletSplit-Path
بحل الملفات أو العناصر التي يشير إليها المسار الذي قدمته. بسبب طبيعتها الحرفية، لا يمكنك استخدام هذه المعلمة مع معلمة-LiteralPath
.-IsAbsolute
– يعيد هذا البارامتر قيمة منطقية لتحديد ما إذا كان المسار الذي حددته هو مسار مطلق أم لا.
تحتوي cmdlet
Split-Path
في PowerShell أيضًا على بارامتر يسمى-Credential
، والذي يقبل على ما يبدو كائن PSCredential للتصديق. ولكن وفقًا لما ذكرته Microsoft ، لا يتم دعم هذا البارامتر بواسطة أي من موفرات PowerShell المدمجة ويتسبب في حدوث خطأ عند استخدامه.
يُطلق على المعاملات التالية اسم معاملات تحديد موقع التقسيم. تُخبر معاملات هذه العمليات الفرعية في cmdlet Split-Path
في PowerShell أي عنصر أو جزء من المسار لإرجاعه. نظرًا لأن الأمر النصي قادر على إرجاع عنصر واحد فقط من المسار ، يمكنك استخدام معامل واحد فقط من هذه المعاملات في كل مرة.
-Parent
– يعيد الموقع الأصلي (بدون عنصر أو اسم الملف) للمسار الذي حددته. يعتبر هذا البارامتر أيضًا المعامل الافتراضي لتحديد الموقع ، مما يعني أنه يمكنك حذف هذا البارامتر ولا تزال تحصل على الموقع الأصلي كنتيجة.-Leaf
– يعيد فقط العنصر الأخير في المسار أو الورقة.-LeafBase
– يعيد فقط العنصر الأخير في المسار أو الورقة بدون امتداد. يتوفر هذا البارامتر فقط في PowerShell 6.0 وما فوق.-التمديد
– يعيد فقط التمديد الخاص بالورقة (من آخر نقطة ”.
” إلى آخر حرف في المسار). هذا المعلم فقط متاح في PowerShell 6.0 وما فوق.-المؤهل
– يعيد فقط محرك الأقراص أو المؤهل للمسار فقط.-بدونمؤهل
– يقوم بإزالة محرك الأقراص أو المؤهل من باقي المسار.
باستخدام أمر PowerShell Split-Path (أمثلة)
يسمح لك أمر PowerShell Split-Path بتقسيم وتفكيك أجزاء من المسار. بعد ذلك ، يمكنك تحديد أي جزء من المسار لإعادة التمديد. اعتمادًا على متطلبات الإخراج الخاصة بك ، يمكنك اختيار إعادة المؤهل ، أو المسار بدون مؤهل ، واسم (أسماء) الملف.
الحصول على المجلد الرئيسي للمسار
لإعادة مجلد الوالدين للمسار ، قم بتشغيل أمر PowerShell Split-Path
وألصق المعلم -Parent
.
يظهر النتيجة أدناه أن الأمر يعيد مسار المجلد الرئيسي.

نصيحة: تشغيل أمر PowerShell Split-Path بدون معلمات سيعيد المجلد الرئيسي افتراضيًا ، نفس سلوك استخدام معلم
-Parent
.
نصيحة: يقبل المعلم
-Path
مسارات متعددة ، مما يسمح لك بتقسيم قيم المسارات النصية المتعددة في أمر واحد.e.g.,
Split-Path -Path 'c:\folder1','c:\folder2'
عرض مسار بدون المؤهل
تخيل أنك تقوم بإنشاء سيناريو يقوم بتكرار هيكل شجرة المجلدات من محرك واحد إلى آخر (على سبيل المثال، C:\demo\subfolder1 إلى D:\demo\subfolder1). قد ترغب في أن يقوم الكود بتقسيم المسار المصدر والحصول على هيكل المجلد فقط بدون حرف المحرك.
للحصول على المسار بدون المحدد، قم بتشغيل أمر PowerShell Split-Path
مع المعلمة -NoQualifier
مثل الأمر أدناه. يقوم هذا الأمر بتقسيم المسار وحذف حرف المحرك من النتيجة.
كما يمكن رؤية النتيجة أدناه، باستخدام المعلمة noQualifier
يتم إرجاع المسار بدون سلسلة المحدد.

الحصول على المحرك أو المحدد للمسار
قد يكون هناك أوقات عندما تحتاج إلى إرجاع المحدد أو حرف المحرك فقط. على سبيل المثال، عندما ترغب في أن يقوم السيناريو بتلخيص النتائج بناءً على حروف المحرك.
و للقيام بذلك، قم بتشغيل أمر PowerShell Split-Path
أدناه مع المعلمة -Qualifier
. هذا الأمر سوف يقوم بتقسيم المسار وإرجاع سلسلة المحدد فقط كنتيجة.

عرض اسم الملف أو المجلد أو العنصر
فكر في المسار كشجرة. المحدد يمثل الشجرة نفسها، المجلدات هي الفروع، وفي النهاية، ستجد الورقة. الورقة هي أي سلسلة غير فارغة في نهاية المسار.
عندما تحتاج إلى تقسيم المسار للحصول على الورقة، قم بتشغيل أمر Split-Path
أدناه وأضف المعلمة -Leaf
.
كما يظهر الصورة أدناه، يوضح الأمر أنه تم إرجاع اسم الملف فقط من المسار الذي حددته.

تقسيم اسم الملف والامتداد (≥PowerShell 6.0)
ملاحظة: ينطبق هذا القسم على PowerShell 6.0 والإصدارات الأحدث.
لقد قمت بتقسيم المسار وإرجاع العنصر. والعنصر في هذه الحالة هو اسم الملف (TestFile_11.txt)، والذي يحتوي على جزئين – القاعدة والامتداد. يسمح لك أمر PowerShell Split-Path
بتقسيم العنصر الفرعي إلى هاتين الجزئين باستخدام المعلمة -LeafBase
و -Extension
.
للحصول على القاعدة والامتداد لاسم الملف، قم بتشغيل الأوامر التالية.
إذا لم يكن للمسار امتداد، ستعيد المعلمة
Extension
سلسلة فارغة.

تقسيم اسم الملف والامتداد (≤ Windows PowerShell 5.1)
عذرًا، ولكن المعلمات -LeafBase
و -Extension
غير متاحة في Windows PowerShell 5.1 والإصدارات الأقدم. لا تقلق، بفضل بعض السحر في PowerShell، يمكنك تكرار نتيجة هذه المعلمات حتى إذا كان لديك فقط Windows PowerShell 5.1.
ولكن بدلاً من ذلك، بدلاً من أمر Split-Path
، ستستخدم الشيء الأقرب – تركيبة طريقة split()
و مشغل -replace
.
A PowerShell string object, such as the path, contains a split()
method. This method allows you to split a string into multiple elements based on a delimiter character that you provide. And in the case of paths, the delimiter is the (\\
) back-slash character.
من ناحية أخرى، يسمح لك المشغل -replace
بتبديل السلاسل باستخدام تعبيرات منتظمة (RegEx).
لمحاكاة نتائج معلمة -LeafBase
، قم بتشغيل الأمر التالي في PowerShell.
نتيجة لذلك، يظهر في الصورة أدناه أن الأمر أرجع فقط اسم الملف الأساسي.

الآن، للحصول على امتداد الملف فقط، قم بتشغيل الأمر أدناه في باور شيل.
النتيجة أدناه تظهر أن الأمر أرجع فقط امتداد اسم الملف – txt
.

تحديد ما إذا كان المسار هو مطلق
كمسؤول نظام، ستواجه نوعين من المسارات—المطلق و النسبي. ولكن ما الفرق؟ يبدأ المسار المطلق بمحدد، مثل C:\demo أو HKCU:\Software. على العكس، المسار النسبي لا يحتوي على محدد، مثل .\demo أو \folder1\folder2.
يمكن لأداة سطر الأوامر Split-Path
في PowerShell مساعدتك في تحديد المسار المطلق باستخدام المعلمة -IsAbsolute
. للقيام بذلك، قم بتشغيل الأوامر أدناه لتحديد ما إذا كان المسار مطلقًا.
كما يمكنك رؤية أدناه، تُرجع المعلمة -isAbsolute
قيمة بوليانية للإشارة إلى ما إذا كان المسار مطلقًا (TRUE
) أم نسبيًا (FALSE
).

تقسيم وحل المسارات باستخدام الرموز المعيارية
حتى هذه اللحظة، المسارات التي قمت بتقسيمها باستخدام أداة سطر الأوامر Split-Path
لا يجب أن تكون موجودة بالفعل. سواء كان المسار موجودًا أم لا، ستقوم هذه الأداة بتقسيمه وتقديم النتيجة لك.
لكن أداة سطر الأوامر Split-Path
في PowerShell لديها معلمة أخرى تسمى -Resolve
. تُتيح لك هذه المعلمة حل العناصر التي يتم الإشارة إليها بواسطة الرموز المعيارية. وإذا كنت ستستخدم هذه المعلمة، يجب أن يكون المسار الذي ستقسمه والعناصر ضمنه موجودة بالفعل.
على سبيل المثال، لإرجاع العناصر المطابقة لامتداد ملف *.txt
، قم بتشغيل الأمر أدناه. المعلمة -Leaf
تضمن أن تُرجع أداة السطر الوامرية فقط العناصر وليس الحاويات الأم.
الرمز المعياري (
*
) يمثل حرفًا واحدًا أو أكثر للتطابق، بينما (؟
) يمثل رمز واحد فقط.
النتيجة أدناه تعرض الملفات TestFile_11.txt إلى TestFile_20.txt. هذه الملفات جميعًا مطابقة لامتداد اسم الملف .txt
.

لحل تطابق حرف واحد بدلاً من الاستعلام البرمجي الذي يستخدم الرمز النجمي (*
)، استخدم الاستعلام البرمجي التالي واستبدل الرمز النجمي بالرمز الاستعلامي (?
)
الناتج أدناه يظهر فقط الملف TestFile_20.txt لأن هذا الملف هو الوحيد الذي تطابق.

إذا كان المسار يحتوي على حرف هروب، مثل الحرف النقطي الذي يأتي بين العلامتين القاعدتين (“`”)، فضع المسار بين علامتي اقتباس فردي لحل المسار. على سبيل المثال، يقسم ويحل الاستعلام البرمجي أدناه مسارًا يحتوي على حرف هروب.

كدليل على الفكرة، إذا لم تضع المسار بين علامتي اقتباس فردي، سيعيد الاستعلام البرمجي خطأ بأن المسار غير موجود. يحدث نفس الخطأ أيضًا إذا استخدمت علامات اقتباس مزدوجة بدلاً من ذلك.

الختام
أداة الأوامر البرمجية Split-Path
في PowerShell هي أداة لا غنى عنها لمسؤولي النظام والمستخدمين على حد سواء. هذا البرنامج التعليمي يهدف إلى تعليمك كيفية استخدام أداة الأوامر البرمجية Split-Path
لتقسيم أي مسار معين وإرجاع عناصر محددة بناءً على الوسيط الذي تستخدمه.
هل استخدمت أداة الأوامر البرمجية Split-Path
في مهامك من قبل؟ إذا لم يكن كذلك، هل قنعك هذا البرنامج التعليمي باستخدامه في مهامك اليدوية أو التلقائية؟ أم هل تعرف طريقة أخرى لتقسيم المسارات بشكل أفضل من أداة الأوامر البرمجية Split-Path
في PowerShell؟