יום רביעי, 21 במרץ 2018

מדריך ל PowerShell בעברית חלק 1 - מאיפה מתחילים?


הקדמה :

אני גאה להציג לכם את החלק הראשון בסדרת המדריכים, אודות השימוש והמעבר ל Power Shell.

החל מהבסיס ועד ש-ימאס לי לכתוב, שיסביר לכם מה זה בעצם Power Shell ואיך עובדים איתו והכי חשוב, איך מגלים בו פקודות? כיצד להתחיל לעבוד עם הסביבה? כיצד לעבור, איך לעשות את המעבר הלא פשוט הזה לפשוט מאוד משורת הפקודה הרגילה שאנחנו מכירים בתור מנהלי רשת\אנשי סיסטם ו\או טכנאי מחשבים הידוע בכינויה
 (Command Prompted (CMD לעבודה עם שורת פקודה הרבה יותר חזקה ויעילה שמאפשרת לנהל כמעט כל אספקט במערכת ההפעלה שלנו באם מקומית, או מרוחקת, כן כמו ששמעתם גברותי ורבותי, ניתן להתחבר למחשבים מרחוק, או יותר טוב, למה להתחבר למחשב מרחוק כשאפשר פשוט להריץ פקודה על מחשב מרוחק בלי לפתוח Session שיהווה סיכון מבחינת אבטחת המידע.

אני לא הולך להסביר לכם למה Power Shell יותר טוב או פחות טוב כי אם החלטתם להתמקצע בשפה הזאת, כנראה שאתם יודעים למה.

אני יכול להגיד, שברגע שמבינים איך לגשת לשפה הזאת (כן זאת גם שפת תכנות שמאפשרת לפתח תוכנות כאלה ואחרות), הדברים הופכים להיות קלים למדי.

למה אני כותב את המדריך הזה?

אחת הסיבות שהחלטתי לכתוב את המדריך הזה, היא כי לא מצאתי אפילו מדריך שלם אחד, שמסביר איך עובדים עם הדבר הזה שנקרא "Power Shell" החל מהבסיס, לרוב תמצאו בעברית חצאי מידע, או הסבר על "מה זה?", ורוב הסיכויים שלא תלמדו כלום, אני לא מדבר על YouTube, שם כמעט בכלל לא קיים שום מידע על עבודה עם Power Shell, פרט לכמה מדריכים שרובם מפרסמים מכללה וכמובן שגם שם זה רק חלק מהמידע.

לזכות אותה מכללה יאמר, שאולי תלמדו טריק או שתיים, אבל לא משהו שאפשר לעבוד איתו ביום יום או אפילו להתחיל ללמוד את השפה, זאת גם הסיבה שאני כותב את כל המדריכים שלי ומצלם את כל ההדרכות שלי אך ורק בעברית מכיוון שפשוט לאנשי המחשבים הישראלים מאוד קשה למצוא חומר בעברית, זה נכון שאנחנו אמורים לדעת אנגלית ולרוב אנחנו יודעים את השפה, אך יחד עם זאת אני מתאר לעצמי שיש כאלה שמתקשים באנגלית, מה שיגרום להם להכנס לבעיה מאוד גדולה מכיוון שמכשול השפה עלול לגרום להם לפרוש מאוד מהר מכיוון שהם פשוט לא יבינו את החומר בצורה טובה.

סתם לצורך בדיקה, תריצו בגוגל שאילתא כזאת "מדריך ל Power Shell", תאמינו לי קוראים יקרים, שרוב הסיכויים בעצמכם תהיו בהלם, עד כמה אין מידע, לעומת זאת אם תריצו שאילת באנגלית עם הצירוף " Power Shell guide", תתפלאו כמה מדריכים תקבלו החל מהבסיס של הבסיס, עד להדרכות הרבה יותר מקצועיות, שלא לדבר על כמות ההדרכות ב YouTube.

למי מיועד ה-Power Shell? – לכולם, אתם יכולים לתכנת עליו, אתם יכולים לנהל איתו שרתים, מחשבים, הוא מעולה בתור שפת סקריפט, תחליף מעולה ל CMD אני יכול להעיד על עצמי בתור מי שרגיל ל-CMD אני גם עכשיו פותח אותו כמעט על אוט' ברגע שאני צריך לבדוק תקשורת או כל דבר אחר, אבל אחרי שאתה עובד עם Power Shell, אני יכול להגיד בכיף שאני ממש לא רוצה לחזור ל-CMD

כעקרון ה-Power Shell הוא שילוב של כמה שפות שהן #CMD + .Net + C  ולכן גם הפקודות הרגילות של ה-CMD שאנחנו מכירים עובדות שם גם.

אפשר לכתוב איתו סקריפטים לעבודה יומיומית ואפשר ממש לפתח תוכנות, ככה שהוא גם שפת סקריפט וגם שפת תכנות.


למי מיועד המדריך?

אז ככה ראשית כל אם יש לכם ניסיון בניהול רשתות או שאתם רק בתחילת הדרך, המדריך יהיה לכם יותר ברור, במידה ואתם טכנאי מחשבים או פחות ממנהלי רשת\אנשי סיסטם, אני מאמין שיהיו לכם מושגים שקצת יקשו עליכם מכיוון שאני הולך לדבר על ניהול קבצים רגיל (בהמשך), מכונות וירטואליות על פלטפורמט Active Directory ,Hyper-v  ועוד.

במידה ויש לכם משהו שהוא לא ברור אתם כמובן יכולים לשאול אותי במייל  (יפורט בסוף המדריך) אבל זכרו אני לא אתן לכם את כל הפתרון, אני יכול לתת פתרון חלקי או להפנות אתכם לגוגל כמו כל איש מחשבים, אתם מחיובים לדעת לבצע חיפושים בגוגל, כי הוא החבר הכי טוב שלכם, יותר טוב מחבר טלפוני, יותר טוב ממרצה או מדריך.

חשוב לי להגיד שהחומר לא יתווסף על בסיס קבוע כל - X ימים, כתיבת חומר מסוג זה, זה משהו שלוקח זמן ולכן לא תמיד יש אותו, אבל אני אשתדל להביא כל פעם קצת, אישית בתור אדם שלא בא מעולם הפיתוח, אני אתן דגש על ניהול המערכות בעזרת ה Power Shell ונושא כתיבת הסקריפטים, ופחות על פיתוח תוכנות כאלה ואחרות, אני יכול להגיד על עצמי שאני לא אחד שכתב כמות מטורפת של סקריפטים בחיים שלי, אבל לדעת משהו כמו Power Shell הוא מאוד חשוב וכדי מאחר וכפי הנראה שמיקרוסופט צועדת לכיוון שורת הפקודה לאור העובדה שהרגע יצא שרת בשם
Microsoft Nano Server 2016, ואין לו שום ממשק בכלל פרט להגדרות בסיסיות של כתובת IP וחוקים בפיירוול, כל השאר אך ורק דרך Power Shell Remoting.


בהצלחה,
מאוד מקווה שתהנו מהקריאה ותצליחו להפיק את המירב.


                                                     חלק 1: מאיפה מתחילים? ואיך מסתדרים?



שאלת "מליון הדולר" מאיפה מתחילים?

גם אני שאלתי את עצמי את השאלה הזאת ברגע שהתחלתי ללמוד Power Shell "איך לעזעזל אני מתחיל לעבוד עם הדבר הזה? מה בעצם הדבר הראשון שאני צריך לדעת?"

אז ככה, הינה כמה פרטים שיעזרו לכם להתחיל לצעוד את הצעדים הראשונים שלכם בתור מי שרוצה לדעת Power Shell:

1) התחילו לצפות במדריך הכי טוב ב-Microsoft Virtual Academy : הינה הלינק לסרטון שמסביר את כל הבסיס ומלמד את כל הדברים הכי חשובים  (אני למדתי ממנו גם כן, צפיתי בכולו):

MVA – את ההדרכה מעבירים Jason Helmick ו Jeffrey Snover  הממציא של Power Shell. 

2)  הירשמו לפורום PowerShell.org – הפורום מנוהל על ידי כמה גורו ידועים בתחום 
ה-Power Shell האחד בשם Don Jones והשני  הוא Jason Helmick, ניתן להוריד ספרים בחינם אודות ה Power Shell.

