האם יש צורך לפרק נתיבים כדי לקבל חלקים ספציפיים ממנו? אם כן, אז ב- PowerShell Split-Path
הוא החבר שעליו אתה יכול לסמוך. כשאתה עובד עם קבצים, תעודות והרשומה, תשים לב שהנתיבים מייצגים את מיקומם.
ובמקום מסוים, ייתכן שתצטרך לסנן איזו חלק מהנתיב להחזיר, אולי בזמן שאתה עושה אוטומציה. מזל טוב לך, המדריך הזה ילמד אותך דרכים להשתמש בפקודת PowerShell Split-Path
כדי לעשות זאת.
בואו נמשיך! המשך לקרוא ונקבל לך נשק חדש לארסנל שלך ב- PowerShell!
דרישות מוקדמות
אם אתה מתכוון להשתמש בדוגמאות במדריך הפעלה זה, תצטרך מחשב הפועל בגרסה מודרנית של Windows שיש לו PowerShell 5.1 ומעלה. במדריך זה אנו נשתמש ב- Windows 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)
פרמטרים של Split-Path של PowerShell
כמו כל cmdlet, Split-Path
מגיע עם סט של פרמטרים שמנהלים כיצד ה-cmdlet נתפקד ומחזירים את הפלט שלו. ופרמטרים אלו הם אשר מרכיבים את תחביר ה-Split-Path
של PowerShell.
-Path
– פרמטר זה מקבל מחרוזות נתיב אחת או יותר שברצונך לפצל. פרמטר זה גם מקבל קלט מצינות. תווים גלויים בנתיבים גם נמוכנים.-LiteralPath
– כמו הפרמטר-Path
, פרמטר-LiteralPath
גם מקבל נתיבים לפיצול. אך פרמטר זה יטפל רק בנתיב כפי שהוא נכתב. במובן, הפקודה לא תפרש תווים גלויים אם תשתמש בפרמטר זה כדי לציין נתיבים.-Resolve
– פרמטר זה מגיד ל-cmdlet Split-Path לפתור את הקבצים או הפריטים שנמצאים בנתיב שסיפקת. עקב טבעו הספציפי, אין אפשרות להשתמש בפרמטר זה יחד עם הפרמטר-LiteralPath
.-IsAbsolute
– משתנה זה מחזיר ערך בוליאני כדי לקבוע האם הנתיב שציינת הוא נתיב מוחלט או לא.
הפקודה של PowerShell
Split-Path
כן מכילה פרמטר בשם-Credential
, שצפוי לקבל אובייקט ניפוי PSCredential. אך לפי מיקרוסופט, פרמטר זה לא נתמך על ידי אף אחד מספקי ה-PowerShell המובנים ומפיק שגיאה בשימוש בו.
הפרמטרים הבאים נקראים פרמטרי מיקום המפצל. פרמטרים אלו מודיעים לפקודת PowerShell Split-Path
איזה אלמנט או חלק של נתיב להחזיר. מכיוון שהפקודה יכולה להחזיר רק אלמנט אחד של נתיב, ניתן להשתמש רק באחד מתוך פרמטרים אלו בכל פעם אחת.
-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
. פקודה זו תפרק את הנתיב ותחזיר רק את מחרוזת הזיהוי כתוצאה.

תצוגת שם של קובץ, תיקייה או פריט
חשוב לראות את הנתיב כמו עץ. הזיהוי יכול להיות העץ עצמו, התיקיות הן הענפים, ובסופם תמצא את העלה. עלה הוא מחרוזת באורך שונה מאפס בסוף הנתיב.
כאשר תרצה לפרק נתיב כדי לקבל את העלה, הפעל את פקודת ה- PowerShell Split-Path
למטה והוסף את הפרמטר -Leaf
.
כתוצאה, התמונה למטה מראה שהפקודה החזירה רק את שם הקובץ מהנתיב שצוין.

רכישת שם קובץ וסיומת (≥PowerShell 6.0)
הערה: סעיף זה חל על PowerShell 6.0 ומעלה.
אז פיצלת את הנתיב והחזרת את הפריט. והפריט, במקרה זה, הוא שם קובץ (TestFile_11.txt), שיש לו שני חלקים – הבסיס והסיומת. פקודת ה-Split-Path
של PowerShell מאפשרת לך לפצל גם יותר את העלה לשני חלקים אלו באמצעות הפרמטרים -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
, הריצו את הפקודה למטה בפוורשל.
כתוצאה, בצילום המסך למטה מוצג כי הפקודה החזירה רק את שם הבסיס של שם הקובץ.

עכשיו, כדי לקבל רק את הסיומת של הקובץ, הפעל את הפקודה למטה בפוורשל.
התוצאה למטה מראה שהפקודה החזירה רק את סיומת שם הקובץ – txt
.

קביעת האם הנתיב הוא מוחלט
כמנהל מערכת, תתמקד בשני סוגי נתיב—מוחלט ו-יחסי. אבל מה ההבדל? נתיב מוחלט מתחיל עם מזהה, כמו C:\demo או HKCU:\Software. לעומת זאת, נתיב יחסי אינו מכיל מזהה, כמו .\demo או \folder1\folder2.
הְמָזַהֵה PowerShell Split-Path
יָכוֹל לעָזוֹר לָךְ לְזַהוֹת נָתִיב מֻלָא בְּאֻמְצָעוּת הַפָּרָמֶטֶר -IsAbsolute
. כְּדֵי לַעֲשׂוֹת זֹאת, הִפְעִילוּ אֶת הַפְּקוּדוֹת מִתַּחַת כְּדי לְקַבֵּעַ הַאִם הַנָּתִיב הוּא מֻלָא.
כְּפָיְךָ לְמַטָּה, הַפָּרָמֶטֶר -IsAbsolute
מַחֲזִיר עֵרֶךְ בוֹלֵאִי לְצַיֵּן הַאִם הַנָּתִיב הוּא מֻלָא (TRUE
) אוֹ יַחֲסָר (FALSE
).

פיצול ופתרון נתיבים עם תווי ג'וקר
עד לרגע זה, הנתיבים שאתה מפרק עם פקודת ה- 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?