07/04/2023

מתקין החבילות של מיקרוסופט - הכירו את ה WinGet - המדריך המקיף.


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


כאיש מחשוב שאוהב מאוד את שורת הפקודה, מיקרוסופט מאוד שימחה אותי עם כלי שנקרא WinGet, שמגיע מובנה בגירסאות האחרונות של ווינדוס 10 (21h2 ומעלה - אולי אני טועה, אני כבר שנה עם ווינדוס 11, אז אני לא בטוח באיזו גירסה זה מגיע מובנה), במהלך המדריך הזה, תלמדו כיצד להתקין את מתקין החבילות (שאגב נקרא WinGet) ונלמד כיצד לבצע איתו כל מיני פעולות כמו, התקנה שדרוגים והסרה בצורה שקטה, ניסיתי לבצע איתו אוטומיציה על ידי אינטגרציה בתוך סקריפטים של PowerShell אך זה לא ממש עבד, אם הצלחתם, תעדכנו אותי בתגובות, אשמח לשמוע כיצד ביצעתם את זה.

אז, נתחיל?

מה זה בעצם "מתקין חבילות" ולמה צריך את זה?

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

היום נתמקד במתקין החבילות שמיקרוסופט החליטו להטמיע במערכות ההפעלה שלהם לתחנות הקצה - Windows, ניתן לבצע המון פעולות עם WinGet אך אנו נתמקד בעיקריות:

לפני שתתקדמו ! שימו לב:
לפני שתמשיכו לקרוא, וודאו שאכן תוכלו להשתמש במדריך, פתחו את PowerShell והריצו את הפקודה WinGetבמידה וקיבלתם מידע אודות הפקודה, אז הכל תקין, אך במידה וקיבלתם הודעת שגיאה שאומרת שהמערכת לא מזהה את הפקודה winget, כנראה שאתם צריכים להתקין את Winget - ניתן לבצע התקנה מתוך חנות האפליקציות של מיקרוסופט, בצעו חיפוש של winget ובעצם יופיע כמה אפשרויות, אתם צריכים לבחור את האפשרות הזאת:




Search - נתחיל בדבר הכי טבעי, נצא מנקודת הנחה שאנחנו לא יודעים איזו תוכנה אנחנו מחפשים, ואנחנו מחפשים תוכנה חינמית לפריסת קבצי Zip - אז נריץ את הפקודה הכי טבעית - winget search zip (אני אוהב להשתמש ב Powershell אבל אתם יכולים להשתמש גם בשורת הפקודה הרגילה שהיא CMD, אגב אם עוד לא יצא לכם להשתמש ב PowerShell והייתם רוצים ללמוד על שורת הפקודה המדהימה הזאת, גם אם בחיים לא פתחתם אותו, בדיוק בשבילכם יש מדריך בין 10 חלקים למתחילים בדף ה"PowerShell" שנמצא כאן) והינה התוצאה של כלל התוכנות שיכולות לפתוח קיבוץ של זיפ:


ובעצם ניתן לראות את כלל התוכנות שנמצאו, חלקן מתוך חנות האפליקציות של מיקרוסופט MsStore וחלקן מתוך רשימה שמעדכנת הקהילה (לכן תקחו בחשבון שההתקנה היא בדרך כלל על אחריותכם, לדעתי האישית, אני לא חושב שמיקרוסופט תאפשר שיהיה קוד זדוני שיותקן דרך משהו שהיא מפרסמת), מה הבעיה ברשימה הזאת? זה שיש המון דברים ולך תדע עכשיו את מי כדי לנו להתקין, אבל נגיד שאנחנו מכירים את 7zip ואנחנו רוצים להתקין אותו, אז בעצם צריך לצמצם את הרשימה ולאפשר לנו ולבקש להציג לנו רק את 7zip, ובעצם נבצע את זה עם הפקודה הכי הגיונית שיש winget search 7zip ואז בעצם הרשימה תצטמצם:




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

Show - אז בשביל לקבל מידע אודות החבילה ולראות מאיפה בעצם היא הגיע למאגר התוכנות נריץ את הפקודה 
הבאה: winget show 7zip.7zip -למה דווקא בצורה הזאת? כי בדיוק בצורה הזאת היא כתובה בעמודה "Id" שזאת בעצם "תעודת זהות" של החבילה בשביל שהמערכת תדע להבדיל בינהן וגם אנחנו, אז בעצם לאחר שנריץ את הפקודה, נקבל מידע אודות החבילה הזאת:


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


