الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ماهو جديد نسخة PowerShelll3

بدأه walid2mi في 7 سبتمبر 2012 · 7 رد · 1,425 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

فى هذا الموضوع الموجز سأحاول أن أقدم بعضا من جديد هذه اللغة لأن نسختها الثالثة تحوي عشرات الإضافات ولن أتمكن أن أسردها كلها..سأقتصر فى هذه السلسلة على موضوع تسهيل الكتابة فى لغة بورشال 3 للمستخدمين ...فلنبدأ على بركة الله:

*) foreach-object & where-object :

فى النسخة السابقة كنا نستعمل هذين الأمرين هكذا:

 gsv | where { $_.canstop }

أما الٱن فلنا طريقتين جديدتين لكتابة نفس الكود، الأولى هي إستعمال متغير أوتوماتيكى جديد عوضا عن $_ حتى يتمكن المبتدئ من فهم الكود أما الطريقة الثانية فتمكننا من الإستغناء عن هذا المتغير:

1
gsv | where { $psitem.canstop }
2
gsv | where canstop

مع الملاحظة أن الأمر foreach-object له نفس الميزات الجديدة ل Where-Object

*) إستعمال الوظائف Method مباشرة عبر ال Pipe

فى النسخة السابقة إذا أردنا إستعمال وظيفة معينة يجب أن نلحقها بالكائن Object نفسه :

gps *t* | sort Ws -Descending | % { $_.kill()  }

أما الٱن فيمكن فصل الوظيفة عن كائنها

gps *t* | sort Ws -Descending | kill

*) ال loop الخفية

فى النسخة السابقة إذا أردنا أن نستخرج من المصفوفات

بعضا من خصائصهاproperties وإستعمالها كسلاسل حرفية كان لا بد من إستعمال إما الأمر

select-object مع خاصية ExpandProperty أو القيام ب loop

1
ls | Select-Object -ExpandProperty fullname
2
ls | ForEach-Object { $_.fullname

}

أما الٱن فلا نحتاج لهذه المراحل فيكفى أن نلحق الخاصية properties بالكائن Object حتى تنشئ أوتوماتيكيا loop خفية implicit

(ls).fullname

*) المتغير PSDefaultParameterValues

هذا المتغير خاص حيث سيمكننا من ربح الوقت و إنجاز مهامنا بسرعة فهو سيمكننا من التحكم فى خصائص الأوامر كما نشاء ولنضرب على ذلك مثالا على تتضح الصورة..لو كان أمر دائما ما نستعمله مع خصائص معينة مثلا:

 Get-ChildItem -File -Filter *.exe -Path c:\

يمكننا الٱن أن نملأ متغيرنا بالخصائص المحددة ونستعمل بالتالى أمرنا بكل سهولة

$PSDefaultParameterValues = @{
  "get-chilitem:file"="$true";
  "get-chilitem:filter"="*.exe"
  "get-chilitem:path"="c:\"
}

get-childitem

*) إضافة بعض الخصائص للأمر ls / get-childitem

منها خاصية البحث على المجلدات فقط أو الملفات فقط أو خاصية البحث عن ملفات النظام فقط أو المخفية...الخ

*) إضافة الخاصية in و notin للبحث داخل المصفوفات:

"a" -in "a","b","c"

"a" -notin "a","b","c"

*) إمكانية تقطيع الأكواد الطويلة لأجزاء:

فى النسخة السابقة كنا إذا أردنا تقطيع الكود لأجزاء لا بد من إستعمال رمز خاص "`" بذلك ولم يكن بإمكاننا إلا تقطيع أجزاء مسموح بها:

l

