26-07-2011, 07:59
|
|
מנהל פורום מערכות הפעלה - הרובע המייקרוסופטי.
|
|
חבר מתאריך: 07.10.04
הודעות: 13,777
|
|
PowerShell, סקריפט בשבוע - השבוע ה-2 (וה-3?)
היי,
שבוע קשה עבר עליי, לכן הייתה הפסקה ארוכה – אבל אין מה לדאוג – חוזרים לעבודה על Powershell
אחת מהפעולות שאני עושה הכי הרבה היא תרגום שם מחשב לכתובת ip ולהיפך, אז לאלו מאיתנו שנמאס להם מ ping, nslookup ו ping -a - הנה איך עושים את זה ב PS-Style:
קוד PHP:
Function Host2IP([string]$Hostname=$(throw """Hostname"" is Required"))
{
$IpAddresses = [System.Net.Dns]::GetHostAddresses($Hostname)
ForEach ($CurIp in $IpAddresses) {
Write-Output $CurIp.IPAddressToString
}
}
Function IP2Host([string]$Ip=$(throw "Ip Address is Required"))
{
$Hostnames = [System.Net.Dns]::GetHostByAddress($Ip)
ForEach ($CurHost in $Hostnames) {
Write-Output $CurHost.HostName
}
}
זה העתק מ profile.ps1 שלי, קצת הסברים על מה שכתוב כאן:
קוד PHP:
Function Host2IP([string]$Hostname=$(throw """Hostname"" is Required"))
זוהי ההגדרה של הפונקציה בשם Host2IP, הפונקציה מקבלת משתנה בשם Hostname, במידה והיא לא מקבלת את המשתנה – הודעת שגיאה נזרקת למשתמש, המשתנה הוא מטיפוס string.
קוד PHP:
$IpAddresses = [System.Net.Dns]::GetHostAddresses($Hostname)
אחרי זה – אנו מגדירים משתנה זמני בשם $ipAddresses, משתנים בPS תמיד מתחילים בתו $, המשתנה מקבל את תוצאת הפקודה GetHostAddresses שנמצא תחת האובייקט [System.Net.Dns]:: (PS עובד עם .net, זוכרים?), התשובה של פקודה – מערך של אובייקטים מסוג System.Net.IPAddress אשר כל אחד מהם הוא כתובת הIP המתאימה ל hostname שקיבלנו לפונקציה.
קוד PHP:
ForEach ($CurIp in $IpAddresses) {
למי מאיתנו שיצר סקריפטים ב vbs, הפקודה הזו נראית מוכרת – כאן אנו יוצרים משתנה זמני נוסף, $CurIp, ובאמצעותו עוברים בלולאה על כל מערך האובייקטים שקיבלנו בפקודה הקודמת, כל זה כדי:
קוד PHP:
Write-Output $CurIp.IPAddressToString
להדפיס למסך (או לכול אמצעי פלט אחר בו אנו משתמשים) את כתובת הIP בצורה של מחרוזת.
איך זה נראה:
דוגמאות להרצה בלי פרמטר, עם מחשב לא קיים, עם כתובת IP אחת מוגדרת, 2, רשימה של 5 מחשבים ורשימה שניתנת בקובץ טקסט.
כמובן שכול מה שנאמר למעלה תואם גם ל IP2Host אשר הובא לעיל.
דברים שאפשר להוסיף (העשרה למעוניינים)
בדיקה ב IP2Host שאכן אנו מקבלים כתובת IP ולא סתם מחרוזת ולהיפך (בדיקה שאנו לא מקבלים IP אל Host2IP)
ביצוע ping אל השרת אחרי החזרת הנתון המבוקש שלו ונתינת תגובה אם הוא זמין או לא
_____________________________________
|