Install - אז בעצם Install מאפשרת לבצע התקנה גם שקטה וגם "רגילה" (התקנה שקטה היא התקנה בלי חלונות קופצים ובלי אפשרות ללחוץ "הבא" או הסכמה או אי הסכמה להתקנה ובעצם הכל יותקן בצורה אוט'), בשביל לבצע התקנה בצורה הזאת נריץ את הפקודה winget install 7zip.7zip --silent ובעצם תוך שניות, הקובץ ירד למחשב שלנו, ולאחר מכן גם יותקן:

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

התקנה שקטה של ZOOM:

winget install -h --silent Zoom.Zoom

התקנה שקטה של אקרובט רידר:

winget install -h --id XPDP273C0XHQH2

התקנה שקטה של Advanced System Care (אני אוהב את התוכנה הזאת, היא מבצעת נקיון מעולה למחשב, מאחר ויש שם פרסומות, חלק מהאנטיוירוסים יכולים לחשוב שמדובר בווירוס, אך מנסיון רב שנים עם התוכנה הזאת, היא לא מכניסה וירוסים, וניתן להסיר אותה ללא בעיה בתום השימוש):

winget install IObit.AdvancedSystemCare

Upgrade - במידה ואני רוצה לבצע עדכון לתוכנה מסויימת ניתן לרשום את הפקודה : winget upgrade 7zip.7zip, במידה ואני לא יודע את מה אני צריך לעדכן ואני רוצה לבדוק אילו תוכנות במחשב צריך לעדכן,
ניתן לרושם את הפקודה : winget upgrade --all


ולאחר מכן הכל ברור - להלהן רשימה של כלל התכונות שצריך לעדכן במחשב, במידה ונרצה לעדכן תוכנה ספציפית במקרה הזה נרצה לעדכן את YandexDisk (תוכנת אחסון ענן חינמית של חברת Yandex הרוסית)
נרשום את הפקודה: winget upgrade Yandex.Disk:


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

Uninstall - במידה ונרצה להסיר איזו תוכנה - הפקודה גם כן מאוד ברורה winget uninstall 7zip.7zip גם כן, ההסרה מתבצעת על פי "תעודת הזהות" של התוכנה.

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

פלט ראשון - PowerShell:

(שימו לב בבקשה לשורה השניה מלמעלה שמוצגת בצורה ברורה "בדיקת תקינות המחשב").

להלן פלט מתוך CMD:


(את אותו הטקסט נוכל לראות בכתב מראה מאחר ו CMD לא יודע להציג עברית בצורה תקינה)

לכן גם במקרה הזה נעדיף להשתמש ב PowerShell.

Export - נגיד ואני רוצה לבצע יצוא לרשימה של האפליקציות המותקנות, זה כמעט אפשרי, למה כמעט? כי בצורה הזאת, ניתן ליצא רק אפליקציות שניתן להתקין עם Winget או מתוך חנות האפליקציות של מיקרוסופט, לדוגמא תוכנה בשם Camtasia אי אפשר להתקין עם WinGet, לכן היא אומנם תוצג ברשימה של האפליקציות המותקונת, אך היא לא תוצג כאשר נבצע את היצוא, לכן שימו לב, במידה ולא תמצאו אפליקציה כזאת או אחרת, זה בסדר, כנראה אין אפשרות להתקין אותה דרך מתקין החבילות של מיקרוסופט.
בשביל לבצע את היצוא אני אשתמש בפקודה: winget export -o c:\app.txt - בפקודה הזאת הקובץ שתיצרו,
יופיע בכונן :C, בשביל שהוא יופיע אצלכם על שולחן העבודה (או בעצם אצל כל מחשב) נשתמש בפקודה הבאה:
winget export -o %USERPROFILE%\Desktop\apps.txt (ניתן לעשות העתק הדבק לתוך ה PowerShell).

Import - במידה ותרצו לבצע יבוא במחשב אחר של אותן האפליקציות, שביצעתם יצוא עבורן (שוב, שימו לב, ניתן ליצא ולייבא רק אפליקציות שיש בחנות האפקליציות של מיקרוסופט או WinGet), בצורה הזאת בעצם ניתן לבצע התקנה אוט' לגמרי של האפליקציות מהפקודה הקודמת, ניתן פשוט להריץ את הפקודה על המחשב החדש והכל יותקן אוט', לצורך כך נרשום את הפקודה וניתן את הנתיב שבו נמצא הקובץ שנוצר לנו בעקבות התהליך הקודם:
winget import -i %USERPROFILE%\Desktop\apps.txt

מקווה שנהנתם, כמו תמיד - יותר מאוחר יתווסף סרטון יוטיוב.

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

03/07/2022

20 טיפים לשיפור הפרודוקטיביות לעובד בתחום המחשוב

 

:Credit for the picture


בתור אנשי מחשוב יש שתי דברים שתמיד חסרים לנו:
1) ידע - כי אי אפשר לדעת את הכל.
2) זמן - כי הוא מגביל אותנו במהלך היום, ואנחנו חייבים הפסקות כמו אוכל, שירותים, משפחה שינה וכד'.

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

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