3)  כל מה שאתם שומעים בהדרכות, תרשמו ותתרגלו על ידי ביצוע סקריפטים פשוטים, או סתם הרצת פקודות בשביל נסיון אחרת יהיה מאוד קשה לזכור את הפקודות ולהבין איך בעצם עובד ה-Power Shell.

4)  תצטרכו להפעיל את חוש ה"הסקרנות" שלכם וחוש ה"הרפתקנות" שלכם לצורך גילוי פקודות חדשות.

5) מדריך מצויין ללימוד (באנגלית)  Learn PowerShell Scripting in a Month of Lunches -  Power Shell

7) ספרי PDF באנגלית להורדה מה- Google Drive הפרטי שלי: Power Shell.


"תחשוב מה אתה רוצה, תקליד את זה, תקבל את זה" 

המשפט הזה, הוא בעצם המפתח לעבודה עם Power Shell הוא בנוי בצורה כזאת שבעצם יקל עלינו מנהלי הרשתות או כל איש IT אחר, או בכלל אנשים שלא באים מעולם הפיתוח להשיג את מה שאנחנו רוצים ולקבל את התוצאה בצורה הטובה ביותר היעילה ביותר והכי חשוב? הקלה ביותר.

להבדיל משפות תכנות\סקריפט אחרות, אשר בנויות מכל מיני צורות שלא תמיד ברורות לנו, Power Shell בנוי בצורה כזאת שברגע שתחשבו על פקודה בצורה הגיונית למוח האנושי, רוב הסיכויים שהיא גם כתובה ככה.

