מדריך | אוטומציות PowerShell בקבצי ps1 המדריך המלא. וגם למה זה בכלל שימושי?
-
אוטומציות PowerShell בקבצי ps1 המדריך המלא חלק א
מה זה, איך מתחילים, ניווט בסיסי, מבנה הפקודות, וניהול קבצים בסיסי.
אז דבר ראשון מה זה בכלל PowerShell ומה ההבדל בינו לבין cmd?
אז גם PowerShell וגם cmd מאפשרים לשלוט על המחשב דרך פקודות,
cmd זה הסוג הישן והמוגבל יותר ולשימוש בו יוצרים קובצי bat שעל זה כבר דובר רבות בפורום ועל זה אני לא צריך לפרטמה שאני כן רוצה לדבר על זה זה המגביל המתקדם של cmd-bat שזה
PowerShell-ps1למעשה PowerShell הוא הדור החדש של cmd
אז לפני שמתחילים למה זה בכלל שימושי?
התשובה להרבה דברים ונכתוב כאן 3 מתוכם
1: אוטומציה של משימות חוזרות
כשצריך לעשות הרבה פעולות כמו שינו שמות קבצים מרובה העתקת קבצים מרובים מנתיבים שונים לנתיבים שונים הכנסת תכנים (אפילו שונים) לקובצי טקסט מרובים וליצור הרבה קבצים (בשימוש בלולאות אפשר לעשות בכמה שורות פתיחת מאה קבצים בשמות וסיומות שונים כולל לפי ריצה על רשימה של שמות או לפי רצף מספרי מתמטי) במקום לבצע כל פעולה ידנית, אפשר לכתוב סקריפט אחד שמבצע את כל השלבים בלחיצה אחת.
2: ניהול מחשב והגדרות מתקדם
PowerShell מאפשר גישה למידע על המחשב והמערכת:
להציג תהליכים רצים
לעצור תהליכים או שירותים (Stop-Process, Stop-Service)
לבדוק מצב דיסק, זיכרון, עדכונים ועוד
שינוי כל הגדרה
איפוס סיסמת משתמש בלי לדעת את הקיים
ועוד כמות עצומה של פקודות ניהול המחשב שאם אתחיל לפרט כאן אני לעולם לא אסיים3: בדיקות ותהליכים מורכבים
עם קבצי PS1 אפשר לכתוב תנאים ולולאות בשביל לבדוק דברים ולפעול לפיהם
למשל אם יש רשת תפתח דפדפן ואם הקובץ קיים תעתיק אותו אבל אם הקובץ לא קיים תיצור אותו ואז תעתיק
כל זה אפשרי בלי שתצטרך לזכור את כל הצעדים ידנית.לסיכום: קובצי PS1 שימושיים כי הם מקטינים עבודה ידנית, מאפשרים שליטה מלאה על המחשב, ונותנים כוח לבצע אוטומציות מורכבות בקלות. ברגע שמכירים את זה, כמעט כל משימה שחוזרת על עצמה יכולה להפוך לסקריפט.
אז איך מתחילים?
אז בשביל להתחיל צריך לאשר למשתמש הרצת סקריפטים
אז בשביל זה חפשו בשורת הפקודה 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
אז לפני שמתחילים למה זה בכלל שימושי?
התשובה להרבה דברים ונכתוב כאן 3 מתוכם
1: אוטומציה של משימות חוזרות
כשצריך לעשות הרבה פעולות כמו שינו שמות קבצים מרובה העתקת קבצים מרובים מנתיבים שונים לנתיבים שונים הכנסת תכנים (אפילו שונים) לקובצי טקסט מרובים וליצור הרבה קבצים (בשימוש בלולאות אפשר לעשות בכמה שורות פתיחת מאה קבצים בשמות וסיומות שונים כולל לפי ריצה על רשימה של שמות או לפי רצף מספרי מתמטי) במקום לבצע כל פעולה ידנית, אפשר לכתוב סקריפט אחד שמבצע את כל השלבים בלחיצה אחת.
2: ניהול מחשב והגדרות מתקדם
PowerShell מאפשר גישה למידע על המחשב והמערכת:
להציג תהליכים רצים
לעצור תהליכים או שירותים (Stop-Process, Stop-Service)
לבדוק מצב דיסק, זיכרון, עדכונים ועוד
שינוי כל הגדרה
איפוס סיסמת משתמש בלי לדעת את הקיים
ועוד כמות עצומה של פקודות ניהול המחשב שאם אתחיל לפרט כאן אני לעולם לא אסיים3: בדיקות ותהליכים מורכבים
עם קבצי PS1 אפשר לכתוב תנאים ולולאות בשביל לבדוק דברים ולפעול לפיהם
למשל אם יש רשת תפתח דפדפן ואם הקובץ קיים תעתיק אותו אבל אם הקובץ לא קיים תיצור אותו ואז תעתיק
כל זה אפשרי בלי שתצטרך לזכור את כל הצעדים ידנית.לסיכום: קובצי PS1 שימושיים כי הם מקטינים עבודה ידנית, מאפשרים שליטה מלאה על המחשב, ונותנים כוח לבצע אוטומציות מורכבות בקלות. ברגע שמכירים את זה, כמעט כל משימה שחוזרת על עצמה יכולה להפוך לסקריפט.
אז איך מתחילים?
אז בשביל להתחיל צריך לאשר למשתמש הרצת סקריפטים
אז בשביל זה חפשו בשורת הפקודה 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 גם אם נראית מזעזע...
כדי להגיע אליה אפשר ללחוץ קליק ימני על כול קובץ powershell ולבחור באופציה של edit עם הסמל של העיפרון.הסביבת פיתוח הזאת מזוהה אם עוד כמה סוגי קבצים שאני לא מכיר.
- ps1.
- psm1.
- psd1.
- pssc.
- psrc.
- cdxml.
- psxml.
אגב מסתבר שהקובץ נקרא PS1 בגלל שמייקרוסופט שקלו להוציא גרסה 2 וזנחו בסוף את הרעיון.
-
@hartkhartk
הסברת מצוין איך משתמשים בזה
כנראה שתהיה תועלת אם תרחיב למה משתמשים בזה
עם דוגמאות איך זה יכול להועיל ביום יום, ולקצר הליכים.@MAKRO כתב במדריך | אוטומציות PowerShell בקבצי ps1 המדריך המלא:
@hartkhartk
הסברת מצוין איך משתמשים בזה
כנראה שתהיה תועלת אם תרחיב למה משתמשים בזה
עם דוגמאות איך זה יכול להועיל ביום יום, ולקצר הליכים.הוספתי. תודה על המשוב
-
למה זה בכלל שימושי? נערך בפוסט הראשון