s`
c:\

أما الٱن فبإمكاننا فعل ذلك دون إضافة أي شيء للكود أو أن نخشي من عدم إشتغال الكود على الوجه الأمثل:

(gps).
fullname 
-match 'n'

*) إضافة مختصرات جديدة لأقسام .NET ك [ordered] و [pscustomobject]

فى النسخة السابقة كنا إذا أردنا أن ننشأ كائنا خاصا نقوم بالتالى:

new-object psobject -property @{a=1}

أما الٱن فبإمكاننا الإختصار من خلال كتابة نفس الكود بهذا الشكل

[pscustomobject]@{a=1}

*) تسهيل إستعمال الريجسترى registry :

الٱن أصبح الإبحار فى الريجسترى أكثر متعة من قبل فقد أصبحنا وكأننا نبحر فى ال filesytem تماما وذلك بعد التحويرات التى قام بها فريق بورشال على هذا ال provider

هذا الجزء الأول إنتهى وإن شاء الله ننتقل للجزء الثانى عما قريب...مع الملاحظة أنى لم أذكر كل التحديثات حول 'التسهيلات الجديدة فى الكتابة' وإنما إقتصرت على بعض منها

1
#2

السلام عليكم

فى هذا الجزء الثانى سنتطرق لموضوع "التحقق من صحة البيانات" validation فى المتغيرات و كذلك سنمر عبر تحويرات جديدة للوظائف المتقدمةadvaned function وبعض الإضافات الأخرى

*) تحويرات جديدة للوظائف المتقدمة:

فى النسخة السابقة كنا نستعمل خصائص الوظائف المتقدمة بهذا الشكل:

function get-arabteam {
  param(
    [parameter(mandatory=$true,valuefrompipeline=$true)]
    [string]$choice,
  )
  process {
     $choice.fullname
  }
}

أما الٱن فقد سهل فريق بوشال إستعمال هذه الخصائص لتصبح كالتالي:

function get-arabteam {
  param(
    [parameter(mandatory,valuefrompipeline)]
    [string]$choice,
  )
  process {
     $choice.fullname
  }
}

*) التحقق من صحة البيانات فى المتغيرات:

فى النسخة السابقة إذا أردنا أن نتحقق من صحة المتغيرات نكتب كود إضافى فمثلا إذا أردنا أن نتحقق من أن المتغير يكون بين 1 و 452 فكنا ربما نقوم بكود مثل هذا:

i

f ($range -ge 1 -and $range -le 452) {$range} else{throw out range}

أما الٱن فبإمكاننا إستعمال كل خصائص الوظائف المتقدمة فيصبح الكود فى الأعلى بهذا الشكل:

[validaterange(1,452)]$range

*) متغير psise

هذا المتغير هو كائن خاص بالبيئة الخاصة لبورشال الرسومية وقد ألحقت به عدة إضافات ستمكننا من التحكم برمجيا فى بيئتنا من خلال مثلا تغيير ألوان الواجهة أو تغيير حجم الخط ...الخ

*) إضافة خاصية ل passthru للأمر out-gridview

out-gridview هو أمر يمكننا من إستخراج البيانات فى واجهة رسومية ويمكن من خلالها فلترة بياناتنا مع إضافة هذه الخاصية passthru بإمكاننا أن نمرر عبر البايب بياناتنا المفلترة حتى نستعملها مع أوامر أخرى...مثال:

et-user | out-gridview -passthru | set-user -enabeaccount

الجزء الثانى إنتهى بحمد الله وإن شاء الله مع الجزء الثالث الذى سيكون أكثر تشويقا :)

تم تعديل هذه المشاركة بواسطة walid2mi في 8 سبتمبر 2012 في 15:57

1
#3

السلام عليكم

فى هذا الجزء الثالث سنتطرق لجديد البحث و الإكتشاف فى بورشال3 أي كيف نبحث عن أمر معين وكيف نكتشف أسرار ذلك الأمر... ستكتشفون معي أن بورشال سيريحكم كثيرا فى هذا الجانب

*) get-help

الأمر get--help هو man فى لينوكس فمن خلاله يمكننا أن نبحث عن syntax لكل أمر..الإضافة الجديد هي showwindow التى ستفتح لنا واجهة رسومية تحوي كل ما يتعلق بالأمر عوضا عن كتابته فى الترمنال

*) update-help

هذا أمر رائع..فمن هنا وصاعدا بورشال3 سيمكننا من تحيين man وذلك من خلال تحميل المساعدة من موقع ميكروسوفت

*) show-command

هذا كذلك أمر رائع خاصة للمبتدئين فهو سيمكننا من تحويل الأوامر إلى واجهات رسومية تفاعلية بطريقة أوتوماتيكية تحوي كل الخصائص المتعلقة بالأمر من ثم يمكننا أن نقوم بعملية نسخ/لصق للكود أو أن نشغله مباشرة..هذا الأمر مفيد للأوامر ذات الخصائص الكثيرة مثل set-mailbox مثلا

*) الوحدات modules تحمل أوتوماتيكيا

أوامر بورشال هي مجموعة أكواد مخزنة داخل وحدات modules ويمكننا أن نضيف لل runspace أوامر جديدة بالتحميل اليدوي لأحد هذه الوحدات

import-module mymodule

أما فى النسخة الجديدة فبورشال هو الذى سيتكفل بتحميل وحداتنا أوتوماتيكيا...فمثلا لو كان لنا أمر get-aduser داخل وحدة activedirectory فلم نعد بحاجة لتحميل الوحدة يدويا بل ما علينا إلا كتابة الأمر على الترمنال وبورشال هو الذى سيتكفل بالتحميل

*) get-command

توفير عدة خصائص للبحث أهمها ListImported ParameterType

*) cim

البحث أصبح أكثر متعة مع أوامر cim حيث سنبحر داخل wmi بكل سهولة من خلال توفير مجموعة أوامر cim

الجزء الثالث إنتهى وسنلتقى بإذن الله مع الجزء الرابع

#4

السلام عليكم

فى الجزء الرابع سنتحدث عن جديد بورشيل 3 وما سيضيف لنا من ناحية إستخدامات الويب وكذلك سنقدم بعض الإضافات الأخرى:

*) JSON

النسخة الجديدة لبورشيل ستمكننا من أمرين مهمين: ConvertFrom-JSON و ConvertTo-JSON سيمكنناننا من التفاعل مع المواقع التي تعتمد على جيسون ومن تحويل الكوائن إلى هيكل جيسون أو العكس:

[pscustomobject]@{
   Name = "Walid2mi"
   Country = "Tunisia"
   foo = ("a","b","c",8)
} | ConvertTo-JSON

{
    "Name":  "Walid2mi",
    "Country":  "Tunisia",
    "foo":  [
                       "a",
                       "b",
                       "c",
                       8
           ]
}

'[
    {
       "arabream":"PowerShell2"
    },
    {
       "arabteam":"PowerShell3"
    }
]' | ConvertFrom-JSON


arabream
-----
PowerShell2
PowerShell3

*) Invoke-WebRequest :

هذا الأمر سيمكننا من إظهار محتوي المواقع الإبحار داخل كود صفحات الواب من خلال عدة خصائص كالخاصية Links أو images ....

$iwr = invoke-webrequest http://mysite.com
$iwr.Links | foreach href

*) Invoke-RestMethod

هذا الأمر سيمكننا من التفاعل مع خدمات الواب مثل خدمات ال RSS:

*) 2430 أمر !?

بورشال3 فى ويندوز 2012 ستمكننا من إستعمال 2430 أمر منها ماهو متعلق بالتخزين و بالشبكات و DNS و DHCP و الطباعة.....

*) يمكنك إستخدام بورشال2 بجانب بورشال3

بورشيل3 بإمكانه أن يشغل بورشيل2 من خلال تنفيذ الأمر

 powershell -version 2

وبالتالي سنتمكن من تنفيذ أكوادنا داخل بورشيل2

الجزء الرابع إنتهى بإذن الله فأنتظرونا فى الجزء الخامس مع مواضيع أكثر تشويقا

#5

شكراااااااا

برنامج المصلى

برنامج إسلامي لا غنى عنه لأي مسلم، يساعدك لتقيم عباداتك اليومية من صلاة وصوم وذكر وقرآن، فرائض ونوافل لتكون على صلة بربك في كل أوقاتك

مميزات البرامج

1- عرض لمواقيت الصلاة اليومية، ولأسبوع كامل بأي تاريخ تختاره

2- عرض لاتجاه القبلة مع اتجاه الشمال و الشمس و القمر

3- خدمة الجي بي إس تمكنك من حساب مواقيت الصلاة واتجاه القبلة أينما كنت

4- قائمة الفجر: لإيقاظ أصدقائك ومعارفك لصلاة الفجر تستطيع إضافة أي شخص لهذه القائمة فيوقظه البرنامج عند أذان الفجر تلقائيًا

(تعمل على أجهزة الجيلبريك فقط )

5- التقويم الهجري وما يقابله من التقويم الميلادي لأي عام

6- إمساكية رمضان للعام الجاري

7- تذكير بورد القرآن بشكل دوري وحفظ آخر سورة ورقم الآية

8- عرض لأذكار الصباح والمساء وما بعد الصلاة، كما يمكنك قراءة كتاب الأذكار المشهور "حصن المسلم" كاملا من داخل المصلي

9- تنبيهات خاصة بالصلوات يمكنك ضبطها لكل صلاة على حدة وهي: تنبيه بالأذان ــ تنبيه قبل الأذان ــ تنبيه بإقامة الصلاة ــ دعاء بعد الأذان وأذكار ما بعد الصلاة

التحميل من هنا

#6

السلام عليكم

فى الجزء الخامس سنتحدث عن إضافات مهمة أخرى:

*) دعم اللغة من خلال تقنية AST

إضافة رائعة و جديدة ل parser بورشال هذه الإضافة هي تقنية (AST (Abstract syntax tree حيث ستمكن هذه التقنية من توسيع ٱفاق اللغة و التحكم أكثر فى الأكواد من إيجابيات هذا الدعم أن تصبح سرعة تنفيذ الأكواد أسرع من قبل إلى حد 5 مرات :)

*) workflow

تم إدخال نوع من الوظائف function الجديدة مسمات Workflow هذا النوع من الوظائف خاص جدا فهي تدعم مثلا parallel loop وهي مكونة من activities كل activity لها process و scope خاص بها..وذلك لنتمكن من تنفيذ أكواد تسمح بإعادة تشغيل الجهاز أو بتوقيف إشتغال الكود لفترة محددة...الخ

*) schedule task

تم إضافة عدة أوامر للتحكم فى ال schedule task بكل يسر وبكل سهولة

*) PWA

Powershell Web Access هي طريقة مذهلة للتحكم عن بعد فيمكننا الٱن أن نتحكم فى خوادمنا وأنت تتجول فى باخرة أو طائرة من خلال أي جهاز يمكن أن يفتح متصفح...حيث سيمكنك المتصفح من Terminal تقدر من خلاله إدخال أوامر بورشال وتنفيذها ...تجدر الإشارة إلى أن PWA يمكن تفعيله من خلال IIS

PowerShell+Web+Access.png

----> الجزء الخامس إنتهى بإذن الله فأنتظرونا فى الجزء السادس الذى ستكون فيه مفاجئات أخرى

تم تعديل هذه المشاركة بواسطة walid2mi في 27 سبتمبر 2012 في 12:50

#7

السلام عليكم

هذا الجزء السادس سنخصصه كليا للبيئة الرسومية لبورشال...سنتطرق لبعض ميزات هذه البيئة الأنيقة فى نسختها الجديدة:

ISE3.png

البيئة منقسمة لجزئين أساسيين بعدما كانت فى النسخة السابقة منقسمة ل 3 واجهات:

الجزء الأول هو بمثابة سطر أوامر أما الجزء الثانى المرقم فهو مخصص لإنشاء الأكواد الأكثر تعقيدا

كذلك على يمين الواجهة نلاحظ إضافة واجهة صغيرة ستمكننا من البحث عن كل الأوامر

كذلك نلاحظ دعم ال intelisense من خلال دعم AST لوظيفة TABEXPANSION2

واجهة ISE ستمكننا بشكل سريع من خاصية تعديلات سهلة و ثرية

ise3.png

كالتعديل فى الألوان و الخلفية وحجم الخط...الخ

هذه البيئة حافظت على debugger النسخة السابقة:

debugger.png

طبعا هناك عديد الإضافات الأخرى كدعم خاصية ال region لنتمكن من تقسيم أكوادنا إلى أجزاء متعددة و إثراء الكائن PSISE حتى نتمكن برمجيا من التحكم فى بيئتنا ....الخ

إنتهى الجزء السادس و سنلتقى بإذن الله مع الجزء السابع الذى ستكون فيه مفاجئات أخرى

1
#8

السلام عليكم،

سنواصل هذه السلسلة و نتعرف على أشياء أخرى جديدة فى النسخة الثالثة لبورشال:

*) pssession :

سيمكننا بورشال 3 من خلال تطوير wsman وإدخال ال workflow من مرونة و قوة أكبر فى ال Remoting حيث سيمكننا من الإتصال لجهار معين عبر عدة أجهزة فيمكننا اليوم مثلا من الإتصال على جهازنا فى الشغل عبر فضاء عام للأنترنت للقيام بمهمة تتطلب بعض الوقت ثم نغلق الإتصال و عند عودتنا للمنزل يمكن أن نفتح الإتصال من جديد و نكمل و ذلك عبر الأمرين الجديدين disconnect-pssession / connect-pssession

*) التحكم فى طريقة إشتغال الطرفية:

هناك أوامر لا يمكن أن تشتغل إلا عبر طرفيات أخرى ك dir مثلا ولذلك عندما نكتب dir فى تارمنال بورشال فإن بورشال سينفذ الأمر get-childitem ولن ينفذ الأمر الداخلي ل cmd المتعلق بإظهار الملفات و المجلدات dir بورشال 3 سيمكننا من حل هذا الإشكال بإدخال رمز تنفيذى جديد %-- سيمكن بورشال من ترك تنفيذ سطر الأوامر ل

cmd %-- /c dir

*) WMI2

فريق بورشال المكلف بتطوير مكتبة WMI أنشأ نسخة جديدة من هذه التكنولوجيا حيث ستمكننا من مخاطبة الأجهزة عن بعد عن طريق بروتوكول WSmanagement مما سيفتح علينا ٱفاق جديدة منها مخاطبة بورشال لأنظمة غير ويندوز وذلك عبر CIM

*) powershell explorer

هذا برنامج رائع سيمكننا من البحث عبر الأنترنات أو داخل الجهاز عن أكواد معينة وذلك من خلال عدة خصائص منها: إسم المؤلف أو التكنولوجيا المستعملة sharepoint/hyperv/exchange..etc

script-explorer.jpg

إنتهى الجزء السابع و سنلتقى بإذن الله مع الجزء الثامن

1

مواضيع مشابهة