לדוגמא אם אני רוצה לעשות הפעלה מחדש למחשב שלי אני פשוט כותב "Restart-computer" בלי שם מחשב, בלי קילומטר של פקודות, בלי שום דבר מסובך, אפילו בשורת הפקודה כיבוי המחשב נראה ככה: shutdown –r
ואם אני רוצה שהכיבוי יתבצע עכשיו? אני צריך להוסיף גם t- וגם לכתוב 00, יותר מדי פרמטרים אם אתם שואלים אותי, לביצוע של הפעלה מחדש למחשב ("איך "shutdown -r" יכול להיקשר להפעלה מחדש?) ואם אני רוצה לכבות מחשב מרוחק? תחשבו רגע, מישהו ממכם זוכר איך בשורת הפקודה מכבים מחשב מרוחק? אני בספק, או לפחות אני מאמין שיקח לכם כמה רגעים להזכר, איך עושים את זה ב- Power Shell?
שימו לב גבירותי ורבותי: restart-computer pc01 וזה בשביל לכבות מחשב מרוחק, ואם אני רוצה לכבות את שלי? אני פשוט מוריד את השם מחשב בסוף זהו.. המחשב יתחיל תהליך ואם אתם בכלל רוצים לעשות את זה "בכוח" תוסיפו
 "force-" תאמינו לי עד שתספיקו לאיית "Power shell" המחשב כבר יתחיל לעשות הפעלה מחדש.
עוד משהו נחמד? יש לכם במחשב או בשרת מסויים מכונות וירטואליות שרצות על Hyper-v תריצו ב  Power Shell 
את Get-vm, תקבלו ישר את רשימת המכונות הוירטואליות שרצות אצלכם במחשב או בשרת, הינה הפלט מהמחשב שלי:



כרגע לפי התמונה הנ"ל רואים שהמכונה mdt-2013 במצב "Paused", מבחינת ההגיון איך תראה הפקודה  במוח שלנו אם אנחנו רוצים להפעיל את המכונה הוירטואלית? בצורה מאוד פשוטה "תעשה "המשך" למכונה mdt-2013" בדיוק ככה בנויה הפקודה עצמה: resume-vm mdt-2013

(הרצתי לאחר מכן את get-vm שוב פעם בשביל שתשימו לב לסטטוס של המכונה)



איך בנויות הפקודות של Power Shell?


Power Shell בנוי בצורה של verb-noun (שם עצם-פועל) לדוגמא אם אני רוצה לקבל עזרה (וכאן על הדרך תלמדו את הפקודה הכי חשובה ב Power Shell) אני פשוט אכתוב Get-Help ואקבל עזרה מפורטת מאוד, אודות השימוש בפקודה "get-help" כאן, אין לנו אפשרות להשתמש ב "man" כמו ב Linux או ב "?/ help" כמו שאנחנו רגילים ב-CMD.

במידה ואני רוצה לקבל רשימה של כל ה"פעלים" שקיימים אני פשוט יכול להריץ את הפקודה הכי הגיונית שעולה לי לראש "הראה לי את הפעלים" או בשפת ה- Get-Verb : Power Shell

(רוב הסביבה לא מתייחסת ל"אותיות גדולות" או "קטנות", ככה שאת הפקודות אתם יכולים לרשום באותיות "קטנות")


ככה תוכלו לגלות אילו פעלים יש ל Power Shell להציע, לאחר שתבחרו איזשהו פועל, פשוט כיתבו את הפועל ולחצו על מקש ה"-" ואז Power Shell יראה לכם את האפשרויות שיש בהקשר של אותו הפועל.

אני מאמין שלרוב, אף אחד ממכם לא לוחץ F1 בשביל להשתמש באמת ב"עזרה" שיש בתוכנות או בכל מוצר אחר בבית (מוצרים של Ikea לא נחשבים..).

אם אני רוצה לקבל עזרה אודות הפקודה "Get-Help", אני ארשום את הפקודה שתגיד למערכת שאני מחפש קובץ עזרה בעזרת "Get-Help" ולאחר מכן את הפקודה עצמה, לדוגמא כרגע אני רוצה לקבל עזרה אודות השימוש ב "Get-Help"
 אז מבנה הפקודה יראה ככה: Get-Help Get-Help ולאחר מכן אני יכול להוסיף עוד כל מיני פרמטרים שיגידו
ל-Power Shell איך אני רוצה לקבל את ה"עזרה" בצורה מפורטת? או אולי אני רוצה לקבל רק את מבנה הפקודה (Syntax) או אולי בכלל אני רוצה לקרוא את ה"עזרה" בחלון חיצוני בשביל שאוכל להעתיק ממנו מידע לחלון העבודה שלי? או שבעצם אולי נוח לי לראות את זה ישירות באתר האינטרנט של Microsoft?

לכל פקודה יש פרמטרים, כמו "force-" כמו "computername-" ועוד כל מיני פרמטרים כאלה ואחרים שעליהם נלמד בהמשך.

אז לפי הפורמט של הפקודה שלמדנו, אם אני רוצה לקבל מידע על הפקודה להצגת ה Services שרצים לי כרגע ברקע, אני אריץ Get-Help Get-Service ולאחר מכן אוסיף פרמטר מתאים (את הפרמטרים נלמד בפסקה הבאה אל תדאגו, אני לא אשאיר אתכם הרבה במתח).

הכי חשוב אל תפחדו להתנסות בפקודות תוך כדי הקריאה – זה רק יעזור לכם להכנס לעולם ה Power Shell מהר יותר ובצורה קלה יותר.

יאמר לזכות החבר'ה של Jefrry Snover שהם השקיעו במערך ה"עזרה" ב Power Shell ברמה מאוד מאוד גבוהה, ולכן ניתן למצוא שם כמעט את הכל במידה ופשוט יודעים לחפש.


"2" מילים על הממשקים וסביבת העבודה.


ממשקי ה Power Shell - ישנם שני ממשקי Power Shell:

1) האחד הוא שורת פקודה רגילה - בצבע כחול, דיי מזכיר את ה CMD שאנחנו רגילים אליו.

