ميكروسوفت أصدرت النسخة التجريبية (Beta) من Windows 7،و من أهم مميزات Windows 7 هو أن PowerShell v2 يتم تحميله تلقائياً بمجرد تحميل Windows 7. كده يبقي Windows PowerShell موجود على الجيل الجديد من Windows Platform اللي يشمل Windows 7 – Windows Server 2008 مع العلم أن PowerSehll لم يكن متاح في Windows Server 2008 ServerCore ولكن تم إضافته مؤخراً في Windows Server 2008 R2. وطبعا كده مشكلة ان PowerSehll موجود على Windows Server ومش موجود على Windows Client إتحلت وهيبقي الـPowerShell موجود زي الـcmd.exe على أي Windows Operating System، وطبعاً ده هيبقي فرصة لكل الناس انها تعرف وتستخدم Windows PowerShell.
PowerShell in Windows 7
2009/03/07 بواسطة Sherif TalaatWMI in PowerShell
2009/01/19 بواسطة Sherif Talaatفي موضوع WMI in brief اتكلمنا بإيجاز عن الـWMI وإستخداماته. وإتكلمنا عن حاجة إسمها WMI Consumer أو WMI Application وقولنا ان دي الـTool اللي من خلالها نقدر نستخدم الـWMI علشان نحصل على أي معلومات عن الـManaged Resource. وذكرنا أمثلة ليها وكان من ضمنها الـPowerShell Script. وفي الموضوع ده هنعرف إزاي نقدر نستخدم WMI من خلال Windows PowerShell.
في PowerShell طريقتين علشان تقدر تستخدم الـWMI.
الطريقة الأولي: هي إنك تستخدم أمر Get-WmiObject
إستخدام الأمر: get-help get-wmiobject -full علشان تعرف كل المعلومات الخاصة بالأمر Get-Wmiobject زي الـsyntax والـparameters.
مثال 1: عرض معلومات عن الكمبيوتر بإستخدام WMI
{"Get-Wmiobject -class Win32_ComputerSystem | Where {$_.Name -eq "XYZ
في مثال 1، إستخدمت إسم الـWMI class الخاص بالـBIOS كـparameter للأمر Get-WmiObject
مثال 2: عرض كل الـWMI Classes الموجوده في CIMV2 namespace
Get-Wmiobject -namespace "Root\CIMV2" -list
في مثال 2، إستخدمت الـnamespace كـparameter للأمر Get-Wmiobject.
مثال 3: إستخدام WMI Query للحصول على معلومات عن الـService
"Get-Wmiobject -Query "Select * from Win32_Service
الطريقة الثانية: إستخدام PowerShell WMI Type Accelerator
الـType Accelerator الخاصة بـWMI:
- [WMI]
- [WMIClass]
- [WMISearcher]
[WMI]: وظيفته أنه يساعدك في الحصول على معلومات عن WMI Object محدد عن طريق أنك تستخدم خاصية من خصائص الـObject ده في الحصول على كل معلوماته. أحياناً بيكون أسهل من الـGet-WMIobject في حالة توافر معلومات عن الـWMI Object. أو بمعني أخر الـ[WMI] يستخدم مع الـObjects.
مثال 4: عرض معلومات عن الكمبيوتر بإستخدام WMI] Type Accelerator]
' "WMI]'\\.\root\CIMv2:Win32_ComputerSystem.Name="COMPUTERNAME]
في مثال 4، إستخدمنا [WMI] بدلاً من Get-Wmiobject، وحددنا الـWMI Object path و إختارنا خاصية (Property) من خصائص الـ Object المطلوب عرض معلوماته، في هذا المثال الخاصية هي (Name)
[WMIClass]: ده بيكون مخصص للإستخدام مع الـWMI Classes
مثال 5:
* WMIClass]'\\.\root\CIMv2:Win32_ComputerSystem' | format-list]
[WMISearcher]: هذا النوع يستخدم الـWMI Query في شكل String. ثم يقوم بإنشاء WMI Searcher Object تستخدم الـQuery. أخيراً يستخدم ()Get لتنفيذ الـQuery وعرض الناتج.
مثال 6:
"ComputerInfo = [WMISearcher]"Select * From Win32_ComputerSystem$ ()ComputerInfo.GET$
WMI in brief
2009/01/18 بواسطة Sherif Talaatإيه هو الـWMI؟
WMI دي إختصار لـWindows Management Instrumentation وهو عبارة عن تكنولوجيا مختصة بالتحكم وإدارة نظام تشغيل ويندوز أو ما يسمي بـ Windows Management. يعتبر WMI واحد من مكونات نظام تشغيل ويندوز إبتداً من Windows 2000.
من أهم مميزات WMI و بردو من أهم أسباب تطويره، هو أنه يوفر طريقة سهلة و مباشرة للتعامل مع الـManaged Resources الخاصة بالكمبيوتر من خلال الويندوز. الكمبيوتر ده ممكن يكون Local Computer أو ممكن يكون Remote Computer.
يعني إيه Managed Resources؟
المقصود بالـManaged Resources هي أي مكونات جوا الكمبيوتر يمكن للـWMI انه يتعامل معاها سواء كانت Logical Components زي معلومات عن نظام التشغيل، معلومات عن الـUser Accounts. أو Physical Components زي الـBIOS أو الـProcessor. يعني نقدر نقول سواء كانت Software أو Hardware.
يعني إيه WMI namespace؟
ببساطة الـnamespace هو طريقة لتجميع الحاجات(objects) اللي شبه بعض او مرتبطه ببعض في مجموعة واحده (Scope). مفهوم الـnamespace ده ممكن نطبقه على أي حاجة في الدنيا. هناخد الكمبيوتر كمثال للتوضيح. مكونات الكمبيوتر زي الـMotherBoard,Processor,RAM,Hard Disk دي كلها مرتبطه ببعضها وليها علاقة ببعض، في الحالة دي ان احنا نعملها namespace اسمه ComputerHardware. وبكده أول متسمع كلمه Computer Hardware هتفهم ان المقصود بيها هي المكونات زي الـMotherBoard,Processor,RAM,Hard Disk. دلوقتي بعد ما عرفت يعني ايه namespace من السهل انك تعرف يعني إيه WMI namespace. الـWMI namespace هي الـnamespace الخاصة بكل حاجة يقدر الـWMI يتعامل معاها. يعني على سبيل المثال وليس لبحصر هتلاقي WMI namespace إسمه Hardware ده علشان الـhardware اللي يقدر الـWMI يتعامل معاه. كمان هتلاقي namespace اسمه SQL Server علشان الـWMI الخاص بالـSQL
يعني إيه WMI Class؟
الـWMI بيستخدم الـClasses علشان يوصف الخصائص (Properties) لكل object موجود جوا الـnamespace. يعني مثلاً الـWMI class اللي اسمه Win32_BIOS ده بيبقي جواه كل الملعومات اللي تخص الـBIOS زي نوعه، والسوفت وير اللي موجود عليه، والشركة المنتجة، وتاريخ إصداره.
http://msdn.microsoft.com/en-us/library/aa394554(VS.85).aspx
يعني إيه WMI Provide؟
الـProviders بيستخدمها الـWMI في إنه يطلب (Request) المعلومات عن Managed Resource من الويندوز. يعني مثلاً في DNS Provider علشان تقدر تتعامل مع الـDNS من خلال الـWMI.
http://msdn.microsoft.com/en-us/library/aa394570(VS.85).aspx
يعني إيه WMI Consumer أو WMI Application؟
الـProvider كان وظيفته أن يحصل على المعلومات من نظام التشغيل – الويندوز – و الـConsumer وظيفته أن يحصل على المعلومات من الـWMI أو بمعني تاني أنه يحصل على المعلومات اللي بيحصل عليها الـWMI من الـProviders. الـConsumer ده ممكن يكون برنامج بيستخدم الـWMI، على سبيل المثال برنامج Microsoft System Management Server المشهور بإسم SMS. أو ممكن يكون PowerShell Script – VBScript بيستخدم الـWMI Query.
يعني إيه WMI Query؟
الـWMI Query هو الأمر المستخدم بواسطه الـWMI للحصول على معلومات عن الـobjects.
يعني إيه WMI Query Language؟
WQL هي اللغة اللي بيتك كتابه الـWMI Queries بإستخدامها. وهي لغة فرعية من لغة SQL المستخدمه مع قواعد البيانات Database. مما يعني أن الـWQL تشبه في كتابتها لغة SQL.
يعني إيه WMI Repository أو WBEM؟
الـWMI Repository أو WBEM هو المكان الذي يحتوي على المعلومات الخاصة بالنظام والمستخدم بواسطة الـWMI. يمكننا تخيل الـWBEM أنه قاعدة البيانات DB الخاصة بمعلومات النظام.
الـWMI Repository موجود في:
SystemRoot%\system32\wbem\Repository%
WMI Tools:
PowerShell WorkShop Book – Arabic Edition
2009/01/16 بواسطة Sherif Talaatالنسخة المترجمة إلي اللغة العربية من كتاب Windows PowerShell WorkShop 1 لـ Frank Koch، دلوقتي بقت متاحة للتحميل
Download: الكتاب باللغة العربية
PowerGUI is now supporting Arabic UI
2009/01/13 بواسطة Sherif Talaatأخيراً بعد شغل أكتر من شهرين مع فريق PowerGUI دلوقتي الإصدار 1.6.0 من برنامج PowerGUI بقي بيدعم Interface عربي. الإصدار 1.6.0 يعتبر لسه نسخة تجريبية (فيه لسه شوية مشاكل في الـlayout) بس إن شاء الله هتكون أتحلت في إصدار 1.7.0.
- PowerGUI Arabic UI
- PowerGUI with Arabic UI 02
http://dmitrysotnikov.wordpress.com/2009/01/13/powergui-in-arabic-japanese-and-turkish
PowerShell “Hello World” Examples
2008/12/30 بواسطة Sherif Talaatموضوع النهارده هو مجموعة من أشهر أمثلة لـ PowerShell Scripts هنوضح بيها أهم مميزات PowerShell ممكن تكون الأمثلة مش كتير بس هتوضح كتير. الأمثلة هتركز أكتر على إزاي PowerShell مبني على net framework. وإزاي يقدر بسهوله انه يتعامل مع الـ Classes & DLLs اللي موجوده في net framework.
مثال1:
في الـ #C لو عندك String وعايز تعرف عدد حروفه هتكتب:
int Counter = ”The Arabian PowerShell”.Length
في الـ PowerShell هتكتب:
The Arabian PowerShell”.Length”
مثال2:
لو عايز تعرف تاريخ النهارده بالـ#C:
;()DateTime.Now.ToShortDateString
بالـ PowerShell:
()Get-Date).ToShortDateString)
لحد دلوقتي ممكن يكون الموضوع مش باين أوي، حلينا نشوف مثال 3 ونشوف لسه مش واضح ولا لأ
مثال3:
في المثال ده مش هقارن بين الـ #C وبين الـ PowerShell، انت هتشوف بنفسك وتحكم. مثال 3 ده عبارة عن Windows Form فيها button لما تدوس عليها يقفل الـ Form