2) השתמשו באוטומציה - אם אני "תופס" את עצמי עושה את אותו הדבר כמה וכמה פעמים, וזה מצריך ממני יותר משתיים שלושה קליקים בעכבר כל פעם, זה מתחיל להיות מעיק ואני מחפש דרך איך לגרום למחשב לעשות את העבודה בשבילי, אני מעדיף לכתוב סקריפט (PowerShell או BATCH) במשך שעתיים ואפילו שלוש פעם אחת, מאשר להמשיך לעשות את אותה הפעולה כמו תוכי ולקבל עצבים, פשוט כי אחרי זה, את אותה הפעולה אני אעשה 2 דקות במקום 20 דקות, במקרה אחר הסקריפט יכול לחסוך לי 40 דקות עבודה, לדוגמא, אם אתם צריכים לדעת מידע על מחשב מסויים, מה אתם עושים בדרך כלל? בטח משתמשים בתוכנה או בכלי מובנה של מערכת ההפעלה, למה לא לבנות לעצמכם כלי כזה? גם תשפרו את הידע שלכם בכתיבת סקריפטים וגם תתאימו לעצמכם את המידע שאתם רוצים לראות ותחסכו זמן על חיפוש מידע בתוך הכלים של מערכת ההפעלה.

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

4) תלמדו קיצורי מקשים וקיצורים של מערכת ההפעלה - למה באמצע משהו שאתם עושים צריך להפסיק את הכל, להוריד את היד מהמקלדת ולהתחיל לחפש כיצד להגיע למקום מסויים במערכת ההפעלה?! יש לכם משהו שאתם נוהגים לפתוח הרבה? לא יותר קל לזכור מה הקיצור של אותו המקום?
לדוגמא, איך מגיעים ל"מדפסות" בווינדוס?
בעזרת ctrl+r נפתח חלון RUN ובפנים נכתוב  "control printers" ונלחץ אנטר - תחשבו כמה זמן לקח לעשות את זה מהמקלדת מאשר להגיע לשם דרך תפריט ה"התחל".

5) השתמשו במנהל "Clip Board" (זה המקום ששומר את כל ה"העתק הדבק" שאתם עושים) - נגיד ועשיתם "העתק הדבק", איך אפשר לראות את ההיסטוריה של כל ה"העתק הדבק" שעשיתם היום? אז יש כמה דרכים, הפחות טובה, להשתמש בכלי המובנה של וינדוס 10 בעזרת winkey+v (מקש עם הציור של מיקרוסופט על המקלדת נקרא WinKey) והאמת שהוא מאוד מעפן ומאוד מוגבל וגם לרוב לא עובד כמו שצריך, לכן אני ממליץ על תוכנה חינמית ומדהימה שנקראת Ditto שאני משתמש בה כבר שנים, ניתן להוריד אותה מכאן - לינק

תצלום מסך מתוך התוכנה Ditto.

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

7) וואטסאפ, טלגרם וכד' - שימו את הטלפון בתיק, בצד, במטען, חברו (במידת האפשר !) את האפליקציות למחשב, הפסיקו להרים את הידיים מהמקלדת, עדיף שתעשו alt+tab מאשר לעזוב את הכל ולהתחיל להגיב למישהו בקשר לשאלה כלשהי, אפשר להקליד את אותו הדבר מהמחשב - יחסוך זמן ולא יפריע לריכוז.