2) השניה-Power Shell ISE - (אני מודה שלא ממש היה אכפת לי מה אומרת המילה ISE, אז אם ממש בא לכם, אתם מוזמנים לגלות לבד ) זאת היא סביבת הפיתוח של ה-Power shell  ניתן לרשום שם את הקוד ממש כמו בכל סביבת פיתוח אחרת, כמובן כמו ב-Linux ה-TAB במקלדת משלים לכם את פקודות גם בסביבת שורת הפקודה וגם בסביבת הפיתוח אך בגירסת ה ISE הממשק גם יציע לכם הצאות לפקודות  (על ידי תפריט צבעוני ויפה בשם Intellisense) ויעזור לכם ללמוד על הפקודות ולזכור אותן בצורה קלה יותר, שלא לדבר על הצגת דוגמאות On The Fly.



השתדלו להפעיל  את ה Power Shell במצב של Administrator, ככה תוכלו לבצע את כל הפעולות שלכם ללא שגיאות מוזרות מצד המערכת.

הדרך לקבל עזרה בצורה מפורטת

אז נמשיך עם הפקודה Get-Help,
התחילו תוך כדי קריאת המדריך לעדכן את ה"עזרה" של ה Power Shell, נשמע לכם מוזר? תבדקו את זה,
פתחו Power Shell ISE במצב Administrator והקישו (שימו לב לפשטות הפקודות וכמה ההגיון של הפקודות עושה את העבודה, ממש לפי המודל של "תחשוב מה אתה רוצה, תקליד את זה, תקבל את זה"): Update-help -force
ותראו איך Power Shell מתחיל לעדכן את קבצי העזרה שלו אצלכם במחשב תוך שניות ישירות מהאינטרנט.


את ה"עזרה" אפשר לקבל בכמה צורות:
• עזרה מפורטת בעזרת: Get-Help Get-Help -full
• אפשר לראות רק את מבנה הפקודה: Get-Help Get-Help –syntax
• אפשר לראות את הפקודה בצורה מפורטת  Get-Help Get-Help –Detaile
•  אולי נראה רק דוגמאות של הפקודה?: get-help Get-Help -Examples.
• אפשר לראות את העזרה בחלון חיצוני בעזרת: get-help Get-Help –showwindow
• אפשר לראות את ה"עזרה" ישר באתר של מיקרוסופט: get-help Get-Help –online
• רוצים עוד "עזרה"? בבקשה רישמו פקודה כזאת: *_Get-Help about

אפשר לשלב בפקודה גם את הסימן "*" בכמה וכמה צורות: לפני פקודה, אחרי פקודה, ומסביב לפקודה עצמה לפי הדוגמאות הבאות:

o הראה לי את כל קבצי העזרה שמסתיימות במילה "Get-help *Service :"service

