לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > מערכות הפעלה
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 12-07-2011, 20:25
צלמית המשתמש של קוביבי
  משתמש זכר קוביבי מנהל קוביבי אינו מחובר  
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
 
חבר מתאריך: 07.10.04
הודעות: 13,777
LinkedIn profile
Powershell - סקריפט בשבוע, השבוע ה-1

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

לפני 5 שנים (כמעט) כתבתי קדימון + הסבר כללי על כלי חדש מבית מיקרוסופט בשם Powershell, הוא היה יחסית צעיר בזמנו עם יכולות מעניינות ושימש (מבחינתי) בעיקר להתנסות וללימוד משהו חדש ומעניין
http://www.fresh.co.il/vBulletin/sh...ad.php?t=235955

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

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

אבל...
אני אתחיל עם זה מחר כשאגיע למחשב אינטרנט עם powershell כי אין טוב יותר מתמונות מסך כדי להבין טוב יותר.
אני ממליץ לקרוא את האשכול הקודם (גם אם הוא מעט מבולגן) כדי לקבל את התחושה של מה זה.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 13-07-2011, 10:31
צלמית המשתמש של קוביבי
  משתמש זכר קוביבי מנהל קוביבי אינו מחובר  
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
 
חבר מתאריך: 07.10.04
הודעות: 13,777
LinkedIn profile
קצת לפני שמתחילים – פונקציות ב Powershell.
בתגובה להודעה מספר 1 שנכתבה על ידי קוביבי שמתחילה ב "Powershell - סקריפט בשבוע, השבוע ה-1"