8) השתמשו באחסון ענן משלכם - יש מצבים שבהם הרבה יותר קל להוריד תוכנה\קובץ ולשים אותה על הענן שלכם (מגה, One Drive, Google drive וכד') ולשמור קישורים אליהם מאשר להוריד דברים מאתרים אחרים שמקשים על ההורדה - לינקים ישירים ניתן להכניס גם בתוך סקריפטים - זכרו תמיד כדי להיות תלוי רק בעצמכם !.

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


ככה נראה שולחן העבדוה שלי


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

11) קובץ "ספר טלפונים" - אל תסמכו על מקום העבודה\מזכירה או מי שזה לא יהיה על כך שתמיד יהיה למישהו את ספר הטלפונים של ספק השירות, חברה שאתם צריכים את הטלפון שלה, אתרים של ספקים לבדיקות אחריות וכד', רשמו הכל אצלכם, צרו קובץ וורד\טקסט\אקסל וכד' - העיקר לא להיות תלוי בגוגל\חבר\קולגה - תמיד דאגו שהכל יהיה זמין לכם כאן ועכשיו.

12) התקינו כמה דפדפנים - אנחנו אנשי מחשוב, אינטרנט אקספלורר כבר לא קיים בווינדוס 11 זאת אומרת שהוא לא יהיה קיים בעתיד, התקנינו לפחות עוד שלושה דפדפים חוץ מהמובנה שיש במערכת ההפעלה (באופן אישי, אני מתקין תמיד כרום, מוזילה ו Brave) על מנת שתמיד תוכלו לבדוק אתר\תוכנה וכד' על כמה וכמה דפדנים.

13) וירטואליזציה - יש המון כלים שמאפשרים לבצע וירטואליזציה היום, המובנה של וינדוס Hyper-V, וכמובן יש את החברים הישנים והטובים, VBox ו VmWare, השתמשו בהם, אל תתקינו מכונה והסירו דקה אחרי זה, תמיד השאירו לכם פתח לאופציה להפעיל תוכנה ולבדוק איך היא מתנהגת - תזכרו, להפעיל מכונה קיימת הרבה יותר מהיר מאשר להתחיל להתקין אחת חדשה.

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

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

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

שימו לב מאיזה תאריך המייל שצירפתי פה.


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

18) השתמשו נכון בשורת המשימות של ווינדוס - שורת המשימות במערכת ההפעלה היא דבר מאוד חשוב, מעבר לעובדה שניתן לראות שם את כלל החלונות שאנחנו פותחים, ניתן "לקבוע" קבצים שאתם פותחים הרבה, ממליץ מאוד "להרים" את שורת המשימות על מנת שתוכלו "לדחוף" שם כמה שיותר פריטים שאותם אתם צריכים ליום יום.


שורת המשימות שלי

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

20) החליפו את החיפוש של מערכת ההפעלה ! : במידה ואתם לא משתמשים באאוטלוק, אתם יכולים בכיף לבטל את החיפוש של מיקרוסופט במערכת ההפעלה ולהתקין את Everything מכאן : לינק - מנוע החיפוש הזה בתוך שניות יאפשר לכם לבצע חיפוש של כל מה שזז אצלכם במחשב ! כמובן יחסוך לכם המון זמן !, במידה ואתם כן משתמשים באאוטלוק, תנו למערכת ההפעלה שלכם לבצע חיפוש בכל המחשב - כן יש כאלו שלא יסכימו וזה עלול להאט מאט את המחשב יחד עם זאת יחסוך לכם המון זמן בחלפש קבצי מערכת לדוגמא קובץ hosts (כמה ממכם באמת זוכרים איפה הוא יושב?).





אם יש לכם עוד טיפים, ניתן לשלוח לי למייל levl@leidertech.co.il ואני כמובן אצרף כאן עם קרדיט.


 

27/11/2021

חלק 10 - הרצת פקודות על מחשבים מרוחקים בעזרת (Invoke-Command) - Implicit Remoting



חלק 10 - עבודה על מחשבים מרוחקים עם בעזרת הפקודה Invoke-command

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

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