o הראה לי את כל קבצי העזרה שמתחילות במילה  "Get-Help Service* :"Service

o הראה לי את כל קבצי העזרה שיש להן את המילה "Get-Help *Service* :"Service

o הינה עוד צירוף מעניין – אותו אתם כבר תצטרכו לברר לבד: *Get-help g*Service

o תנו לחוש ה"סקרנות" שלכם "לחקור" את התוצאות.

o)  במידה ותרצו לקבל את כל הפקודות שיש לנו לעבוד איתן, ניתן להריץ את Get-Command.

o)  במידה ותרצו לצמצם את האפשרויות הריצו בשילוב עם משהו:
 Get-Command -Noun blahblah, Get-Command -Verb blahblah.

בסופו של דבר, לא תצטרכו לזכור כל כך הרבה פקודות, אלה כיצד לבצע חיפוש נכון בעזרת כמה פקודות וכיצד למצוא פקודות נוספות שיעזרו לכם להתנהל ב Power Shell.

משימה ראשונה להלן המשימה הראשונה שלכם ב-Power Shell.
• נסו לקבל "עזרה" אודות כמה פקודות פשוטות ונסו להשתמש בהן:
Get-Service o 
Get-Process o
Get-Chileditem o (שזה במקרה המקביל של "ls" וגם ה-"Dir")

• לאחר שתבינו מה כל אחת מהפקודות האלה עושות, נסו להשתמש בהן, וגלו כמה פשוט זה ללמוד לעבוד עם
ה-Power Shell.

עוד קצת ידע כללי - אחרי שהבנו איך בנויות הפקודות נלמד קצת מושגים: 

(אל תדלגו על החלק הזה, כמה שהוא ישמע לכם "משעמם" האמינו לי, שבלי החלק הזה במדריך לא תוכלו לעבוד בצורה נוכה ב Power Shell מכיוון שגם ה Power shell וגם האינטרנט משתמש במושגים האלה.)

Cmdlets
ה-Cmdlets או בשמן המלא "Command Lets" הן בעצם השם של הפקודות וכל מה שהוא לא אובייקט או כל דבר אחר.
 הפקודה עצמה היא לדוגמא "Get-Help", "Get-Process" וכד', כל הפקודות הללו הן Cmdlet לחדי העין מביניכם תשימו לב שפשוט לקחו את ה"CMD" והוסיפו לו עוד מילה אחת.


 Objects 
אז מה זה Object? בקצרה? זה כל דבר שהוא לא פקודה, זאת אומרת אם אני מריץ את הפקודה Get-Process, כל Process שיוצג לי בטבלה נקרא Object לדוגמא אם אני אבקש להציג רק את ה Process של הדפדפן Chrome אני ארשום (ושוב שימו לב למבנה הפשוט של הפקודה): Get-process chrome

(נראה ממש פשוט מדי לא? אני מאמין שהתשובה הנכונה ביותר לשאלה הזאת היא יותר נכון להגיד "הגיוני יותר")

PS C:\WINDOWS\system32> Get-Process chrome
והינה הפלט בשביל שיוצג:


אז בעצם כל מה שיוצג מתחת ל"Property" שנקרא "ProcessName" הוא Object, ובמקרה הזה, מדובר ב Process שהוא Chrome.


Property

ברגע שאני מבצע מיון של Process אני אקבל טבלה רגילה ובה שמות של עמודות, זאת אומרת שלכל אובייקט יש מאפיין, או בשפה פשוטה כל אובייקט נמצא תחת מאפיין מסויים, ואותו "מאפיין" מופיע בראש
הטבלה ונקרא "Propery"


כעקרון, על פי ההסבר של Jeffry Snover מה זה "Property"  הוא כזה:

לכל אובייקט יש מאפיינים, לדוגמא אם ניקח מכונית,
מה הם המאפיינים של המכונית הם:
• צבע אדום.
• גדולה.
• נוחה לנסיעה. 

אז במקום "מאפיינים" החליטו לקרוא לזה "Property"

עמודות (תכונות) בטבלה:


לצורך ההבנה – הכותרת של העמודה CPU נקראת Property, אם אתם שואלים את עצמכם מה עושים אם אתם רוצים לראות עמודות שונות, אז יש אפשרות כזאת, עליה נלמד בהמשך המדריך.


שיטות (Methods)

אני אשתמש בדוגמא של ה"מכונית" מהפסקה הקודמת להסבר יותר טוב אודות ה Methods:

אחרי שהבנו, מה הם המאפיינים של מכונית, עכשיו נבין מה אפשר לעשות עם מכונית?:
• אפשר לנסוע.
• לשים דברים בתא מטען.
• אפשר לעשות תאונות (לא מומלץ במיוחד).

הפעולה עצמה (לדוגמא נסיעה) נקראת Method




זאת אומרת שאם אני רוצה להפעיל Process מסויים, אני פשוט אריץ עליו Method, לדוגמא Start או Stop.
Method, הוא בעצם "מתג" שמאפשר לבצע פעולות לאובייקט מסוים, בשביל לראות אילו פעולות אפשר לבצע, נעביר את הפקודה דרך הצינור ל Get-member (באינטרנט הוא יופיע לכם הרבה בתור gm, כי זה ה-Alias "כינוי" של Get-Member) בדיוק לפי הפורמט שלמדנו אם אני רוצה לראות אילו פעולות אני יכול לבצע על
ה  Process של הדפדפן כרום, אני אריץ את הפקודה הבאה :

                         get-process chrome |get-member -membertype methods

אם אני מפרק את הפקודה ומתרגם אותה לעברית (התחלה מצד שמאל) אז זה יראה בערך ככה:

"שיטות" "סוג Member-" "תשיג לי את כל ה  Members" |  "כרום" "תשיג לי את ה Processes"

מה שיגרום לי להציג את כל ה -Methods (מתגים) שאני יכול להשתמש בהם לשימוש עם ה-Process של גוגל כרום, תשימו לב שיש "kill" שזה מן הסתם לסגור את התהליך של הדפדפן

PS C:\WINDOWS\system32>> Get-Process chrome | Get-Member -MemberType Methods


איך משתמשים ב-Method? שוב תשימו לב כמה הפקודה בנויה בצורה מאוד פשוטה, אחרי שהבנתי מה אני רוצה לעשות, והבנתי איזה Process אני רוצה לדוגמא לסגור, אני ארשום את הפקודה ואת השם של ה-Process ואהפוך אותם לאובייקט אחד על ידי הוספת סוגריים מעוגלים (כן זה משנה איזה סוגריים) בצורה כזאת: (Get-Process chrome)
ועכשיו אחרי שה-Power Shell הבין, שבעצם אני מתייחס לאובייקט כולו, אני יכול להתחיל לעשות עליו כל מיני מוניפולציות כמו לדוגמא Start או   Stop) Kill) בצורת הוספת "." על בסוף הסוגריים והסופת הפעולה שאני רוצה לעשות: PS C:\WINDOWS\system32>>(Get-Process chrome).Kill

(תזהרו לעשות את זה תוך כדי קריאת המאמר הזה מכיוון שהפקודה תסגור לכם את הדפדפן Chrome במידה ואתם משתמשים בו !)


Alias 

כן, ב Power Shell יש לנו Alias (כינוי) שבעצם אפשר להשתמש בו, לדוגמא אם אני רוצה לעשות העתקה של קובץ אז אני יכול להשתמש ב - "Cmdlet"   שהוא "Copy-Item" אבל אני יכול להשתמש גם ב"cp" (השתמשתם ב –Linux פעם? אז כן, זה אותו הדבר כמו שם) אם תרצו לראות את כל ה-Aliases תוכלו להריץ את הפקודה Get-Alias (לא משנה אם זה באותיות גדולות או קטנות) ותקבלו רשימה של כל ה Aliases שיש ב  Power shell בהתאם ל Module שמותקים אצלכם ב  Power Shell (מודולים זאת הפיסקה הבאה :) ).

אם אני רוצה לסנן ולראות את כל פקודות ה-Get, אני יכול להריץ *Get-alias g ואז אקבל את כל הפקודות שמתחילות באות G, שאילו בעצם כל פקודות ה Get שזה בעצם כל ה-CmdLets שיש.

אם אני רוצה לקבל קיצור של איזושהי פקודה אני יכול להריץ Get-Alias -definition Get-Process  ואז אקבל בדיוק את המידע שאני צריך, כמו כאן בדוגמא, רציתי לברר מה ה- Alias של get-process אז אני בעצם "שואל" את ה Power Shell והינה הפלט:

                                 PS C:\WINDOWS\system32> get-alias -definition Get-Process


בסופו של יום, הכל עניין של פשוט לדעת כיצד לחפש, בצורה הזאת תקבלו את כל הפקודות שאתם צריכים לצורך תחילת עבודה, אני מבטיח לכם שעם הזמן והתרגול, הדברים יתחילו להיות לכם הרבה יותר קלים.

Modules

מודלים הם בעצם "תוספים" שמאפשרים לכם לעבוד עם Power Shell בהתאם למה שאתם מעוניינים לעשות, כל Module מוסיף רשימה של פקודות ופונקציות כאלה ואחרות, לדוגמא בשביל לנהל את ה- Active Directory דרך Power Shell, נצטרך מודול שנקרא Active Directory Module שיהיה מותקן לכם כחלק מ RSAT או שכמובן יהיה מותקן על שרת ה DC עצמו בשביל לראות אילו מודלים מותקנים לנו ב Power Shell נריץ את הפקודה:
Get-Module –ListAvailable