בפעם שעברה דיברנו על CMDLets, או, פקודות בסביבת Powershell, הפקודות אכן חזקות ומאפשרות חופש פעולה לא מבוטל, אבל – הפקודות כפי ששמתם לב מאוד ארוכות, ובגלל כל האפשרויות עלולות להימשך ל-3 שורות בשביל פקודה בודדת אחת, כדי לחסוך כתיבה, להקל על העבודה וכמובן – להגמיש את העבודה קיימת אפשרות לעבוד עם פונקציות.
בדומה לשפות תכנות רגילות – פונקציות הן קטעי קוד קצרים אשר מבצעים (בד"כ) פעולה או פעולות מאוד ספציפיות.
כל הפונקציות נמצאות בprovider משלהן בשם function (זוכרים Providers? ההודעה האחרונה באשכול הקודם)
אז, שנראה דוגמאות לפונקציות?
אצלי לדוגמה, אם ננסה לראות אילו פונקציות מוגדרות:

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

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


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

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

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

עוד רעיונות?

עריכה: כמעט שכחתי!
איך משנים את הפונקציה?
אני בד"כ כותב בnotepad (או כל כלי אחר לכתיבה), מעתיק ואז מדביק בחלון ה powershell את הפונקציה, לדוגמה - בצעו paste לקטע הקוד הבא:
קוד PHP:
 function prompt
{
    
Write-Host ("PS " + $(get-location) +">") -nonewline -foregroundcolor Magenta
    
return " "

_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 17-07-2011, 11:49
צלמית המשתמש של קוביבי
  משתמש זכר קוביבי מנהל קוביבי אינו מחובר  
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
 
חבר מתאריך: 07.10.04
הודעות: 13,777
LinkedIn profile
ושיעור אחרון לשבוע הזה - startup script
בתגובה להודעה מספר 1 שנכתבה על ידי קוביבי שמתחילה ב "Powershell - סקריפט בשבוע, השבוע ה-1"

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

בדיוק בשביל זה קיימת אפשרות ליצור פרופיל ב powershell, פרופיל לרוב הוא פר משתמש (קיימים עוד אפשרויות, אבל לא נדון בהם כאן)

איך זה עובד?
נפתח את ה powershell
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

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

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

נאפשר הרצת סקריפטים (למי שלא עשה את זה עד היום, דורש הרשאות אדמין או לפחות כתיבה ל registry של המכונה)
קוד PHP:
 Set-ExecutionPolicy Unrestricted 


ולבסוף - נעורוך את הקובץ עם הפקודה הבאה:
קוד PHP:
 Notepad $Profile 


נדביק קוד בסיסי, כדי שיהיו לנו פקודות משלנו להתחלה וזהו - אנחנו מוכנים לתזוזה!
קוד PHP:
 $MESSAGE "Welcome to Koby's style powershell, feel free to browse around!"
$BARHEIGHT 4
function prompt{
 
$g = $(Get-Location).ProviderPath
 
if ($g.Length -eq 0 ) { $g = $(Get-Location).Path }
 
$host.ui.RawUI.WindowTitle $g
 Write
-Host -nonewline -ForeGroundColor Red '>'
 
return " " 
}

function 
edit ($FILE
{
 
notepad $FILE
 
return " "
}

Clear-Host
$a
=(Get-Host).UI.rawui
$curpos
=$a.CursorPosition
$newpos
=$a.CursorPosition
(0..($a.windowsize.width 1)) | % {$newpos.x=$_$a.CursorPosition=$newposwrite-host "-"}
$newpos.y+=$BARHEIGHT
(0..($a.windowsize.width 1)) | % {$newpos.x=$_$a.CursorPosition=$newposwrite-host "-"}
$newpos.x=0
(0..$BARHEIGHT) | % {$newpos.y=$_$a.CursorPosition=$newposwrite-host "|"}
$newpos.x=$a.windowsize.width 1
(0..$BARHEIGHT) | % {$newpos.y=$_$a.CursorPosition=$newposwrite-host "|"}
$curpos.y+=$BARHEIGHT 1
$newpos
.x=($a.windowsize.width - ($MESSAGE).length)/2
$newpos
.y=($BARHEIGHT 1)/2
$a
.CursorPosition=$newposwrite-host $MESSAGE
$a
.CursorPosition=$curpos 


תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #12  
ישן 31-07-2011, 08:02
צלמית המשתמש של קוביבי
  משתמש זכר קוביבי מנהל קוביבי אינו מחובר  
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
 
חבר מתאריך: 07.10.04
הודעות: 13,777
LinkedIn profile
בתגובה להודעה מספר 11 שנכתבה על ידי פסטן שמתחילה ב "על פיית'ון..."

אתה מפספס את הרעיון של "כל דבר הוא אובייקט"
לא מדובר על תכנות מונחה עצמי כמו שאתה מקבל ב js, או אפילו בCPP
כל דבר הוא אובייקט:
קוד:
> dir Directory: C:\123 Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 7/31/2011 8:46 AM directory -a--- 7/31/2011 8:46 AM 3 file.txt > dir | gm TypeName: System.IO.DirectoryInfo Name MemberType Definition ---- ---------- ---------- Mode CodeProperty System.String Mode{get=Mode;} Create Method System.Void Create(System.Security.... ... TypeName: System.IO.FileInfo Name MemberType Definition ---- ---------- ---------- Mode CodeProperty System.String Mode{get=Mode;} AppendText Method System.IO.StreamWriter AppendText() ... > $(dir .\file.txt).LastAccessTime Sunday, July 31, 2011 8:46:33 AM


אתה יכול להרחיב את השפה ככה שתפנה באופן סטנדרטי שאתה רגיל אליו גם למקורות אחרים (משתני סביבה, פונקציות, קבצים, רג'יסטרי, תיבות דואר, אתרים בשרפוינט - כולם מקבלים אותה צורת טיפול)
קוד:
> cd hkcu: > dir Hive: HKEY_CURRENT_USER SKC VC Name Property --- -- ---- -------- 2 0 AppEvents {} 0 31 Console {ColorTable00, ColorTable01, ColorTab... 25 1 Control Panel {Opened} 0 2 Environment {TEMP, TMP} > cd env: > dir Name Value ---- ----- ALLUSERSPROFILE C:\Documents and Settings\All Users APPDATA C:\Documents and Settings\Koby\Application Data CLASSPATH .\ASEP\Monclass.zip;.\ASEP\3pclass.zip; CommonProgramFiles C:\Program Files\Common Files


ובונוס קטן - אתה יכול לפתוח session על כל תחנה שאתה רוצה, עם אילו credentials שאתה רוצה, בכול דומיין שתרצה, בלי לבצע rlogin.
ואלו רק חלק מהיכולות של PS.

רוצה לדבר על השוואות?
python היא שפה נפלאה, זה בלי ספק - יש לה כוח אדיר, אבל היא נוצרה בשביל משהו ספציפי(לפי מה שלימדו אותי - אשמח לשמוע אחרת, אני השתמשתי בה למנפולציות טקסט בלבד) ולא לניהול רשת מחשבים (או חלונות בכלל), היא עומדת בקנה אחד עם awk, js ועוד שפות סקריפט ייעודיות, את ה powershell תשווה ל cmd, bash, ksh, tcsh, כי זו המטרה שלהם.

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 31-07-2011, 12:57
צלמית המשתמש של פסטן
  פסטן פסטן אינו מחובר  
 
חבר מתאריך: 14.12.09
הודעות: 9,751
בתגובה להודעה מספר 12 שנכתבה על ידי קוביבי שמתחילה ב "אתה מפספס את הרעיון של "כל..."

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

אני אחזור על זה שוב: גם ב-JS כל דבר הוא אובייקט.
אפילו פונקציה היא אובייקט. לדוגמה, במקום לכתוב:
קוד:
function x(msg) { WScript.Echo(msg); } x("Hello, World!");

אפשר לכתוב:
קוד:
var y = function(msg) { WScript.Echo(msg); } y("Hello, World!");

אפשר אפילו ליצור אובייקט-פונקציה אנונימי ולקרוא לו במקום:
קוד:
(function(msg) { WScript.Echo(msg); })("Hello, World!");


זהו זה. זה לא אומר שזה כלי טוב או רע. זה אומר שההתלהבות של "ווואואווווווווואווווו כל דבר הוא אובייקט!!!!!!!!111111111111111111111111111111" מיותרת.


לגבי נקודות אחרות שהזכרת, שלא באמת קשורות לעניין, אתייחס בקצרה:
  • rlogin הוא כלי יוניקסי למיטב זכרוני. די ברור שלא צריך להשתמש בו בווינדוס. לא הבנתי למה אתה מתכוון.
  • ג'אווה לא נוצרה לכתיבת אפליקציות ווב. זה בכל זאת עובד לא רע.
    • Trac כתוב בפייתון.
    • Civ 4, BF2 ו-Eve Online מתבססות על פייתון.
    • בלנדר, PSP ו-GIMP משתמשות בפייתון כשפת סקריפט.
    • וכמובן - חצי מגוגל כתובה בפייתון...
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה(קרדיט למרשי)
אמר לה ינאי מלכא לדביתיה אל תתיראי מן הפרושין ולא ממי שאינן פרושין אלא מן הצבועין שדומין לפרושין שמעשיהן כמעשה זמרי ומבקשין שכר כפנחס

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 01-08-2011, 11:12
צלמית המשתמש של קוביבי
  משתמש זכר קוביבי מנהל קוביבי אינו מחובר  
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
 
חבר מתאריך: 07.10.04
הודעות: 13,777
LinkedIn profile
בתגובה להודעה מספר 13 שנכתבה על ידי פסטן שמתחילה ב "אני לא מפספס את הרעיון. אני..."

7 כפיות סוכר...

סבבה, אבל מה זה נותן לך? מה תוכל לעשות עם זה? אני לא רואה שום ייתרון בהגדרת פונקציות באופן שונה בJS (לא בסקריפטים יחסית קצרים שאני כותב)
קובץ כאובייקט - זה משמעותי (שינויי acl לדוגמה), מאפיייני מ"ה כאובייקט - זה משמעותי (קבלת רשימה של תהליכים/הפעלת פעולות עליהם), שירותים כאובייקט - זה משמעותי, למה?
כי אם נניח יש לך שירות שלא עולה עם 10 dependecies שלכול אחד מהם יש תלויות משלו, ואתה רוצה לדעת אם מחקו לך קובץ ספציפי של אחד השירותים האלו, אז במקום לעשות פקודה שמחזירה לך את התלויות, לולאה שעוברת על כל אחד מהם ובודק מה קובץ ההרצה שלו ואז עוד פקודה שבודקת אם הקובץ קיים, תעשה
if(service.dependecy[x].runfrom.exist) {write-host "service file exists"} {write-host "service file does not exist"}
בjs - אין לך את זה, ולא בפייטון, ולא בשום שפת סקריפט למעשה, לא שאני ראיתי.
אם זה לא מלהיב אותך - אז אני לא מבין מה זה עוד צריך לעשות (וזה כנראה עושה) כדי שמשהו יזוז שמה...

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #15  
ישן 01-08-2011, 16:59
צלמית המשתמש של פסטן
  פסטן פסטן אינו מחובר  
 
חבר מתאריך: 14.12.09
הודעות: 9,751
בתגובה להודעה מספר 14 שנכתבה על ידי קוביבי שמתחילה ב "7 כפיות סוכר... סבבה, אבל מה..."

אתה יכול לעשות עם זה מה שבא לך.

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

אתה לא מסוגל להבחין בין השפה, לספריה הסטנדרטית שלה. זה עצוב.
גם ב-C# "כל דבר הוא אובייקט" (חוץ מה-primitives). אבל גם שם אי-אפשר לעשות את זה.
למה? כי ה-BCL לא כולל מחלקות למה שאתה רוצה.
התחביר של C זה דבר אחד. הספריה הסטנדרטית של C זה דבר אחר.
התחביר של CPP זה דבר אחד. הספריה הסטנדרטית של CPP זה דבר אחר.
ב-JS כל דבר הוא אובייקט, אבל אין ספריה סטנדרטית כזאת. בווינדוס מה שיש לך זה WSH ו-WMI. באמת לכתוב סקריפט WMI לוקח יותר משורה, אבל האשמה היא לא בשפת JS, אלא בספריה ש-MS ייצרה לצורך גישה לשירותי מערכת ההפעלה. יכלו באותה מידה לכתוב ספריה בשם WMI-A (שזה WMI-Alternative), ששם יהיו מחלקות שיתנהגו כמו המחלקות של PS.
ואז זה היה מהיר יותר. ועובד גם על WIN98.

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

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

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 20:53

הדף נוצר ב 0.09 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר