מדריך | אוטומציות PowerShell בקבצי ps1 המדריך המלא
-
אוטומציות PowerShell בקבצי ps1 המדריך המלא חלק א
מה זה, איך מתחילים, ניווט בסיסי, מבנה הפקודות, וניהול קבצים בסיסי.
אז דבר ראשון מה זה בכלל PowerShell ומה ההבדל בינו לבין cmd?
אז גם PowerShell וגם cmd מאפשרים לשלוט על המחשב דרך פקודות,
cmd זה הסוג הישן והמוגבל יותר ולשימוש בו יוצרים קובצי bat שעל זה כבר דובר רבות בפורום ועל זה אני לא צריך לפרטמה שאני כן רוצה לדבר על זה זה המגביל המתקדם של cmd-bat שזה
PowerShell-ps1למעשה PowerShell הוא הדור החדש של cmd
אז בשביל להתחיל צריך לאשר למשתמש הרצת סקריפטים
אז בשביל זה חפשו בשורת הפקודה PowerShell ולהפעיל כמנהל
בשביל לאשר למשתמש הרצת סקריפטים תעתיקו לחלון הכחול שנפתח את השורה הבאהSet-ExecutionPolicy RemoteSigned -Scope CurrentUserאם זה יורד שורה בלי לעשות כלום הצלחתם
אם לא תבדקו אם פתחתם את החלון כמנהללבדיקה אם זה כבר מאושר למשתמש הרצת סקריפטים תריצו
Get-ExecutionPolicyאם התוצאה זה Restricted אז זה חסום וצריך להריץ שוב את הפתיחה
תצרו קובץ בסיומת ps1 ותפתחו אותו עם כל עורך טקסט
כעת אפשר להכניס לקובץ פקודות
שימו לב שכל פקודה ופקודה לבד יכולים להריץ ישירות בטרנימל אבל לרשימת פקודות ולבדיקות (if else) וללולאות ועוד צריך קובץ סקריפט בסיומת ps1
שימו לב שבשביל שזה יעבוד תקין אסור להיות בנתיבים תווים בעברית
פתחתי קובץ איך אני מתחיל?
1 הדפסה לקונסול
נתחיל בפקודה הראשונה הדפסת טקסט לקונסול
Write-Output "הטקסט שלך"2 ניווט
ועכשיו לניווט במיקום בקבצים בחלון PowerShell
פותחים את הפקודה בתווים cd ממשיכים עם גרשיים שבתוכם הנתיב
הנתיבים (בלי cd) ישמשו אותנו בקובץ ps1
שימו לב לפונקציונליות
יש שני סוגי נתיבים
למשל: נניח שזה הנתיב לקובץC:\Temp\power\a.ps1ואתם נמצאים ב PowerShell בנתיב
c:\Tempתוכלו להריץ בשני דרכים
1 נתיב יחסי".\power\a.ps1"רק אם אתם במיקום הנכון
2 נתיב מלא
c:\Temp\power\a.ps1ללא תלות במיקום
נתיב יחסי תמיד מתחיל ב.\ולמה? המשמעות של . זה תיקייה נוכחית ו \ זה מפריד לחלק הבא
נתיב מלא תמיד מתחיל באות האנגלית של שם הכונן ונקודתיים : וסלאש ** למשל
c:\המשמעות של . (נקודה) זה התיקיה הנוכחית
המשמעות של .. (שני נקודות) זה ניווט אחד אחורה אל תיקייה אחורית
המשמעות של ** זה מפריד בין החלקים ומכניס אל תיקייה\קובץ פנימיתאתגרו את עצמכם
הפקודה הבאה
c:\Temp\potosh\..\..\intel\.\.\..היכן זה יגמר?
טיפ
לקבלת נתיב של תיקייה תכנסו לסייר הקבצים יש את שורת הכתובת ממש כמו בכרום תלחצו על זה ותעתיקו3 מבנה הפקודות
הפקודות מורכבות כך
שם הפקודה, רווח, מינוס, שם הפרמטר, רווח, אם יש תוכן לפרמטר, אז אם זה תווים חופשי כמו נתיב או שם קובץ או טקסט להדפסה עוטפים בגרשיים, תוכן הפרמטר, רווח וחוזר אל שם הפרמטר הבא והלאה אם יש עוד פרמטריםשימו לב שיש שלושה סוגח פרמטרים. פרמטרים מיקומיים, פרמטרים לא-מיקומיים, ופרמטרי דגל
1 פרמטרים מיקומיים ניתן לכתוב גם בלי שם הפרמטר כל עוד שומרים על הסדר של הפרמטרים בפקודה
2 פרמטרים לא-מיקומיים אותו דבר אבל חיבים לכתוב גם את שם הפרמטר
3 פרמטרי דגל שהם ללא תוכן בכלל רק כמו כפתור קימים ההגדרה דלוקה לא קימים ההגדרה כבויה
4 העתקה ויצירה של קבצים ותיקיות
תעקבו אחר המבנה שבחלק 3
1 יצירה של משהו זה הפקודה New-Item
סוג המשהו זה הפרמטר -ItemType שימו לב שזה ללא גרשיים, דוגמאות: תיקייה Directory, קובץ File
ומיקום המשהו זה הפרמטר -path שימו לב שזה צריך להיות כולל שם המשהו בסוף הנתיב ואם זה קובץ אז כולל נקודה וסיומת
לדוגמהNew-Item -ItemType File -Path "C:\Temp\test.txt"שימו לב שאם אני יודע את סדר הפרמטרים במיקומיים בלבד אני יכול לכתוב פשוט
New-Item "C:\Temp\test.txt" -ItemType Fileכי -path זה פרמטר מיקומי בעוד -ItemType זה פרמטר לא מיקומי
שימו לב שאם הקובץ קיים זה יתן שגיאה אם אתם רוצים שזה יחליף את הקיים תוסיפו דגל -Force
2 העתקה של משהו זה הפקודה Copy-Item
וזה מקבל פרמטר מיקומי שמכיל את הנתיב מוצא שממנו מעתקים כולל שם התיקיה\קובץ.סיומת שאותו מעתיקים ועוד פרמטר נתיב יעד שלשם מעתיקים
שימו לב שאם זה תיקייה לא ריקה צריך להוסיף דגל -Recurse בשביל שזה יקבל גישה לכל התוכן שבתוכו
ושוב פעם אם זה קיים זה יתן שגיאה אם אתם רוצים שזה יחליף תוסיפו דגל -Force3 למחיקה של משהו זה הפקודה Remove-Item
שמקבל פרמטר מיקומי נתיב הדבר שרוצים למחוק (ושוב אם זה קובץ אז כולל שם.סיומת)
שימו לב שאם אתם מוחקים תיקייה אם יש לזה תוכן תצתרכו להוסיף -Recurseשימו לב שאם אתם רוצים שזה ימחק גם קבצים מוסתרים\קריאה בלבד תוסיפו את הדגל -Force
להרצת הקובץ לאחר כתיבת הפקודות יש כמה דרכים
1 תפתחו PowerShell ותווטו אל תיקייה שבו נמצא הקובץ ps1 ps1 ותריצו שם_הקובץ.ps1 או אפילו מנוווט למקום אחר אבל תשתמשו בנתיב
2 פשוט קליק ימני על הקובץ ו Run with PowerShellבחלק הבא אם יהיה ביקוש נדבר על משתנים תנאים ולולאות
-
תגובות? הערות? יש?
-
תגובות? הערות? יש?
@hartkhartk
הסברת מצוין איך משתמשים בזה
כנראה שתהיה תועלת אם תרחיב למה משתמשים בזה
עם דוגמאות איך זה יכול להועיל ביום יום, ולקצר הליכים. -
אוטומציות PowerShell בקבצי ps1 המדריך המלא חלק א
מה זה, איך מתחילים, ניווט בסיסי, מבנה הפקודות, וניהול קבצים בסיסי.
אז דבר ראשון מה זה בכלל PowerShell ומה ההבדל בינו לבין cmd?
אז גם PowerShell וגם cmd מאפשרים לשלוט על המחשב דרך פקודות,
cmd זה הסוג הישן והמוגבל יותר ולשימוש בו יוצרים קובצי bat שעל זה כבר דובר רבות בפורום ועל זה אני לא צריך לפרטמה שאני כן רוצה לדבר על זה זה המגביל המתקדם של cmd-bat שזה
PowerShell-ps1למעשה PowerShell הוא הדור החדש של cmd
אז בשביל להתחיל צריך לאשר למשתמש הרצת סקריפטים
אז בשביל זה חפשו בשורת הפקודה PowerShell ולהפעיל כמנהל
בשביל לאשר למשתמש הרצת סקריפטים תעתיקו לחלון הכחול שנפתח את השורה הבאהSet-ExecutionPolicy RemoteSigned -Scope CurrentUserאם זה יורד שורה בלי לעשות כלום הצלחתם
אם לא תבדקו אם פתחתם את החלון כמנהללבדיקה אם זה כבר מאושר למשתמש הרצת סקריפטים תריצו
Get-ExecutionPolicyאם התוצאה זה Restricted אז זה חסום וצריך להריץ שוב את הפתיחה
תצרו קובץ בסיומת ps1 ותפתחו אותו עם כל עורך טקסט
כעת אפשר להכניס לקובץ פקודות
שימו לב שכל פקודה ופקודה לבד יכולים להריץ ישירות בטרנימל אבל לרשימת פקודות ולבדיקות (if else) וללולאות ועוד צריך קובץ סקריפט בסיומת ps1
שימו לב שבשביל שזה יעבוד תקין אסור להיות בנתיבים תווים בעברית
פתחתי קובץ איך אני מתחיל?
1 הדפסה לקונסול
נתחיל בפקודה הראשונה הדפסת טקסט לקונסול
Write-Output "הטקסט שלך"2 ניווט
ועכשיו לניווט במיקום בקבצים בחלון PowerShell
פותחים את הפקודה בתווים cd ממשיכים עם גרשיים שבתוכם הנתיב
הנתיבים (בלי cd) ישמשו אותנו בקובץ ps1
שימו לב לפונקציונליות
יש שני סוגי נתיבים
למשל: נניח שזה הנתיב לקובץC:\Temp\power\a.ps1ואתם נמצאים ב PowerShell בנתיב
c:\Tempתוכלו להריץ בשני דרכים
1 נתיב יחסי".\power\a.ps1"רק אם אתם במיקום הנכון
2 נתיב מלא
c:\Temp\power\a.ps1ללא תלות במיקום
נתיב יחסי תמיד מתחיל ב.\ולמה? המשמעות של . זה תיקייה נוכחית ו \ זה מפריד לחלק הבא
נתיב מלא תמיד מתחיל באות האנגלית של שם הכונן ונקודתיים : וסלאש ** למשל
c:\המשמעות של . (נקודה) זה התיקיה הנוכחית
המשמעות של .. (שני נקודות) זה ניווט אחד אחורה אל תיקייה אחורית
המשמעות של ** זה מפריד בין החלקים ומכניס אל תיקייה\קובץ פנימיתאתגרו את עצמכם
הפקודה הבאה
c:\Temp\potosh\..\..\intel\.\.\..היכן זה יגמר?
טיפ
לקבלת נתיב של תיקייה תכנסו לסייר הקבצים יש את שורת הכתובת ממש כמו בכרום תלחצו על זה ותעתיקו3 מבנה הפקודות
הפקודות מורכבות כך
שם הפקודה, רווח, מינוס, שם הפרמטר, רווח, אם יש תוכן לפרמטר, אז אם זה תווים חופשי כמו נתיב או שם קובץ או טקסט להדפסה עוטפים בגרשיים, תוכן הפרמטר, רווח וחוזר אל שם הפרמטר הבא והלאה אם יש עוד פרמטריםשימו לב שיש שלושה סוגח פרמטרים. פרמטרים מיקומיים, פרמטרים לא-מיקומיים, ופרמטרי דגל
1 פרמטרים מיקומיים ניתן לכתוב גם בלי שם הפרמטר כל עוד שומרים על הסדר של הפרמטרים בפקודה
2 פרמטרים לא-מיקומיים אותו דבר אבל חיבים לכתוב גם את שם הפרמטר
3 פרמטרי דגל שהם ללא תוכן בכלל רק כמו כפתור קימים ההגדרה דלוקה לא קימים ההגדרה כבויה
4 העתקה ויצירה של קבצים ותיקיות
תעקבו אחר המבנה שבחלק 3
1 יצירה של משהו זה הפקודה New-Item
סוג המשהו זה הפרמטר -ItemType שימו לב שזה ללא גרשיים, דוגמאות: תיקייה Directory, קובץ File
ומיקום המשהו זה הפרמטר -path שימו לב שזה צריך להיות כולל שם המשהו בסוף הנתיב ואם זה קובץ אז כולל נקודה וסיומת
לדוגמהNew-Item -ItemType File -Path "C:\Temp\test.txt"שימו לב שאם אני יודע את סדר הפרמטרים במיקומיים בלבד אני יכול לכתוב פשוט
New-Item "C:\Temp\test.txt" -ItemType Fileכי -path זה פרמטר מיקומי בעוד -ItemType זה פרמטר לא מיקומי
שימו לב שאם הקובץ קיים זה יתן שגיאה אם אתם רוצים שזה יחליף את הקיים תוסיפו דגל -Force
2 העתקה של משהו זה הפקודה Copy-Item
וזה מקבל פרמטר מיקומי שמכיל את הנתיב מוצא שממנו מעתקים כולל שם התיקיה\קובץ.סיומת שאותו מעתיקים ועוד פרמטר נתיב יעד שלשם מעתיקים
שימו לב שאם זה תיקייה לא ריקה צריך להוסיף דגל -Recurse בשביל שזה יקבל גישה לכל התוכן שבתוכו
ושוב פעם אם זה קיים זה יתן שגיאה אם אתם רוצים שזה יחליף תוסיפו דגל -Force3 למחיקה של משהו זה הפקודה Remove-Item
שמקבל פרמטר מיקומי נתיב הדבר שרוצים למחוק (ושוב אם זה קובץ אז כולל שם.סיומת)
שימו לב שאם אתם מוחקים תיקייה אם יש לזה תוכן תצתרכו להוסיף -Recurseשימו לב שאם אתם רוצים שזה ימחק גם קבצים מוסתרים\קריאה בלבד תוסיפו את הדגל -Force
להרצת הקובץ לאחר כתיבת הפקודות יש כמה דרכים
1 תפתחו PowerShell ותווטו אל תיקייה שבו נמצא הקובץ ps1 ps1 ותריצו שם_הקובץ.ps1 או אפילו מנוווט למקום אחר אבל תשתמשו בנתיב
2 פשוט קליק ימני על הקובץ ו Run with PowerShellבחלק הבא אם יהיה ביקוש נדבר על משתנים תנאים ולולאות
@hartkhartk כל הכבוד
כדאי שתראה איך מטפלים במחרוזות, חיתוך / שליפה / טרימינג וכדומה