ברגע שמפעילים את ה Remoting מאחורי הקלעים קוראים הדברים הבאים:
  1. הסרוויס - WinRm מתחיל לפעול, ונהיה על מצב אוט'
  2. חומת האש של ווינדוס (אם יש לכם חומת אש חיצונית, תצטרכו לעשות את זה ידנית) תיצור חוק (Rгle) רגיל ל WsMan (מוזמנים לחפש ברשת מה זה) - ההתחברות עם PowerShell לא עובדת בערוץ מאובטח בין תחנה לשרת או בין שרת לתחנה, אז תקחו את זה בחשבון.

קצת חפירה לפני שממשיכים :) - לא מאמין שהגעתי לחלק 10 !

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

העבודה שלי על הבלוג ועם המדריכים של ה PowerShell ממש "תיכנתה" את המוח שלי בצורה חדשה לגמרי, לזכור דברים ללמוד דברים, וזה תענוג, והכל בגלל התמיכה שלכם בבלוג שלי, אני רואה יותר ויותר אנשים קוראים, מגיבים, מעודדים לכתוב עוד ועוד וזה תענוג אחד גדול !

רציתי להגיד לכם תודה רבה על הפידבקים שלכם, לא מאמין שהגעתי לחלק 10 ! מדריך שלם מ-10 חלקים !! זה אדיר ! אני מקבל הרבה מאוד פידבקים במייל שלי (אם שכחתם לרגע levl@leidertech.co.il) ותודה רבה לכם על זה ! אתם שואלים שאלות, אתם עוזרים לי גם להבין דברים ! המון תודה רבה קוראים יקרים !

"אחרי שצחקנו, נעבור לחלק האומנותי" (מתוך "גבעת חלפון אינה עונה"..)

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

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

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

¿*בשביל שתוכלו לגשת למחשב מרחוק, צריך להפעיל עליו את הפקודה enable-psremoting *¿

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

Invoke-Command - בתרגום לעברית : "הפעל-פקודה" -
כמו שאנחנו מכירים ב PowerShell כל הפקודות בנויות בצורה של "מה שאתה רוצה, זה מה שאתה מקליד" אז מה שאנחנו רוצים זה להפעיל פקודה מרוחקת על מחשב, ואז לקבל את הפלט שלה (מעצבן כמה שזה פשוט נכון?) 

מבנה הפקודה עם תרגום לעברית :{הפקודה\הסקריפט שלך פה} Invoke-Command -computername -scriptblock 
הפעל-פקודה -שם מחשב -מקטע_סקריפט {הפקודה\הסקריפט שלך פה}

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

נריץ פקודה מרוחקת על מחשב בשם client1 בשביל לקבל מידע אודות ה IP שלו:

Invoke-command -computername client1 -scriptblock {ipconfig}

הפלט שנקבל:


אני אריץ את אותה הפקודה על השרת עצמו ואז תראוה שאני מקבל כתובת שונה לחלוטין:

(תשימו לב להבדל.. החלק הראשון מראה כתובת 10.0.0.11 החלק השני, מראה כתובת 10.0.0.1)



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

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

נבצע את זה בעזרת הפקודה Get-Command (כמו שלמדנו בחלקים הראשונים של המדריך), רק שאנחנו נריץ אותה על השרת מהתחנה שלנו, ונבקש להציג לי מידע שיסביר לי איזו פקודה אני צריך בשיל להציג מידע, מה שנקרא "Get":

Invoke-Command -computername cat1 -scriptblock {get-command -noun *user* -verb get}

אני אתרגם רק את החלק של קטע הסקריפט (ScriptBlock) - :
noun - שם עצם
verb - פעול

זאת אומרת, אנחנו מבקשים מ PowerShell שיציג לנו פקודה שהשם עצם שלה הוא "משתמשים" והפועל זה "קבל"\"לקבל" וכד', זאת אומרת אם אני מחבר זה יוצא בערך ככה : הצג-פקודה -שם עצם "משתמשים" -הפועל "הצג".
או בקצרה "הצג לי פקודה שהשם עצם שלה זה "משתמשים" והפעולה שאני רוצה לבצע עליה זה "הצג".

וזאת בדיוק התוצאה שנקבל מהתחנה שלנו:


לאחר שקיבלנו את המידע שאנחנו צריכים, בשביל שנראה שאני על תחנה ולא על שרת, אני אריץ את הפקודה הרלוונטית שהיא Get-Aduser ונראה שבגלל שעל התחנה שלנו אין מודול של ActiveDirectory אנחנו לא נקבל את המידע הרלוונטי וכל המסך שלנו ישפך ב"דם" (מושג PowerShell בגלל שהשגיאות בצבע אדום):