תיקחו בחשבון שתקבלו רשימה מאוד ארוכה כמובן, מכיוון שישנם הרבה מודולים שמותקנים אצלכם.

לאחר שהרצתי את הפקודה על שרת ה DC שלי להלן הפלט:

                               PS C:\Windows\system32> Get-Module -List ActiveDirectory



כפי שניתן לראות, מודול ה Active Directory מותקן על שרת ה DC מה שיאפשר לי לנהל אותו משורת הפקודה.

שימו לב - גירסה יותר עדכנית, תביא איתה יותר פקודות

ב Power shell האחרון שהוא בגירסה 5.1 ישנו סט מאוד גדול של פקודות שנוסף מאז הגירסה הראשונה ולכן כדי לעדכן לגירסה האחרונה (בשביל לבדוק את הגירסה המותקנת אצלכם, הריצו את הפקודה: host
להלן הפלט :

כפי שניתן לראות בשורת ה Version גירסת ה Power shell שמותקנת לי במחשב (Windows 10 ver 1709) היא גירסה 5.1, (בהקשר לפקודה host, רוצים לדעת את שם המחשב שלכם? תנחשו מה תצטרכו להריץ? – כשמו כן הוא :hostname.)

בשביל לעדכן את גירסת ה Power Shell עשו חיפוש בגוגל של
 “Installing Windows PowerShell | Microsoft Docs”

"הצינור" – PipeLine

לא אני לא עושה שום פרסומת לתוכנית בערוץ 10, למי שיצא לעבוד עם Linux מכיר את ה "PipeLine" טוב מאוד, הסימון שלו הוא "|" והוא נמצא בדרך כלל מעל מקש ה-Enter אצלכם, אם תלחצו על Shift ועל המקש הזה תקבלו את ה"PipeLine", בגדול מה שזה מאפשר לעשות הוא לשרשר פקודות, זאת אומרת לקחת פלט של פקודה אחת ולהעביר אותו דרך צינור לפקודה אחרת.

 אם אני רוצה לדוגמא לראות אילו עמודות אני יכול לראות כשאני מריץ את Get-Process, אני "אשרשר" אותו דרך "צינור" לפקודת ה Get-Member  ואז אוכל לראות את כל הפעולות שאני יכול לעשות עם האובייקטים שיוצגו, כולל עמודות (Property) שאני יכול להציג, ו"Methods" וכמובן גם ה Aliases המתאימים.
הפקודה נראית כך Get-process |Get-member 

מאחר והפלט הוא מאוד ארוך, אציג כאן רק חלק

PS C:\WINDOWS\system32> Get-Process | Get-Member


משימה שניה: נסו לחשוב על פקודות שיכולות להציג לכם פלט עם הרבה מידע ורשימות כמו רשימת ה – Process ורשימת ה-Services והעבירו אותם דרך ה-Pipeline לפקודה Format-Table ונוסיף את הפרמטר "autosize-"
לדוגמא, פקודה להצגת עדכוני מערכת, אני ארצה להציג אותם בצורה של טבלה ובשביל לראות את הכל בצורה שמתאימה למסך שלי, אני גם ארצה שה-Power Shell יתאים את זה לתצוגה שלי.

בשביל להציג עדכוני מערכת נשתמש  ב-CmdLet שנקרא Get-Hotfix וכפי שנתנו דוגמא במשימה, נשתמש ב CmdLet שנקרא format-table ונגיד לו תתאים לבד את התצוגה בעזרת הפרמטר "autosize-"

מבנה הפקודה: Get-hotfix –computername localhost |format-table –autosize


(נסו להריץ את הפקודה בלי הפרמטר "-autosize" בשביל ללמוד על ההבדלים).

עד כאן להפעם...
אני מתכנן להוציא את החלק השני של המדריך בתווך השבוע - שבועיים הקרובים.

מקווה שבזמן הקרוב אצליח להוסיף הדרכה מצולמת ביוטיוב.

כמו תמיד, לכל שאלה ניתן להכנס לדף ה"מי אני?" בראש הדף, שם ניתן לראות את כתובת המייל שלי לשאלות.
אשמח אם תתנו Like בדף הפייסבוק שלנו :) - LeiderTech.

יום שלישי, 2 בינואר 2018

איך לכווץ קובץ אקסל עם הרבה מידע בעשרות אחוזים?


איך לכווץ קובץ אקסל עם הרבה מידע בעשרות אחוזים?



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

