Option Explicit ב Windows Power Shell

30 בSeptember 2007

שאלו אותי, איך ניתן להגדיר ל PowerShell להתנהג ב Option Explicit, כמו ב vbScript. מי שלא מכיר, המשמעות היא שחובה להצהיר על משתנה לפני השימוש בו. כלומר, נמנע מצב שבו אתה משתמש במשתנה שלא הוגדר ומקבל תוצאות לא צפויות. כדי לכפות התנהגות זו ב powershell, יש לכתוב: set-psdebug -strict וכדי לכבות לכתוב set-psdebug -off כשמצב זה מופעל, ייזרק Exception על שימוש במשתנה שלא הוגדר ולא הושם לו ערך. בהצלחה.
אין תגובות

PowerShell Profiles

ב Windows Power Shell, ישנו מושג בשם Profile. הפרופיל, מחולק למספר רמות (החל מפרופיל פרטי וכלה בציבורי) ומכיל, למעשה, את ההתאמות האישיות שלך, את הוראות הקיסטום שלך ל Windows Power Shell. בפרופיל ניתן לשים קוד שייטען ביחד עם סביבת ה Windows Power Shell - החל משורת פעולות שבודקות את מצב המערכת, וכלה בלשים שם את הפונקציות שבהם אתה משתמש הרבה, שיהיו לך זמינות וייטענו מיד עם הפרופיל שלך. הפרופיל הוא למעשה, כמו כל הקבצים הנוגעים ל powershell, קובץ טקסט שנמצא בנתיב שמוגדר במשתנה profile. על-מנת לראות אם הוא קיים אצלך, ניתן להשתמש ב cmdlet ששמו test-path שבודק האם נתיב...
אין תגובות

איך להריץ קוד של Power Shell מתוך Class שיורש מ PSCmdlet?

23 בSeptember 2007

שאלה: בפוסט הקודם, הוסבר איך ניתן להריץ קוד Power Shell מתוך כל אפליקציית דוט.נט - האם באותה צורה מריצים מ Cmdlet שאני כותב שיורש מ PSCmdlet? תשובה:כן, זה יעבוד. אבל יש דרך קצרה יותר וחכמה יותר, שמתאפשרת ב classes שיורשים מ PSCmdlet (לא מ Cmdlet). בשביל הדוגמא הזאת, יצרתי PSSnapin, שכל מה שהוא עושה זה להריץ את הפקודה dir ולהדפיס את תוצאותיה, הנה הקוד:       במקום dir ניתן לכתוב כל פקודה שרוצים. על מנת שזה יעבוד, הוספתי בראש הקוד את ה usings הבאים:  מירקרתי (בעקמומיות אופיינית) את השורות שבאמת "חידשנו" פה - את System.Management.Automation אתם...
אין תגובות

ניהול שגיאות מ Windows Power Shell

22 בSeptember 2007

בעבר, כבר כתבתי על היתרונות והחסרונות ב scripting - היתרון, הוא כמובן ביצוע line by line כשאם יש בעייה באחת מהשורות, נזרקת איזושהי הודעת שגיאה, והשורה הבאה מתבצעת.אולם, הרבה פעמים נרצה לדעת האם ביצוע של שורה מסויימת עבד בהצלחה ואם לא - אזי למה?הסיבה העיקרית, היא כדי למנוע טעות שרשרת. טעות בשורה אחת, שמשפיעה על כל שאר הסקריפט. במקרה כזה, נרצה לדעת מה השגיאה, לנסות לטפל בה, או להחליט שאין לנו אפשרות לטפל בה, ולהודיע למשתמש על הפסקת ביצוע הסקריפט. אחד מהמשתנים הקבועים, שקיימים תמיד בסביבת ה Windows Power Shell הוא error$ - שלמעשה הוא collection שמכיל את פרטי כל...
תגובה אחת

Providers ב PowerShell

21 בSeptember 2007

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

גישה ליכולות ה Windows Power Shell מתוך אפליקציית .net

19 בSeptember 2007

בעבר, הזכרתי כבר שניתן להשתמש ב cmdlets, functions ו providers של Windows Power Shell מכל אפליקציית .net שרוצים.לצורך העניין, יצרתי פרוייקט Windows Application חדש ופשוט, ושמתי textbox אחד שבו תוכנת הפקודה ששמו cmdTextbox, כפתור שמבצע את הפעולה ו textbox שיציג את התוצאות בשם resultsTextbox. תחילה, צריך להוסיף reference ל System.Management.Automation - בד"כ הSDK מתקין את הDLL לכאן: C:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0 כדאי להוסיף using System.Management.Automation לראש הקוד, כמו גם ל System.Management.Automation.Runspaces. ול System.Collectiond.ObjectModel תחילה, בואו נכיר כמה מחלקות: System.Management.Automation.Runspace - מחלקה זאת, למעשה, מאפשרת לנו ליצור סביבת ריצה של Windows Power Shell מתוך האפליקציה הדוטץנטית שלנו, ולהשתמש בסביבה זאת להרצת...
אין תגובות

מחשוב לביש

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

[טיפ] קבלת משתני סביבה דרך Power Shell

18 בSeptember 2007

כדי לקבל משתני סביבה דרך Power Shell, יש לנו דרך ממש פשוטה:    במקום <<<VarName>>> מגיע שם המשתנה. למשל, הנה הדפסה של כמה ערכי משתנים: בסופו של דבר, ניתן להשתמש במשתני הסביבה הללו מכל מקום ב powershell, ובקלות. בהצלחה.
אין תגובות

הוספת רפרנס ל DLL דוט.נטי ל Windows Power Shell

16 בSeptember 2007

בעקבות אחד הפוסטים פה, נשאלתי איך ניתן להוסיף לסקריפטים ב power shell רפרנס לאיזשהו DLL דוט.נטי, בין אם של מיקרוסופט ובין אם לא.כמו הרבה דברים, גם הפיתרון של זה מצריך פשוט קצת שימוש ב .net ובפונקציונאליות שלו שמובנת ב Windows Power Shell. אני מניח שרוב המתכנתים פה שמעו על Reflection ועל הניימספייס System.Reflection - אז עכשיו, תוך שימוש פשוט בזה, ניתן להוסיף רפרנס. הסתכלו על הקוד הבא: ::LoadFile("C:\windows\system32\inetsrv\microsoft.web.administration.dll") באמצעות הקוד הזה טענתי את הDLL שמכיל את הפונקציונאליות של ניהול הIIS - באותה צורה ניתן לטעון כל DLL, בין שהוא טעון בGAC ובין שלא. לאחר מכן, ניתן להשתמש בDLL...
2 תגובות

רישום אוטומטי של snap in אחרי כל build מוצלח ב Visual Studio

במדריכים הקודמים שלי בנושא powershell, הטרחתי אתכם כל הזמן כשאתם בונים snapin ללכת ידנית, לעשות להם install util וכו'. רציתי להראות לכם סקריפט קצר ונוח שעושה עבורכם את זה אוטומטית. את הסקריפט אתם יכולים להוריד מפה. הסקריפט מקבל פרמטר אחד עם כתובת הDLL שאותו אתם רוצים לרשום. את הסקריפט אתם אפילו לא צריכים להריץ ידנית. ב Visual Studio יש אפשרות לקבוע פקודות שיורצו לאחר כל build - אז נלך, ונניח ששמנו את הסקריפט ב root של כונן C - נכתוב את הפקודה הבאה:  מעכשיו, אחרי כל build יורץ הסקריפט הזה על הDLL - שמה שהוא עושה זה...
אין תגובות