PowerShell Windows Form
form = new-object Windows.Forms.Form$
“form.Text= “My First PowerShell Form$
button = new-object Windows.Forms.Button$
“button.Dock=”Fill$
(form.control.add($button$
({()form.Add_Shown({$form.Activate$
()form.ShowDialog$
(PowerShell Commands (Cmdlet
2008/12/29 بواسطة Sherif Talaatقبل منتكلم عن PowerShell Commands خلينا ندردش زي كل مرة، المرة دي هنتكلم شوية يعني إيه Command. علشان نعرف يعني إيه Command لازم نعرف الأول يعني إيه (Command-Line Interface (CLI، الـ CLI دي الـ User Interface اللي الـ Users بيكتب الـ Commands اللي عايزها تتنفذ بدلاً من أنه يختارها من Menu أو Icon يدوس عليها زي ما بيحصل في الـ Graphical User Interface. معني كده ان الـ CMD ده CLI؟ ايوه … وكمان PowerShell ؟ ايوه وكمان PowerShell. نرجع بقي لـ يعني إيه Command. زي مإتفقنا ان CLI ده Console بتكتب في الـ Commands بتاعتك اللي عايزها تنفذ ، وطبعا الـCommands دي بيبقي ليها طريقة كتابة و تركيب معينه اللي بنقول عليه Syntax. والـSyntax بيختلف من CLI للتاني بس تكوين الـ Commands بيبقي ثابت. أي Command بيتكتب في CLI بيبقي ليه شكل معين:
CommandName -Parameter -Argument
مثال: Ping -t 192.168.1.1.
Command Name: ده بيكون إسم الـ Command ، ليكن على سبيل المثال Ping.
Parameter: ودي بتكون بتعبر عن خاصية من خصائص الـ Command، ولتكن t-.
Argument: ودي بتكون قيمة بتستخدم بواسطة الـ Command عن طريق الـ Parameter ولتكن 192.168.1.1.
دلوقتي بقي ما عرفنا يعني إيه Command نرجع لموضوعنا الأساسي وهو PowerShell Commands. الأوامر في PowerShell بتنقسم لـ4 أنواع:
- Cmdlets
- Function Commands
- Script Commands
- Native Commands
الـ Cmdlets:
الأوامر في PowerShell بيطلق عليها cmdlets وتنطق (command-let)، الـ cmdlets دي بتتميز بإنها تتبع حاجة اسمها Verb-Noun Pattern أو تتكون من فعل-إسم. وصلت ولا لسه ؟؟ طيب خلينا نقولها بشكل بعيد عن الكمبيوتر، فعل ألامر في أي لغة ولتكن العربية مثلا بيتكون إزاي ؟؟ أكيد فعل أمر + مفعول به (إسم) يعني مثلا ”إحضر الملف” ده فعل امر يعني Command ، جرب نترجمه للأنجليزية هيبقي Get File، هي دي نفس طريقة الأوامر في PowerShell بس الفرق الوحيد إنك بتكتب “-” بين الفعل و الإسم يعني تبقي Get-File وبالمناسبة في أمر اسمه Get-File في PowerShell
، يعني بإختصار شديد الفعل بيحدد الـ Action اللي هيتنفذ و الإسم بيحدد الـ Objects اللي هينفذ عليه الـAction. بداخل PowerShell v2 CTP3 في أكتر من 270 Cmdlets جاهزه علشان تساعد الـ Administrator انه ينفذ الـ Tasks بتاعته بإسنخدام PowerShell وفي نفس الوقت من غير ميتعلم إزاي يكتب PowerShell Script. الـ Cmdlets دي مبنيه على net framework. و موجوده في شكل ملفات DLLs بتتحمل مع PowerShell Process لما بتشتغل.
علشان تعرف كل الـ cmdlets المتاحة داخل PowerShell ممكن تفتح PowerShell console وتكتب الأمرGet-Command وهيجيلك قائمة بجميع الـ cmdlets.جرب وأنت بتكتب Get-Command انك تكتب بس get-com و دوس على TAB وشوف ايه اللي هيحصل ؟؟ هتلاقي PowerShell كمل باقي الأمر لوحده، دي خاصية اسمها TAB Completion ممكن تساعدك لو نسيت Syntax لأمر معين او نسيت بيتكتب إزاي
.
الـ Functions:
الـ Functions في PowerShell هي عبارة عن PowerShell Script Code بيتحمل في الـ Memory أول ما مترجم الأوامر Complier – Interpreter يبدأ يشتغل، ودي تعتبر من أسرع أنواع الأوامر لأنها بتكون مخزنه في الMemory. وظيفة الـ Functions عموماً هي انك يبقي عندك مجموعة من الأوامر بتتكرر كتير جوه نفس الـScript، توفيراً للوقت و المجهود وكمان أحسن وأسرع إداء للـScript يفضل إنك تعمل Function تكتب فيها جزء الـCode اللي بيتكرر و تنادي على الـ Functions دي او تعملها Calling في كل مرة تحتاج تستخدمها. خليك فاكر بتستخدن في إيه لحد منتكلم عنها في موضوع بالتفاصيل.
الـScript Commands:
دي نفس فكرة الـ Functions الفرق بينهم إن الـ Function بتتخزن في الـ Memory والـ Script Command بيتخزن في فايل ps1. وبيتعمله Load كله مرة تشغل فيها الفايل ده. الـScript بيكون أبطيء من الـ Function علشان بيأخد وقت لما يجي يشتغل ويتحمل في الـ Memory. بمجرد تحميله بيشتغل بنفس سرعة الـ Functions.
الـ Native Commands:
النوع ده من الأوامر بيخليك تشغل برامج بتتعامل مع الـ Operating System بس خارج الـ PowerShell، يعني مثلاً تكتب أمر علشان يفتح ملف txt. جوه الـnotepad او تفتح Excel Sheet جوه Microsoft Word. جرب تفتح اي فايل txt باستخدام الأمر ده notepad c:\temp.exe وشوف ايه اللي هيحصل.
PowerShell v2 CTP3
2008/12/25 بواسطة Sherif Talaatفريق PowerShell أعلن إطلاق إصدار CTP3 من PowerShell v2. الـ CTP ده إختصار لـ Community Technology Preview و باين من اسمه انه بيصدر مخصوص للـ Community علشان يبدأو يستخدموه و يقولوا رأيهم لميكروسوفت عن ايه الكويس و ايه اللي محتاج يتغير وبناءاً عليه ميكروسوفت تبدأ تطور في المنتج.
لتحميل PowerShell v2 CTP3 ، كمان هتحتاج انك تحمل WinRM CTP3 لو عايز تستخدم الـ PowerShell Remoting.
PowerShell v2 CTP3 ممكن تنزل بس على Windows XP-SP3, Windows Server 2003-SP2, Windows Vista-SP1, and Windows Server 2008 .
جولة سريعة في PowerShell
2008/12/25 بواسطة Sherif Talaatأخر موضوع اتكلمنا فيه كان مقدمة لـ PowerShell وطبعاً كان كله كلام ومفيش أي تطبيق عملي، علشان كده موضوع النهارده هنعرف ازاي نعمل Install لـ Powershell وناخد جوله سريعه جوه PowerShell console ودي طبعا هتبقي مقدمة لأي تطبيق عملي بعد كده.
أول حاجة نعملها هي تحميل ملف الـ Setup لـ PowerShell و ده ممكن تحميله من هنا PowerShell v2 CTP2، طبعاً قبل تحميل PowerShell لازم تحمل معاه كمان net framework. علشان زي ماتفقنا ان PowerShell مبنية في الأساس على net framework. وده ممكن تحمله من هنا net framwork 2. كمان في حاجة مهمة لازم تأخد بالك منها وانت بتحمل PowerShell هي نوع البروسيسور و الويندوز اللي عندك إذا كانوا 32bit ولا 64bit. علشان في ملف Setup مختلف لكل واحد.
بعد تحميل net framework. و الـ PowerShell . هتبدأ الـ Setup لPowerShell وده زيه زي برنامج بتعمله Setup كالعاده Next – Next – Finish
:). بعد متخلص Setup هتلاقي الـfolder الخاص بـ PowerShell موجود في: C:\Windows\System32\Windows PowerShell وطبعاً ده بإفتراض ان الويندوز موجوده على الـ :C.
دلوقتي لو فتحت Start Menu هتلاقي Item جديد موجود و أسمه ( Windows PowerShell V2 (CTP2 و موجود معاه شوية Sub-items زي الصورة اللي موجوده تحت،هنتكلم عليهم ونقول ايه دول

PowerShell v2 CTP in start menu
الـ Sub-Items الموجوده في الـ menu:
- Getting Started: و دي ملف Word فيه شوية معلومات عن PowerShell و بعض المباديء والمميزات الأساسية في PowerShell اللي تساعدك انك تفهم ايه هو PowerShell.
- Graphical Windows PowerShell V2(CTP2: وده الـ PowerShell console بس ليه (Graphical User Interface (GUI والغرض منه انه يسهل التعامل مع PowerShell. يعني مثلاً ممكن تعمل Copy-Paste وكمان فيه خاصية اسمها Tokenizer ودي بتلون الـScript Code على حسب نوع الكلمه وده يسهل عليك لما تيجي تقرأ الScript علشان تقدر تحدد الـ Variable و الـ Commands والـ Paramters بشكل أسهل. كمان ممكن تكتب Script وتنفذ في الـ GUI على عكس الـConsole اللي اتعودنا عليه تكتب الـScript في الـ Notepad و تعمله Save بنوع الـ Script يعني لو VBScript يبقي الملف vbs.* ولو PowerShell يبقي ps1.* وبعد كده ترجع تعمل Run للملف من الـ Console.

Graphical Windows PowerShell V2(CTP2)
- Quick Reference: ده ملف Word فيه الـ Syntax الخاص بـ PowerShell. والـ Syntax المقصود بيه قواعد كتابة لغة الـ PowerShell أو ما يسمي بالـ Grammar في اللغات عامة ولكن كلمة Syntax تستخدم مع لغات البرمجة او كل ما يخص لغة الكمبيوتر لشكل خاص.
- Release Notes: ملف Word يحتوي على كل ما يخص الإصدار المحُمل لديك من مميزات وكيفية التعامل معه.
- User Guide: ملف Word شبيه بملف Getting Started ولكن بتفاصيل أعمق.
- Windows PowerShell V2 (CTP2): ده PowerShell Console بالشكل التقليدي الشبيه بـ “CMD.exe”.

Windows PowerShell V2 (CTP2)
كده يبقي أنت عرفت ازاي تحمل الـ PowerShell و عرفت كمان ايه منين ممكن تبدأ تتعلم تكتب و تجربPowerShell بإستخدام Getting Started – Quick Ref – User Guide.
مقدمة لـ PowerShell
2008/12/22 بواسطة Sherif Talaatقبل منتكلم عن PowerShell خلينا ندردش شوية عن الـ Scripting وبنستخدمه ليه ومين اللي المفروض يتسخدموا.
لو انت بتشتغل IT Pro وكلمة IT Pro دي تشمل الـ System Administrator, System Engineer, Network Administrator , Help desk كل الناس شغلهم كله بيبقي Administration لنتورك، النتورك دي بيبقي فيها سيرفر، راوتر ، سويتش وكمان شوية يوزرز اللي احنا بنقول علي الاجهزة بتاعتهم Clients. بالنسبة للسيرفر بيبقي في اكتر من سيرفر كل واحد فيهم بيبلعب دور معين ، يعني مثلا تلاقي سيرفر عليه Active Directory – DNS و سيرفر تاني عليه ISA علشان يبقي Firewall و سيرفر تالت عليه Exchange علشان يبقي Mail، في الأول الـ Administration بيبقي سهل وبسيط لكن مع الوقت الدنيا بتكبر و النتورك حجمها بيزيد سواء على مستوي الـ Servers & Application او على مستوي عدد الـ Users. فيبدأ الـ IT Pro يدور على حاجة تخلي موضوع الـ Administration أسهل وأسرع. وهنا يجي دور الـ Scripting، عن طريق الـ Scripting يبدأ يكتب مجموعة من الـ Scripts اللي تساعده في تنفيذ حاجات معينه يعني مثلا ممكن يعمل Script يستخدم مع اي كمبيوتر جديد وتكون وظيفة الـScript ده انه يـJoin الكمبيوتر ده على الـ Domain.
طيب ايه الـ Script ده .. يعني بيتعمل ازاي و بيبقي شكله ازاي؟؟
الـ Script ده مجموعة من الأوامر مكتوبة في Script File والأوامر دي بتتنفذ ورا بعضها أول متشغل الـ Script. طبعا الـ Script نقدر نقول عليه نوع من أنواع الـ Porgramming لأنك علشان تكتب Script محتاج انك تتعلم Scripting Language تكتب بيها الأسكربت ده. في Scripting Languages كتير زي الJavaScript , VBScript, Perl وطبعاً PowerShell. في Scripting Languages تاني بس كفاية دول كمثال.
دلوقتي احنا عرفنا ايه هو الـ Scripting ، طيب إيه هو PowerShell؟؟
أول لما ميكروسوفت اأعلنت عن النسخة التجريبية من Windows Server 2008 أعلنت معاه عن حاجة معاه اسمها Windows PowerShell.
Windows PowerShell دي ببساطة عبارة عن Shell Scripting Environment اتعلمت مخصوص للـ Windows و أتبنت على net framework. وكان الهدف من انها تبقي مبنيه على net framework. انها تقدر تندمج او زي ما بنقول تقدر تـ integrate مع كل برامج ميكروسوفت خصوصا ان بقي من الواضح ان net framework. بقي حاجة اساسية مع الويندوز وكل برامج ميكروسوفت والدليل على كده ان الnet framework. بيبقي بينزل اوتوماتيك في الويندوز – زمان كنت بتعمله install لما تحتاجه – كمان لو جيت تـ Install اي برنامج من برامج ميكروسوفت هيسألك على net framework. الأول ولو مش موجود هيديك Error.
نرجع تاني لـ PowerShell. لما تفتح PowerShell Console هتلاقي في شبة كبير في الشكل من CMD.exe بس طبعا الشبه في الشكل بس في فرق كبير اوي في الوظيفة والامكانيات. طبعاً في ناس مستغربة وهي بتقرأ الكلام ده واكيد بيتسألوا هي ليه ميكروسوفت رجعت تاني للـ shell بعد كل التطور ده في الـ User Interface، وطبعا التساؤلات زادت لما ميكروسوفت أعلنت عن Windows Server 2008 | ServerCode installation اللي بقي كله shell وفيه شبه كبير من Unix-Linux.
الموضوع ببساطة ان الـ Windows Shell كان ضعيف و محدود الأمكانيات بالمقارنة مع Unix shell ، والسبب انه كان محدود ان مكنش بيدعم الـ pipelining, conditional, and recursive programming. كمان انه مكنش بيوفر للـ Administrator مجموعة كبيرة من احتياجاته،ومع الوقت حجم ويندوز بدأ يكبر و بدأ يقدم خدمات أكتر فبقي من الصعب ويمكن من المستحيل ان الـ Administrator يبفضل يستخدم Windows Shell، بدأت ميكروسوفت تركز أكتر على الـ User Interface علشان تعوض النقص في مشكلة الـShell وبدأت تطور في الـ interface لحد موصلنا للشكل Vista، مع أن الـ GUI بتعمل كل حاجة تقريباً بس لسه مش مناسبة لإحتياجات الـAdministrator. علشان كده ميكروسوفت رجعت تاني تطور في الـShell علشان الويندوز يبقي بيوفر إحتيجات الـ Administrator زي مبيوفرها للـ User. ومن هنا ظهر Windows PowerShell.
- Windows PowerShell V2 (CTP2)
ليه PowerShell مختلف ؟؟
- PowerShell ده أول Shell يكون Object-Oriented Shell، يعني بيتعامل مع كل حاجة جوه الـ Shell environment كأنها Object على عكس أي Shell تاني بيتعامل مع اي حاجة كأنها text. لو دي أول مرة تسمع عن الـ Object-Oriented ممكن تقرأ عنه هنا، الموضوع هيبقي أوضح لما نبدا نستخدم أمثلة.
- PowerShell Remoting: دي خاصية موجوده في PowerShell بس بتخليك انك تقدر تكتب PowerShell commands and Scripts على اي Remote Computer، يعني من وانت قاعد على الكمبيوتر بتاعك في البيت ممكن تفتح PowerShell عندك و تتحكم في السيرفر اللي في المكتب كأنك بتكتب PowerShell عليه.
- Backgroud-Jobs: ودي معناها ان PowerShell بينفذ الـ commands/scripts في الـ backgroud من غير اي Interaction مع الـ Interface
- Native-Shell environment: يعني مش محتاج برامج زي Editor – Compiler علشان تشغل الـ Script .. في PowerShell كل المطلوب انك تفتح PowerShell console كأنك بتفتح CMD.exe، معني كده انك تقدر تشغل PowerShell على اي Windows من غير قلق من ان البرنامج اللي بيتشغل الScript مش موجود على الكمبيوتر.
- Script-Debugging: دي تخليك تقدر تتابع الـ script / command اللي انت كاتبه وكمان تعمله Debugging من غير متستخدم اي Editor-Compiler.
طبعا PowerShell فيه مميزات أكتر من كده بس انا حبيت اركز على أهم مميزاته و هنتكلم عن الباقية في Posts تانيه.