כפי שניתן לראות, המחשב שלנו לא ממש מבין מה אנחנו רוצים ממנו, והציג לנו מלא "דם", אך אם נריץ את הפקודה על המחשב המרוחק, שהוא בעצם ה Acitve Directory  שלנו נוכל לקבל פלט נורמאלי



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

נתחיל בלבדוק אילו משתמשים יש לנו על השרת ב OU שנקרא USERS בכלל:

Invoke-Command -computername cat1 -scriptblock {get-aduser -filter * -searchbase "ou=users, ou=lions,dc=linos,dc=local}|select name

הסיבה שרציתי קודם כל לבצע את הפקודה הנ"ל היא בשביל שתעלה לכם השאלה הבאה:

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


כפי שניתן לראות, יש בשרת שלושה משתמשים, עכשיו נוסיף עוד משתמש אחד:



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

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

קודם נבדוק מה ה Scope שלנו:
invoke-command -computername cat1 -scriptblock {
Get-DhcpServerv4Scope |select -ExpandProperty scopeid |select -ExpandProperty IPAddressToString
}



במקרה שלי ה Scope הוא 10.0.0.0

לאחר מכן, נבקש מהשרת שיתן לנו 20 כתובות IP פנויות
invoke-command -computername cat1 -scriptblock {Get-DhcpServerv4FreeIPAddress -ScopeId $scope -NumAddress 20}



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

ניתן לרשום את הכל בתוך סקריפט אחד בצורה הבאה:
invoke-command -computername cat1 -scriptblock {

$scope = Get-DhcpServerv4Scope |select -ExpandProperty scopeid |select -ExpandProperty IPAddressToString

Get-DhcpServerv4FreeIPAddress -ScopeId $scope[0] -NumAddress 20

}





עד כאן להפעם, כמו תמיד תודה רבה שקראתם.

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

כמו תמיד, סרטון מצולם:

14/11/2021

פתרון לתקלה בפתיחת קבצי Power Point, Excel, Word מתקבלת השגיאה Access denied, Contact your administrator

 


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

בתור איש מחשוב, במידה ואתם ממלאים תפקיד של ראש צוות, מנכ"ל או מי שלא תהיה ואתה אחראי על אנשי צוות בתחום שלנו, חובה חובה חובה, לשתף ידע בין אנשים, אתם תתפלאו כמה זמן זה יחסוך לכם, כפי שרשמת לפני כן, אני נוהג לשלוח מייל עם תבנית מסויימת כמו לדוגמא "פתרון לתקלה: כשאתם מנסים לפתוח קובץ מתקבלת ההודעה Access denied, Contact your administrator", ככה שכשאנשי הצוות רוצים למצוא את הפתרון שהם צריכים, לא מסתבכים בחיפוש במייל ומבצעים חיפוש, גם אם מדובר בעובד הכי מבולגן בעולם.

¿?זכרו - בתפקיד שלנו, מילת המפתח היא פרודוקטיביות¿?

ראשית חשוב לי להגיד, התקלה יכולה לקרוא גם בסביבת Domain וגם בסביבת WorkGroup, כאשר אחד המשתמשים שלכם מנסה לפתוח קובץ מתוך כונ רשת בשרתי הקבצים או NAS (דיסק רשת).

תסריט אתם מנסים לפתוח קובץ Power Point:
אתם לוחצים "דאבל קליק" על קובץ ומתקבלת ההודעה  "Access denied, Contact your administrator"

לאחר מכן אתם מנסים לפתוח קובץ Word
ומתקבלת ההודעה:"Word could not create the work file. Check the temp"



קבצי אקסל עלולים לקבל את אותה השגיאה, ההרשאות תקינות לחלוטין.

"אחרי שצחקנו, נעבור לחלק האומנותי" (גבעת חלפון אינה עונה)

להלן פתרון לתקלה:

יש למחוק את הערכים האלה:

 יש למחוק את הערכים האלה:

[Word Preview]

HKEY_CLASSES_ROOT\CLSID\{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE}


[PowerPoint Preview]

HKEY_CLASSES_ROOT\CLSID\{65235197-874B-4A07-BDC5-E65EA825B718}


[Excel Preview]

HKEY_CLASSES_ROOT\CLSID\{00020827-0000-0000-C000-000000000046}


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