בבדיקה שאני בצעתי באופן אישי, לקחתי קובץ אקסל בעבודה בגודל של 15 מגה בייט (לכאורה לא גדול כל כך) והחלטתי לנסות לפתוח אותו על דיסק SSD (למי שלא ממש מבין בנושא, מדובר בדיסק מאוד מהיר, אשר ידוע גם בתור Solid State drive, או בצורה קצת יותר פשוטה, בערך "דיסק און קי" רק במימדים מאוד גדלוים) ועדיין לקח לי 3 דקות שלמות.

לאחר ביצוע השינוי ושמירת הקובץ בצורה אחרת (הצורה שלטובתה נכתב מדריך זה) הקובץ נפתח בתוך שניות וכווץ לגודל של 1.5 מגה בייט - כפי שניתן לראות במדריך המצולם שלי.

ממש במהלך כתיבת המדריך, קיבלתי בקשה מאחד העובדים, להקטין קובץ אקסל בגודל 70 מגה בייט, ולאחר ששמרתי אותו בצורה השונה, הוא התקווץ ל-30 מגה בייט.

תתארו לעצמכם לפתוח קובץ של 70 מגה בייט מתוך כונן ברשת כשמהירות העבודה הממוצעת בכל משרד קטן לדוגמא היא 100 מגה בייט (זאת אומרת שמהירות ההורדה והעלאה לרשת היא במהירות של 12 מגה בייט לכל היותר שזה לא ממש מהר בימים אלו), ולא כמו חברות וארגונים גדולים כששם החיבור הוא 1 גיגה בייט (1000 מגה בייט - מה שבפועל נותן מהירות הורדה והעלאה לשרת במהירות של 100 מגה בייט, שזה כבר שינוי משמעותי בעבודה, ומאוד מורגשת אני חייב לציין).

להלן דוגמא לקבצי אקסל גדולים - בגודל של 6,5,4 ואפילו מעל ל-10 מגה בייט.



קבצי אקסל גדולים - 4 מגה בייט ומעלה
פתיחת הקובץ לוקחת זמן יקר



אז למה בעצם לוקח למחשב כל כך הרבה זמן לפתוח את הקבצים האלה?
הינה הסבר קצר, קבצי אקסל ישנים היו נשמרים בפורמט של XLS שזה פורמט אקסל רגיל שאנחנו מכירים, בשנת 2007 מיקרוסופט הפכו את הפורמט הרגיל שלהם לקבצי XML והסיומת השתנתה ל XLSX מה שהפך את המשמעות ל" XLS שנשמר בשפת XML"

לידע כללי:
כעקרון שפת XML היא שפת תכנות שיחסית נוחה לתכנות מבחינת הקריאה, זאת אומרת היא מיועדת להקל על האדם בקריאת השפה והתכנות בה, מה שמסבך את העיניינם עבור המחשב מכיוון שהמחשב קורא את הכל בשפה הבינארית זאת אומרת בכל מיני צורות של 0 ו-1.

אז מה אתה מנסה להגיד? - איך אפשר לשפר את העבודה?
אילו היינו שומרים את הקובץ בשפה שבה המחשב מצליח לקרוא אותו בצורה הרבה יותר יעילה, הקבצים היו נפתחים ונשמרים הרבה יותר מהר - "פה קבור הכלב" ! וזה מה שאנחנו הולכים ללמוד לעשות, לשמור את הקבצים בצורה בינארית.

להלן דוגמא של קובץ בגודל של 70 מגה בייט שהתקווץ ל-30 מגה בייט.


קבצי אקסל ממש גדולים לאחר שינוי ושמירה בצורת Binary - הקובץ התקווץ בחצי


אז איך עושים את זה בעצם?
לצורך שמירת הקובץ בפורמט הרצוי, לאחר שסיימנו את העבודה בתוך האקסל, נלחץ על "קובץ" ולאחר מכן "שמור בשם" ולאחר מכן "עיון" באותו הרגע תופיע לנו אפשרות לשמור את הקובץ בסיומת הרצויה, הסיומת שאנחנו מחפשים
 היא סיומת בשם XLSB כפי שניתן לראות בדוגמא:



לאחר השינוי, הקובץ שלכם ישמר עם הסיומת XLSB ויכתב עלידו "Microsoft Excel Binary Worksheet"

כמובן שמהירות העבודה (פתיחה, שמירה וכד') על הקובץ ישתפרו לכם פלאים, מהבדיקה שלי, המהדורה הכי ישינה שיכולה לפתוח את הקבצים היא אופיס 2010 (לא היתה לי אפשרות לבדוק על 2007).

לכל שאלה או כל נושא אחר ניתן לפנות אלי במייל: levl@leidertech.co.il

להלן מדריך מצולם: