25/11/2018

מדריך ל PowerShell בעברית חלק 2 - מיונים, מודלים ו-Alias.


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

אל תמשיכו לקרוא את החלק הזה של המאמר כל עוד לא עברתם על החלק הראשון -
לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן

לפורום בנושא באתר devhub.co.il כאן


אז ללא יותר מדי חפירות, נתחיל.

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

ה - Power Shell – מצויין למיונים, אפשר לבצע סינון עד לרמת אובייקט, תתארו לעצמכם שבפקודה אחת אתם יכולים לשלוף Event מתוך רשימה של 200-לוגים וגם לקרוא את הכל באותו חלון של שורת הפקודה, ולכן אנחנו נלמד את האופרטורים (Operators) שהם לצורך סינון (Filter) ומיון, נעבור אל Pipeline מאפשר לנו לשרשר פקודות ממש כמו "פס יצור" שמריץ מוצרים וכל תחנה עושה בו שינוי כזה או אחר, וכמובן נלמד קצת על מודולים.


מיונים, מיונים, מיונים
1) Format-Table.

Format-table – היא, כשמה כן היא, פקודה שממיינת לכם את הפלט בצורת טבלה, אם אני מציג תוכן רב הייתי רוצה לראות אותו בצורה שאני אצליח לקרוא אותו, אז אני אצטרך להעביר את הפקודה דרך ה PipeLine (עליו נרחיב בפסקה יעודית לנושא בהמשך המאמר), לתוך format-table לדוגמא get-service |format-table ואם אני רוצה שהמערכת תתאים את התצוגה למסך שלי ותיתן לי לקרוא את הפלט בצורה נוחה יותר, אני יכול להוסיף בסוף את
הפרמטר “autosize-”

ללא פרמטר AutoSize:


עם פרמטר AutoSize:


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


2) Sort-Object.

Sort-object - מיון של אובייקטים לפי מצב או לפי עמודה (property) מסוים, לדוגמא, הריצו את הפקודה get-service, אתם תראו שתקבלו המון מידע, אבל מה קורה אם אני רוצה לראות את זה בצורה מסודרת, לפי מה פעיל ומה לא פעיל?





3) Group-Object

Group-object – ניתן לקבל פלט ולמיין את הפלט לפי קבוצה, לדוגמא נמיין את הסרוויסים שלנו לפי סטטוס בלבד: Get-Service|Group-Object -Property Status


4) Where-object.

Where-Object  - מדובר במסננת לכל היותר, בעזרת הפקודה הזאת אפשר לבצע סינון של Property שמתקבלים מתוך הפייפליין (אנחנו נלמד עליו בפיסקה הבאה).
Where-object הינה פקודת סינון תוצאות או תצוגה (תקראו לזה איך שנוח לכם, העיקר שתזכרו את זה), לצורך דוגמא נריץ את הפקודה get-hotfix (פקודה שמציגה לנו עדכוני מערכת, כרגע לא משנה הסדר שבו זה יוצג או האם זה רלוונטי או לא) כמובן שנקבל המון מידע:


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

נתחיל עם הדרך הפשוטה: *Get-hotfix |where-object hotfixid –like kb44

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


עוד דוגמא ל where-object:

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

ואני מעוניין לראות נגיד רק את הפרוססים של הכרום:
'*Get-process | where-object Processname –like '*chrome

                   • חשוב לזכור, את הסינון ניתן לעשות לפי כל עמודה שמופיעה, כמו כן, ישנן עמודות גם שלא מופיעות על מנת שנוכל לראות עד אפשרויות לסינון, נריץ את get-process דרך Get-member  ואז נוכל לראות לפי אילו עוד אפשרויות ניתן לבצע סינון, מאחר והרשימה היא מאוד ארוכה (ניתן לראות  Property וגם Methods שניתן להשתמש בהן) אני לא אצלם כאן את המסך, עדיף שתנסו לבד.

                    • עוד טריק שמראה עד כמה בנו את ה Power Shell בצורה חכמה, לאחר שהקלדתםWhere-object אם תתחילו ללחוץ על TAB תקבלו את אפשרויות שלפיהן אפשר יהיה לסנן – מאוד נוח כשלא בטוחים.לאחר שהרצנו את הפקודה, נקבל רשימה של כל הפרוססים שהם כרום:



ישנן כמה דרכים להשתמש בפקודה where-object, האחת היא הפשוטה (יותר ברורה לאדם) והשניה היא יותר מסובכת אבל כעקרון יותר "אפקטיבית" למחשב ומאפשר לשרשר פקודות בצורה יותר טובה, איתה גם ניתן לשרשר פקודות בצורה יותר יעילה:
{'*Get-process | where-object –filterscript {$_.processname –like '*chrome

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

{'*Get-process | where-object –filterscript {$PSitem.processname –like '*chrome

במקרה זה נקבל את אותה התגובה מהמחשב.

לידע כללי:
להמון פקודות ב – PowerShell יש אליאס (כינוי) שניתן לרשום בצורה שונה, בשביל שנוכל לראות את כל ה Alias שיש ל Power Shell להציע, נריץ את הפקודה get-alias, כמובן שנקבל פלט ענק ששם נוכל לראות את כל הרשימה, במקרה של where-object נקבל 2 קיצורים לפקודה, האחד where והשני "?" 
(בהמשך המאמר ישנו הסבר קצת יותר מפורט על Aliases)



זאת אומרת את הפקודה היותר פקודה של where-object אפשר יהיה לכתוב בצורה הזאת:
get-process |? Processname –like '*chrome*'

ונקבל את אותו הפלט:


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

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



"הצינור" – PipeLine

לא אני לא עושה שום פרסומת לתוכנית בערוץ 10, למי שיצא לעבוד עם Linux מכיר את ה" PipeLine" טוב מאוד, הסימון שלו הוא "|" והוא נמצא בדרך כלל מעל מקש ה  Enter אצלכם, אם תלחצו על Shift ועל המקש הזה תקבלו את ה"PipeLine", בגדול מה שזה מאפשר לעשות הוא לשרשר פקודות, זאת אומרת אם אני רוצה לדוגמא לראות אילו עמודות אני יכול לראות כשאני מריץ את get-process, אני "אעביר" אותו דרך "צינור" לפקודת ה get-member  ואז אוכל לראות את כל הפעולות שאני יכול לעשות עם האובייקטים שיוצגו, כולל עמודות (Property) שאני יכול להציג, ו"Methods" (נלמד עליהם בהמשך) וכמובן גם ה Aliases המתאימים.
 
הפקודה נראית כך
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



Alias 

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

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

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


במידה ואני רוצה לקבל Alias של פרמטר מסויים (נגיד ואני רוצה לדעת מה הקיצורים של כל הפרמטרים של הפקודה Get-process), אני אריץ את הפקודה הבאה:

(Get-Command Get-Process).Parameters.Values| Where-Object aliases |Select-Object name,aliases

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


Modules

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

בשביל לראות אילו מודלים מותקנים לנו ב Power Shell נריץ את הפקודה:

Get-Module –ListAvailable

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

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



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

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

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



ניתן לעדכן לגרסת ה- Power Shell מהאתר הרשמי של מיקרוסופט: PowerShell 5.1

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






עד כאן להפעם.

לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן
לפורום בנושא באתר devhub.co.il כאן

 לשאלות המייל שלי :
levl@leidertech.co.il






21/03/2018

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


חלק 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

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

 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" שזה מן הסתם לסגור את התהליך של הדפדפן

 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 והינה הפלט:

                                  get-alias -definition Get-Process


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

Modules

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

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

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

                                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 

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

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" בשביל ללמוד על ההבדלים).

עד כאן להפעם...









כמו תמיד לכל שאלה המייל שלי: levl@leidertech.co.il.

אשמח אם תתנו Like לדף הפייסבוק שלנו, חפשו בפייסבוק - LeiderTech.

לכלל הפוסטים והמדריכים בנושא ה PowerShell ניתן למצוא כאן

לפורום בנושא באתר devhub.co.il כאן

02/01/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

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