Out-Null أو منع الإخراج في Windows PowerShell. عرض الإخطارات للمستخدمين باستخدام PowerShell عرض معلومات حول التنفيذ الناجح لأمر powerhell

بوويرشيلهو محرك برمجي موجه للكائنات ولغة برمجة نصية بواجهة سطر أوامر توفر لمتخصصي تكنولوجيا المعلومات خيارات أكثر شمولاً لتكوين أنظمة تشغيل عائلة MS Windows. ببساطة ، إنه نوع من أدوات الإدارة متعددة الاستخدامات. ستناقش هذه المقالة التقنيات الأساسية لكتابة البرامج النصية في PowerShell ، والتي تتيح لك أتمتة إدارة بيئة Windows بطريقة بسيطة.

يوفر PowerShell واجهة وحدة تحكم خالصة وبيئة تطوير كاملة PowerShell ISE(بيئة البرمجة النصية المتكاملة) للنصوص. لبدء تشغيل واجهة سطر الأوامر ، أدخل بوويرشيل في قائمة التشغيل (WinKey + R). بدأ PowerShell ISE باستخدام الأمر "PowerShell ISE" في نفس القائمة.

يُفضل ISE لأنه يوفر المزيد من الفرص للمطور بفضل تمييز بناء الجملة والإكمال التلقائي للكود والميزات الأخرى المتأصلة في العديد من IDEs "الكبيرة".

كتابة النصوص وتشغيلها

يتم حفظ البرامج النصية كملفات بملحق .ps1. على الرغم من أن PowerShell كان لفترة طويلة جزءًا أصليًا من Windows ، لا يمكنك تشغيل البرامج النصية الخاصة به بنقرة مزدوجة بسيطة. للقيام بذلك ، انقر بزر الماوس الأيمن على البرنامج النصي وحدد "تشغيل في PowerShell".

هناك أيضًا سياسات نظام تقيد تنفيذ البرامج النصية. يمكنك التحقق من إعدادات النهج الحالية عن طريق إصدار الأمر Get-ExecutionPolicy. ستكون النتيجة إحدى القيم التالية:

  • محدد- يحظر تنفيذ البرنامج النصي. التكوين القياسي؛
  • الكل موقعة- يمكنك تشغيل البرامج النصية الموقعة من قبل مطور موثوق ؛ سيطلب منك PowerShell التأكيد قبل تشغيل البرنامج النصي ؛
  • عن بعد- يمكنك تشغيل البرامج النصية الخاصة بك أو تلك التي تم توقيعها بواسطة مطور موثوق ؛
  • غير مقيد- يمكنك تشغيل أي نصوص.

للبدء ، تحتاج إلى تغيير إعداد نهج التشغيل إلى RemoteSigned باستخدام الأمر Set-ExecutionPolicy:

كمدليتس

أوامر Cmdlets هي أوامر ذات وظيفة محددة مسبقًا ، على غرار العبارات الشرطية في لغات البرمجة. لديهم العديد من الميزات الرئيسية:

  • هناك أوامر cmdlets للنظام والمستخدم والاختيارية ؛
  • ستكون نتيجة تشغيل الأمر cmdlet كائنًا أو مجموعة من الكائنات ؛
  • يمكن لأوامر cmdlets معالجة البيانات وتوجيهها إلى أوامر cmdlets أخرى ؛
  • أوامر cmdlets غير حساسة لحالة الأحرف ، لذلك لا يوجد فرق بين Get-ADUser و get-aduser و gEt-AdUsEr ؛
  • يتم استخدام الحرف كفاصل ؛ ...

يحتوي كل أمر cmdlet على فعل واسم ، مفصولة بواصلة. على سبيل المثال:

  • الحصول على العملية- عرض العمليات الحالية التي تعمل على الكمبيوتر ؛
  • احصل على خدمة- عرض قائمة الخدمات وحالتها.
  • الحصول على المحتوى- عرض محتويات الملف المحدد ، على سبيل المثال Get-Content C: \ Windows \ System32 \ drivers \ etc \ hosts.

إذا لزم الأمر ، يمكن عرض قائمة بجميع أوامر cmdlets المتاحة باستخدام Get-Help-Category:

يمكنك أيضًا إنشاء أوامر cmdlets الخاصة بك.

المعلمات

يحتوي كل أمر cmdlet على العديد من المعلمات التي تحدد كيفية عمله. يقترح PowerShell ISE تلقائيًا جميع الخيارات المتاحة ، ويعرض نوعها. على سبيل المثال ، يسرد Get-Service-NameW * الخدمات التي تبدأ بـ W. إذا نسيت المعلمات التي يحتوي عليها الأمر cmdlet الذي تم إدخاله ، فاستخدم Get-Member. على سبيل المثال ، Get-Process | الحصول على عضو:

إذا لم تجد ما تبحث عنه ، أو لم تكن متأكدًا من كيفية تعيين المعلمات بشكل صحيح ، يمكنك حتى الاستعلام عن أمثلة باستخدام معلمة -Examples:

يمكن أيضًا استدعاء بعض أوامر cmdlets باستخدام الأسماء المستعارة ، على سبيل المثال ، بدلاً من Get-Help ، يمكنك ببساطة كتابة تعليمات.

عند كتابة نصوص كبيرة أو تطوير تعاوني ، يمكنك استخدام التعليقات. يبدأ كل تعليق بحرف # ، ويتم تحديد كتلة التعليق بتركيبات الأحرف<# и #>في البداية والنهاية على التوالي.

ناقل

بوويرشيليسمح بتبادل البيانات بين أوامر cmdlets باستخدام خط أنابيب. على سبيل المثال:

  • GetService | SortObject -property Status - فرز الخدمات قيد التشغيل حسب الحالة ؛
  • "مرحبا بالعالم!" | Out-File C: \ ps \ test.txt - كتابة نص إلى ملف.

يمكن استخدام خطوط أنابيب متعددة. على سبيل المثال ، يسرد البرنامج النصي التالي أسماء جميع الخدمات باستثناء تلك المتوقفة:

الحصول على الخدمة | أين ($ _. الحالة -eq "قيد التشغيل") | حدد اسم العرض

استنتاج

لذا فإن هذا البرنامج التعليمي يعطي المبتدئين فكرة عما يدور حوله PowerShell. نظرنا أيضًا في خيارات تغيير سياسة تنفيذ البرنامج النصي ، وما هو أمر cmdlet ، وكيف يتبادلون البيانات باستخدام خط الأنابيب ، وكيفية الحصول على خصائص الكائن المطلوب. تذكر أنه يمكنك استخدام Get-Help cmdlet في حالة وجود صعوبة.

نوافذ بوويرشيلهي أداة قوية ويمكنها فعل أي شيء يريده أي شخص تقريبًا على أجهزة الكمبيوتر الخاصة به. لكن المشكلة الوحيدة هي أنها أداة سطر أوامر ولا تحتوي على واجهة مستخدم رسومية. ومع ذلك ، يمكن أن يكون مفيدًا عندما لا تعمل الواجهة المستندة إلى واجهة المستخدم الرسومية أو تصبح غير مستجيبة. لسوء الحظ ، فإن الشيء الرئيسي هو حقيقة أن المستخدم العادي ليس لديه معرفة كافية باستخدام PowerShell على أكمل وجه. لكننا سنحاول اليوم مناقشة أفضل 10 أوامر PowerShell يمكن أن تساعد المستخدم في إنجاز المزيد على Windows 10.

أوامر PowerShell لمساعدة المستخدم على القيام بالمزيد

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

سننظر cmdletsيمكنه القيام بما يلي:

  1. ابدأ تشغيل تطبيق UWP الخاص بك.
  2. احصل على مساعدة لأي أمر cmdlet.
  3. احصل على أوامر مماثلة.
  4. ابحث عن ملف معين.
  5. اقرأ محتويات الملف.
  6. اعثر على معلومات حول جميع الخدمات على جهاز الكمبيوتر الخاص بك.
  7. اعثر على معلومات حول جميع العمليات على الكمبيوتر.
  8. تثبيت سياسة التنفيذ.
  9. انسخ الملف أو الدليل.
  10. حذف الملف أو الدليل.

1] قم بتشغيل تطبيق UWP

يعد PowerShell أداة رائعة يمكن استخدامها لتشغيل تطبيقات UWP في ثوانٍ. لكن الشيء الرئيسي هو التنفيذ الصحيح للأمر. يمكنك استخدام

بدء العملية "إعدادات ms:"

الأمر هو فقط تشغيل تطبيق إعدادات Windows UWP. يمكنك قراءة المزيد حول URIs الأخرى لتطبيقات UWP الأخرى هنا على microsoft.com.

2] احصل على مساعدة بشأن أي أمر cmdlet

إذا لم تفهم أي أمر يجب عليك استخدامه لإنجاز مهمة معينة. أو ما يفعله أمر cmdlet معين ، فلا داعي للقلق. يمكنك ببساطة استخدام Get-Help cmdlet للقيام بذلك. يمكنك استخدامه بالطرق التالية:

الحصول على المساعدة الحصول على المساعدة الحصول على المساعدة - الحصول على المساعدة الكاملة - مثال الحصول على المساعدة *

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

3] احصل على أوامر مماثلة

للعثور على أوامر من نوع مشابه أو تحتوي على عبارة معينة ، يمكنك استخدام الأمر cmdlet Get-Command... ومع ذلك ، فإنه لا يسرد كل أمر cmdlet في PowerShell ، لذا فأنت تستخدم بعض المرشحات المحددة. يمكنك استخدام الأوامر التالية:

Get-Command -Name Get-Command-CommandType

سيساعدك الأمر cmdlet الأول في العثور على أمر cmdlet بعبارة محددة ، وسيساعدك الأمر الثاني على تصفية أوامر cmdlets التي تؤدي وظيفة معينة.

4] ابحث عن ملف معين

إذا كنت بحاجة إلى العثور على ملف أو دليل معين في موقع معين ، فيمكنك استخدام الأمر cmdlet تحصل على البند... يمكنك استخدامه مثل

تحصل على البند

قائمة محتويات مسار معين.

5] اقرأ محتويات الملف

الحصول على المحتوى

6] قراءة المعلومات حول جميع الخدمات على جهاز الكمبيوتر الخاص بك.

يمكنك استخدام الأمر cmdlet احصل على خدمةلسرد جميع الخدمات قيد التشغيل أو المتوقفة على جهاز الكمبيوتر الخاص بك. بدلاً من ذلك ، يمكنك استخدام أوامر cmdlets التالية ذات الصلة لأداء وظائفها الخاصة:

بدء - إيقاف الخدمة - تعليق الخدمة - استئناف الخدمة - إعادة تشغيل الخدمة

7] قراءة المعلومات حول جميع العمليات على الكمبيوتر

على غرار أمر Get-Service cmdlet ، يمكنك استخدام الأمر cmdlet الحصول على العمليةلسرد جميع العمليات التي تعمل على جهازك. بدلاً من ذلك ، يمكنك استخدام أوامر cmdlets التالية ذات الصلة لأداء وظائفها الخاصة:

بدء عملية خدمة انتظار إيقاف العملية

8] تكوين سياسة التنفيذ

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

Set-ExecutionPolicy مجموعة غير محدودة التنفيذالسياسة جميع Set-ExecutionPolicy توقيع عن بعد Set-ExecutionPolicy Restricted

هنا ، تتراوح السياسات من أعلى إلى أسفل من الأدنى إلى الأعلى أمانًا.

9] نسخ ملف أو دليل

يمكن للمستخدم استخدام الأمر cmdlet نسخ العنصر

نسخ العنصر "E: \ TWCTest.txt" - الوجهة "D: \"

10] حذف ملف أو دليل

على غرار أمر cmdlet Copy-Item ، يمكن للمستخدم استخدام الأمر cmdlet نسخ العنصرلنسخ ملف أو دليل إلى وجهة أخرى. بناء جملة أمر cmdlet هذا هو

إزالة العنصر "E: \ TWCTest.txt"

أثناء العمل في PowerShell ، لم نفكر بعد في كيفية قيام النظام بإنشاء أسطر نصية يتم عرضها على الشاشة نتيجة لتنفيذ أمر معين (تذكر أن أوامر cmdlets لـ PowerShell تُرجع كائنات .NET ، والتي ، كقاعدة عامة ، لا تعرف كيف تعرض نفسك على الشاشة).

في الواقع ، يحتوي PowerShell على قاعدة بيانات (مجموعة من ملفات XML) تحتوي على مُنسِّقات افتراضية لأنواع مختلفة من كائنات .NET. تحدد هذه الوحدات النمطية خصائص الكائن التي يتم عرضها في الإخراج وبأي تنسيق: قائمة أو جدول. عندما يصل كائن إلى نهاية خط الأنابيب ، يحدد PowerShell نوعه ويبحث عنه في قائمة الكائنات التي يتم تحديد قاعدة تنسيق لها. إذا تم العثور على هذا النوع في القائمة ، فسيتم تطبيق المنسق المقابل على الكائن ؛ إذا لم يكن الأمر كذلك ، فإن PowerShell يعرض فقط خصائص كائن .NET.

في PowerShell ، يمكنك أيضًا تعيين قواعد التنسيق بشكل صريح لإخراج البيانات من أوامر cmdlets ، ومثل مترجم أوامر Cmd.exe ، يمكنك إعادة توجيه تلك البيانات إلى ملف أو طابعة أو جهاز فارغ.

تنسيق معلومات الإخراج

في الأصداف التقليدية ، تقوم الأوامر والأدوات المساعدة بتنسيق الإخراج بأنفسهم. تسمح لك بعض الأوامر (على سبيل المثال ، dir في مترجم Cmd.exe) بتخصيص تنسيق الإخراج باستخدام معلمات خاصة.

في PowerShell ، تقوم أربعة أوامر cmdlets للتنسيق المخصص بتنسيق الإخراج (الجدول 17.3). هذا يجعل التعلم أسهل لأنك لست مضطرًا لتذكر أدوات وخيارات التنسيق للأوامر الأخرى (أوامر cmdlets الأخرى لا تنسق الإخراج).

الجدول 17.3. أوامر cmdlets لـ PowerShell لتنسيق الإخراج
كمدليت وصف
تنسيق الجدول ينسق إخراج الأمر كجدول تحتوي أعمدته على خصائص الكائن (يمكن أيضًا إضافة الأعمدة المحسوبة). يدعم القدرة على تجميع بيانات الإخراج
تنسيق قائمة يتم تنسيق الإخراج كقائمة من الخصائص ، مع عرض كل خاصية في سطر جديد. يدعم القدرة على تجميع بيانات الإخراج
تنسيق مخصص يتم استخدام طريقة عرض مخصصة لتنسيق الإخراج
تنسيق واسع تنسيق الكائنات كجدول عريض يعرض خاصية واحدة فقط لكل كائن

كما هو مذكور أعلاه ، إذا لم يتم تحديد أي من أوامر cmdlets للتنسيق بشكل صريح ، فسيتم استخدام المنسق الافتراضي ، والذي يتم تحديده حسب نوع البيانات المعروضة. على سبيل المثال ، عند تشغيل Get-Service cmdlet ، يكون الإخراج الافتراضي كجدول مكون من ثلاثة أعمدة (الحالة والاسم واسم العرض):

PS C: \> Get-Service Status Name DisplayName ------ ----------- توقف التنبيه عن تشغيل ALG Application Layer Gateway Service توقف AppMgmt إدارة التطبيقات متوقفة aspnet_state ASP.NET State الخدمة قيد التشغيل Ati HotKey Poller Ati HotKey Poller تشغيل AudioSrv Windows Audio تشغيل BITS في الخلفية الخدمة الذكية ... تشغيل المتصفح توقف متصفح الكمبيوتر توقف خدمة فهرسة cisvc توقفت ClipSrv خادم الحافظة توقف clr_optimizatio ... خدمة تحسين وقت تشغيل .NET v ... توقف تطبيق نظام COMSysApp COM + تشغيل خدمات التشفير CryptSvc التي تقوم بتشغيل DcomLaunch بدء عمليات خادم DCOM التي تقوم بتشغيل Dhcp DHCP Client ...

لتغيير تنسيق الإخراج ، قم بتوجيهه إلى تنسيق cmdlet المناسب. على سبيل المثال ، سيسرد الأمر التالي الخدمات باستخدام قائمة التنسيق cmdlet:

PS C: \> الحصول على الخدمة | اسم قائمة التنسيق: التنبيه اسم العرض: حالة التنبيه: توقف DependentServices: () ServicesDependedOn: (LanmanWorkstation) CanPauseAndContinue: False CanShutdown: False CanStop: False ServiceType: Win32ShareProcess Name: ALG DisplayName: Application Layer Gateway Service and (RunningOndueed Services) : CanShutdown خطأ: خطأ CanStop: True ServiceType: Win32OwnProcess. ... ...

كما نرى ، فإن استخدام تنسيق القائمة يعرض معلومات حول كل خدمة أكثر من تنسيق الجدول (بدلاً من ثلاثة أعمدة من البيانات حول كل خدمة ، يعرض تنسيق القائمة تسعة صفوف من البيانات). ومع ذلك ، هذا لا يعني أن الأمر Format-List cmdlet يسترد معلومات إضافية حول الخدمات. يتم تضمين هذه البيانات في الكائنات التي يتم إرجاعها بواسطة Get-Service cmdlet ، لكن cmdlet تنسيق الجدول الافتراضي يتجاهلها لأنه لا يمكن عرض أكثر من ثلاثة أعمدة.

عندما تقوم بتنسيق الإخراج باستخدام أوامر cmdlets للتنسيق والقائمة وتنسيق الجدول ، يمكنك تحديد أسماء خاصية الكائن التي تريد عرضها (تذكر أنه يمكنك عرض قائمة الخصائص المتوفرة على كائن ما باستخدام الأمر Get-Member cmdlet نوقشت في وقت سابق). على سبيل المثال:

PS C: \> الحصول على الخدمة | اسم قائمة التنسيق ، الحالة ، اسم CanStop: حالة التنبيه: توقف CanStop: اسم خاطئ: ALG الحالة: قيد التشغيل CanStop: الاسم الحقيقي: AppMgmt الحالة: Stopped CanStop: False. ... ...

يمكنك عرض جميع خصائص الكائنات باستخدام المعلمة * ، على سبيل المثال:

PS C: \> الحصول على الخدمة | تنسيق الجدول *

إعادة توجيه معلومات الإخراج

يوفر PowerShell العديد من أوامر cmdlets التي يمكنك استخدامها للتحكم في إخراج بياناتك. تبدأ أوامر cmdlets هذه بـ Out ويمكنك رؤية قائمة مثل هذه:

PS C: \> Get-Command out- * | اسم جدول التنسيق ---- Out-Default Out-File Out-Host Out-Null Out-String

بشكل افتراضي ، يتم تمرير الإخراج إلى Out-Default cmdlet ، والذي بدوره يفوض كل عمل عرض السلاسل على الشاشة إلى Out-Host cmdlet. لفهم هذه الآلية ، يجب ألا يغيب عن البال أن بنية PowerShell تتضمن تمييزًا بين الصدفة نفسها (مترجم الأوامر) والتطبيق الرئيسي (المضيف) الذي يستخدم هذه النواة. من حيث المبدأ ، يمكن أن يكون أي تطبيق يقوم بتنفيذ عدد من الواجهات الخاصة التي تسمح بالتفسير الصحيح للمعلومات الواردة من PowerShell بمثابة التطبيق الرئيسي. في حالتنا ، التطبيق الرئيسي هو نافذة وحدة التحكم ، حيث نعمل مع shell ، ويمرر أمر Out-Host cmdlet الإخراج إلى نافذة وحدة التحكم هذه.

تسمح لك معلمة Paging لـ Out-Host cmdlet ، مثل الأمر الإضافي لمترجم Cmd.exe ، بتنظيم إخراج المعلومات صفحة بصفحة ، على سبيل المثال:

الحصول على مساعدة الحصول على العملية - كامل | خارج المضيف -Paging

حفظ البيانات في ملف

يتيح لك Out-File cmdlet توجيه الإخراج إلى ملف نصي بدلاً من نافذة وحدة التحكم. يتم حل مهمة مماثلة بواسطة عامل إعادة التوجيه (>) ، ومع ذلك ، يحتوي الأمر Out-File cmdlet على العديد من المعلمات الإضافية التي يمكن استخدامها للتحكم في الإخراج بشكل أكثر مرونة: قم بتعيين نوع تشفير الملف (معلمة التشفير) ، واضبط طول خطوط الإخراج بالأحرف (معلمة العرض) ، حدد وضع الكتابة فوق الملف (إلحاق ، خيارات noClobber). على سبيل المثال ، سيرسل الأمر التالي معلومات حول الخدمات المسجلة على الكمبيوتر إلى الملف C: \ service.txt ، وسيتم كتابة هذا الملف بتنسيق ASCII.

هذه المقالة عبارة عن نسخة نصية من البرنامج التعليمي من فيديو تعليمي مجاني عن PowerShell وأساسيات Active Directory (استخدم الكلمة السرية "blog" للوصول الكامل).

أثبتت دورة الفيديو هذه أنها تحظى بشعبية كبيرة في جميع أنحاء العالم وستوجهك خلال الخطوات لإنشاء مجموعة كاملة من أدوات إدارة Active Directory من الألف إلى الياء.

الترميز باستخدام PowerShell

في البداية ، قد يبدو الأمر صعبًا لبدء العمل مع PowerShell ، خاصةً إذا اعتدت على مر السنين العمل مع سطر أوامر cmd.exe وما يسمى بـ "الملفات الدفعية" (الملفات التي تحتوي على ملف bat و. ملحقات cmd). في هذه المقالة ، المكتوبة على أساس مواد الدرس الثاني لدورة الفيديو الخاصة بنا ، سنخبرك كيف ولماذا يجب عليك تحديث مهاراتك في العمل مع PowerShell ، وكذلك تحليل أساسيات بدء تشغيل محرر PowerShell ، سيد الإكمال التلقائي للأوامر وكيفية تحديثها في أي موقف صعب مساعدة وأمثلة.

تنفيذ الأوامر

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

إذا كنت تعمل الآن في أي مؤسسة موجودة منذ أكثر من يوم ، فمن المحتمل أن يكون لديك بالفعل العديد من البرامج النصية الصغيرة لكل يوم تقوم بتشغيله من سطر الأوامر cmd.exe. وهذه أخبار رائعة! هذا يعني أنه يمكنك بسهولة القيام بكل هذا من PowerShell. لقد كان هذا قرارًا ذكيًا حقًا في التصميم من جانب Microsoft ، حيث أنها جعلت الانتقال إلى الحل الجديد أسهل للمسؤولين.

في المظهر ، يبدو محرر PowerShell ويعمل تمامًا مثل بيئة سطر الأوامر cmd.exe. ستعمل التقنيات والمهارات التي تمتلكها بالفعل دون تغيير في PowerShell. وإذا كنت تتطلع أيضًا إلى تحسين مهاراتك وتعمل على الانتقال من القيام بمهام لمرة واحدة إلى إدارة أكثر تلقائية ، فإن عادة تشغيل PowerShell بدلاً من سطر الأوامر يعد مكانًا رائعًا للبدء.

ستعمل جميع الأدوات المساعدة شائعة الاستخدام مثل ping و ipconfig و nslookup وما إلى ذلك تمامًا كما تتوقع.

كيفية العثور على أوامر PowerShell

يحب الناس PowerShell لأنه قوي جدًا! لكن هذه القوة تأتي من قدر مجنون تمامًا من القدرات المدمجة. ببساطة ، من غير الممكن ، وربما غير عملي ، أن يحفظ شخص ما جميع أنواع الأوامر وأوامر cmdlets والأعلام والمرشحات والطرق الأخرى لإخبار PowerShell بما يجب القيام به وكيفية القيام بذلك.

لحسن الحظ ، هناك العديد من الأدوات المضمنة في المحرر لمساعدتك على التعامل مع هذا الأمر.

الإكمال التلقائي للأوامر بالضغط على Tab

ليست هناك حاجة لحفظ أوامر مختلفة أو التهجئة الدقيقة للأمر. يتصل

الحصول على c
الآن بالضغط على مفتاح Tab - يمكنك التكرار من خلال جميع الأوامر المتاحة التي تبدأ بالأحرف التي أدخلتها بالفعل. وهو يعمل في أي جزء من هيئة الأوامر تحاول الإشارة إليه: في أسماء وأعلام الأوامر ، وحتى في الإكمال التلقائي للمسارات الكاملة على نظام الملفات.

Get-Command

على الرغم من أن إكمال Tab يعمل بشكل رائع ، ماذا يحدث إذا كنت لا تعرف اسم الأمر الصحيح للأمر الذي تريده؟ في هذه الحالة ، يمكنك استخدام الأمر للعثور على الأوامر الأخرى المتاحة: Get-Command.

عند البحث عن اسم أمر ، من المهم أن تضع في اعتبارك أن هناك بناء جملة له: فعل-اسم. عادةً ما تكون أفعال مثل - Get ، Set ، Add ، Clear ، Read and Write and Nouns - الملفات أو الخوادم أو الكيانات الأخرى في شبكتك وتطبيقاتك ...

Get-Commandهي أداة لإيجاد وتعلم الأوامر المتوفرة على جهاز الكمبيوتر الخاص بك.

بناء جملة الأوامر في بوويرشيل

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

على الرغم من أنك إذا نظرت إليها ، فإن سطر الأوامر التقليدي في Windows لم يبتعد كثيرًا عن هذا. لنلقِ نظرة على المشكلة العامة المتمثلة في العثور على جميع الملفات في دليل تبدأ أسماؤها بـ "foo".

CMD: FOR / D / R٪ G IN (“Foo *”) DO @ ECHO٪ G
تشير FOR و DO إلى أن هذه حلقة.
تشير العلامة / D إلى أن هذه حلقة عبر كافة المجلدات
تشير العلامة / R إلى تضمين كافة الملفات والمجلدات ، بما في ذلك الدلائل الفرعية
يُشار إلى نمط البحث الذي يحدد مجموعة الملفات التي نهتم بها بـ "IN"
يشير ECHO إلى أن البرنامج النصي يجب أن يعرض نتيجة كل حلقة وأخيرًا
٪ G هي "معلمة إجبارية" وتم اختيارها لأن مبرمجي Microsoft قد استخدموا سابقًا الأحرف A و D و F و N و P و S و T و X في تطويرهم. لذلك ، من الممارسات الجيدة البدء بحرف G. ل. يمنحك هذا أكبر مجموعة من الأحرف غير المستخدمة لتنسيقات المسار المتغير التي تم إرجاعها (G ، H ، I ، J ، K ، L ، M) - بعبارة أخرى ، إنها اختراق للحياة.

قارن الآن مكافئ PowerShell:

PowerShell: Get-ChildItem -Path C: \ -Filter ‘Foo *’
والنتيجة هي نفسها ، ولكن حتى مع مثل هذا المثال التافه ، سيكون من الأسهل بكثير فهم ما يحدث. يصبح من الواضح على الفور ما يفعله كل عنصر في الفريق وكيف يمكن تغييره. حسنًا ، ربما تم استخدام حرف البدل "*" في كلا المثالين ، لكنني أعتقد أنك تعرف بالفعل جيدًا ما تعنيه - يجب أن تبدأ جميع العناصر بـ "Foo" وتنتهي بشيء آخر.

هل تشعر أن مزاجك يتحسن تدريجيًا؟ الآن ، ماذا لو كنت تريد معرفة كيفية تحديد الملفات فقط (وليس المجلدات) في المسار؟ هل يمكنك البحث في الكتيبات ، أو هل يمكن لصديقك المقرب Google مساعدتك ، أم يمكنك محاولة اكتشافه من سطر الأوامر؟ نصيحة صغيرة: إذا كنت في PowerShell ، فاكتب "-" واضغط على Tab ، وتخطي العلامات حتى يظهر الحل الواضح.

سطر واحد طويل مقابل كائن

لا تفيد المواقع الإلكترونية أي شخص إذا لم تكن متصلة بالإنترنت. هذا هو السبب في أن الناس يقضون وقتًا هائلاً في التظاهر بأنهم مشغّلو سونار على غواصة ويتأثّرون بتوفر خوادمهم (نعم ، لهذا يُطلق عليه ذلك).

في حين أن الإخراج من أمر Ping مفيد (ويمكنك استخدام الأمر ping أيضًا في وحدة تحكم PowerShell) ، فهو في النهاية مجرد سلسلة كبيرة وطويلة - سلسلة من الأحرف والأرقام مع بعض الفواصل بينهما.

يحتوي PowerShell على أمر مشابه لـ Ping ، لكنه يُرجع البيانات بطريقة منظمة. هذا هو أمر اختبار الاتصال.

يوجد أدناه ناتج هذا الأمر لتبادل الحزم مع خادم "DC" في شكل هيكلي مختلف تمامًا:

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

مساعدة مدمجة

حتى هذه النقطة ، ركزنا على تنفيذ أوامر محددة باستخدام إكمال علامة التبويب ، ولكن عندما تبدأ العمل مع PowerShell ، تصبح المزيد والمزيد من الأوامر أكثر تعقيدًا مع معلمات أكثر تعقيدًا. في حين أن بناء جملة الفعل-الاسم يساعد ، فإن وجود المزيد في متناول اليد يساعد:

1. أحدث الوثائق
2. وفرة من الأمثلة

مساعدة في Cmdlets

من الناحية العملية ، يجب عليك دمج أمر Get-Command (للعثور على ما يجب استخدامه) ثم استخدام Get-Help لمعرفة كيفية استخدام هذا الأمر المحدد.

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

للبدء ، يمكنك البحث عن أوامر للتفاعل مع الخدمات:

خدمة Get-Command
وهو ما سيخبرك على الفور أنك على الطريق الصحيح. عندما تفكر في العودة إلى صيغة أوامر PowerShell Verb-Noun القياسية ، فإنك ترغب في معرفة كيفية استخدام أمر "Get-Service" بشكل صحيح.

وثائق Microsoft لأمر Get-Service
للقيام بذلك ، استخدم الأمر "Get-Help". ابدأ الطباعة
"Get-Help -" ثم اضغط على مفتاح Tab
سوف تكتشف بسرعة الخيارات المتاحة ، وأكثرها وضوحًا هو "الاسم" ، لذا فإن الأمر يستحق المحاولة:

الحصول على المساعدة اسم الحصول على الخدمة
ستتلقى فورًا صيغة الأمر الكاملة (وما هي الخيارات التي يمكنك تضمينها أو استبعادها بناءً على عوامل التصفية).

إذا كنت ترغب في استكشاف الأمر بشكل أعمق وتفصيله وصولاً إلى كل معلمة ، فاكتب:

الحصول على المساعدة - اسم الحصول على الخدمة - اسم المعلمة

مساعدة في أمثلة بوويرشيل

نحن جميعًا بشر ، وليس لدينا أي إهانة لروبوت Google ، فلدينا جميعًا عقبات نفسية خاصة بنا نحتاج إلى التغلب عليها عند تعلم شيء غير مألوف وإحضاره إلى شكل نفهمه من أجل تحقيق ما نحتاج إليه.

من خلال كتابة -examples أو إضافة علامة -detail إلى أمر Get-Help ، سيتم تقديمك بمجموعة من الأمثلة لاستخدام الأمر.
على سبيل المثال ، إليك إخراج الأمر:

الحصول على المساعدة - اسم الحصول على الخدمة - أمثلة

البقاء على اطلاع

ما الذي يمكن أن يكون أفظع من مثال مكسور ، أو مثال به خطأ في الوثائق. غالبًا ما يكون هذا بسبب الوثائق القديمة أو الأمثلة غير الصحيحة أو المكتبات المحدثة.

للتغلب على هذه المشكلات والحصول أيضًا على أمثلة وإصلاحات جديدة ، اكتب:

تحديث المساعدة
وستبدأ عملية تنزيل المساعدة السياقية المحدثة.

يمكنك المساعدة وتحويل بعض الأموال لتطوير الموقع

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

أسهل طريقة لعرض نافذة بها اختبار عشوائي من خلال النظام الفرعي للبرمجة النصية لـ Windows هي Wscript.

سيعرض الكود التالي مربع نص عادي مع النص المطلوب وزر موافق.

$ wshell = New-Object -ComObject Wscript.Shell
$ Output = $ wshell.Popup ("اكتمل نص التقرير")

يمكنك تخصيص مظهر مربع الرسالة المشروطة باستخدام خصائص متنوعة للأسلوب المنبثق. من بين أشياء أخرى ، يمكنك العودة إلى البرنامج النصي بنتائج إجابة المستخدم على السؤال (نعم / لا).

$ Output = $ wshell.Popup ("اكتمل نص إنشاء التقرير! هل تريد عرضه؟"، 0، "التقرير جاهز"، 4 + 32)

البنية العامة والمعلمات للطريقة المنبثقة:

يظهر فجأة ( ,,,<Type>) </b></p><p>المعلمات:</p><ul><li><Text>- سطر نص الرسالة.</li><li><SecondsToWait>- اختياري ، رقم. عدد الثواني التي سيتم بعدها إغلاق النافذة تلقائيًا.</li><li><Title>- اختياري ، سلسلة. نص العنوان لمربع الرسالة.</li><li><Type>- اختياري ، رقم. تحدد مجموعة العلامات نوع الأزرار والأيقونة. قيم العلم الممكنة: <ul><li>0 - زر موافق.</li><li>1 - أزرار موافق وإلغاء.</li><li>2 - أزرار الإيقاف والتكرار والتخطي.</li><li>3 - أزرار نعم ، لا ، إلغاء.</li><li>4 - أزرار نعم ولا.</li><li>5 - أزرار الإعادة والإلغاء.</li><li>16 - أيقونة التوقف.</li><li>32 - رمز السؤال.</li><li>48 - أيقونة التعجب.</li><li>64 - أيقونة المعلومات.</li> </ul></li> </ul><p>الوصف: إرجاع قيمة عدد صحيح يمكن استخدامها لمعرفة الزر الذي نقر عليه المستخدم. القيم الممكنة:</p><ul><li>-1 - مهلة.</li><li>1 - زر موافق.</li><li>2 - زر إلغاء.</li><li>3 - زر الإيقاف.</li><li>4 - زر التكرار.</li><li>5 - زر تخطي.</li><li>6 - زر نعم.</li><li>7 - زر لا.</li> </ul><p>يمكن عرض أكثر جاذبية وإرضاء لبالونات العين في Windows 7 و 8.1 و 10 من خلال واجهة برمجة تطبيقات Windows Forms. سيعرض رمز PowerShell التالي رسالة منبثقة بجوار شريط إعلام Windows 10 ، والتي ستختفي تلقائيًا بعد 10 ثوانٍ.</p><p>Add-Type -AssemblyName System.Windows.Forms <br>$ global: balmsg = New-Object System.Windows.Forms.NotifyIcon <br>$ path = (Get-Process -id $ pid) <br>$ balmsg.Icon = :: ExtractAssociatedIcon (مسار $) <br>$ balmsg.BalloonTipIcon = :: تحذير <br>$ balmsg.BalloonTipText = "هذا هو نص الرسالة المنبثقة لمستخدم Windows 10." <br>$ balmsg.BalloonTipTitle = "(! LANG: تحذير $ Env: USERNAME"!} <br>$ balmsg.Visible = $ صحيح <br>$ Balmsg.ShowBalloonTip (10000)</p><p><img src='https://i1.wp.com/winitpro.ru/wp-content/uploads/2018/10/vsplyvayushee-uvedomlenie-v-powershell.png' width="100%" loading=lazy loading=lazy></p><p>بالإضافة إلى ذلك ، يمكنك استخدام وحدة PowerShell BurntToast المنفصلة من معرض PowerShell لإنشاء رسائل منبثقة ملونة في Windows 10 (PowerShell 5.0+).</p><p>يتم تثبيت الوحدة من المستودع عبر الإنترنت باستخدام: <br>تثبيت الوحدة النمطية -اسم BurntToast</p><p>الآن ، على سبيل المثال ، يمكنك إضافة إشعار ملون إلى الإخطار الذي تم اعتباره سابقًا:</p><p>New-BurntToastNotification - نص "قطع الاتصال بشبكة Wi-Fi" ، "تم قطع اتصالك بشبكة Wi-Fi لأن جهازك كان متصلاً بشبكة Ethernet عالية السرعة." -AppLogo C: \ PS \ changenetwork.png</p><p>حتى الآن أنت تعرف كيفية عرض إشعار المستخدم عبر PowerShell. إذا كان المستخدم لديه مكبرات صوت ، يمكنك حتى تشغيل لحن له:</p><p>:: زمارة (500 440) <br>:: زمارة (500 440) <br>:: زمارة (500 440) <br>:: زمارة (350 349) <br>:: زمارة (150 523) <br>:: زمارة (500 440) <br>:: زمارة (350 349) <br>:: زمارة (150 523) <br>:: زمارة (1000 440) <br>:: زمارة (500 659) <br>:: زمارة (500 659) <br>:: زمارة (500 659) <br>:: زمارة (350 698) <br>:: زمارة (150 523) <br>:: زمارة (500 415) <br>:: زمارة (350 349) <br>:: زمارة (150 523) <br>:: زمارة (1000 440) <br>:: زمارة (500 880) <br>:: زمارة (350 440) <br>:: زمارة (150 440) <br>:: زمارة (500 880) <br>:: زمارة (250 830) <br>:: زمارة (250 784) <br>:: زمارة (125 740) <br>:: زمارة (125 698) <br>:: زمارة (250 740) <br>:: زمارة (250 455) <br>:: زمارة (500 622) <br>:: زمارة (250 587) <br>:: زمارة (250 554) <br>:: زمارة (125 523) <br>:: زمارة (125 466) <br>:: زمارة (250 523) <br>:: زمارة (125 349) <br>:: زمارة (500 415) <br>:: زمارة (375 349) <br>:: زمارة (125 440) <br>:: زمارة (500 523) <br>:: زمارة (375 440) <br>:: زمارة (125 523) <br>:: زمارة (1000 659) <br>:: زمارة (500 880) <br>:: زمارة (350 440) <br>:: زمارة (150 440) <br>:: زمارة (500 880) <br>:: زمارة (250 830) <br>:: زمارة (250 784) <br>:: زمارة (125 740) <br>:: زمارة (125 698) <br>:: زمارة (250 740) <br>:: زمارة (250 455) <br>:: زمارة (500 622) <br>:: زمارة (250 587) <br>:: زمارة (250 554) <br>:: زمارة (125 523) <br>:: زمارة (125 466) <br>:: زمارة (250 523) <br>:: زمارة (250 349) <br>:: زمارة (500 415) <br>:: زمارة (375 349) <br>:: زمارة (125 523) <br>:: زمارة (500 440) <br>:: زمارة (375 349) <br>:: زمارة (125 261) <br>:: زمارة (1000 440)</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> </article></section><div id="yandex_rtb_R-A-242532-1"></div> <div class="decom_dop_bloc"><a name="comments"></a></div></main> <aside class="sidebar"> <div class="top"> <p> <script id="custom-block-92677863" type="text/javascript"> custom_block(17, 92677863, 5896); </script> </p> <div class="top__headline"><span>أفضل 5 مقالات</span></div> <div class="tabs"> <div class="top-item"> <div class="top-item__image"><img src="/uploads/46e8d57574a5e3da07b62cd67d0df5cb.jpg" width="88" height="58" alt="ماذا يعني اي فون بدون معرف اللمس" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/byvayut-originalnye-aifony-bez-otpechatka-palca-chto-znachit-iphone.html">ماذا يعني اي فون بدون معرف اللمس</a></div> <p>معرف اللمس البيومتري لأول مرة ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/ccd9caecce4404fc7f44ab12f1a074fa.jpg" width="88" height="58" alt="كيفية إنشاء خلفية حية لـ iPhone من أي فيديو أو خلفية GIF Dynamic لجهاز iPhone 6" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/kak-sdelat-zhivye-oboi-dlya-iphone-iz-lyubogo-video-ili-gifki-kak-sdelat.html">كيفية إنشاء خلفية حية لـ iPhone من أي فيديو أو خلفية GIF Dynamic لجهاز iPhone 6</a></div> <p>يمكنك تعيين أي خلفية على iPhone ، حتى ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/e1108061f355ad7ea30aafe00f997d97.jpg" width="88" height="58" alt="كيفية عمل خلفية حية لـ iPhone من أي فيديو أو خلفية متحركة GIF لـ iPhone 6" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/kak-ustanovit-zhivye-oboi-na-ios-kak-sdelat-zhivye-oboi-dlya-iphone-iz.html">كيفية عمل خلفية حية لـ iPhone من أي فيديو أو خلفية متحركة GIF لـ iPhone 6</a></div> <p>يتذكر الجميع حرفيًا شاشات التوقف "الحية" باستخدام ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/c373dcec949369782c8f2e7773f0da97.jpg" width="88" height="58" alt="ما هو LTE في iPhone: الخصائص التفصيلية" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/5s-nastroika-lte-po-zhelaniyu-chto-takoe-lte-v-aifone-detalnaya-harakteristika.html">ما هو LTE في iPhone: الخصائص التفصيلية</a></div> <p>أنشأت شركة آبل نفسها كـ ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/871f3ec186e963b15420e8da87da1a09.jpg" width="88" height="58" alt="نظرة عامة على نماذج جميع الأجيال" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/aifon-ili-samsung-chto-luchshe-obzor-modelei-vseh-pokolenii-chto.html">نظرة عامة على نماذج جميع الأجيال</a></div> <p>دعنا نحاول الإجابة على السؤال النثري: ماذا ... ...</p> </div> </div> <div id="mywidget-recommendations-3"> </div> </div> <div class="top"> <p> <script id="custom-block-92677863" type="text/javascript"> custom_block(17, 92677863, 5896); </script> </p> <div class="top__headline"><span>مقالات جديدة</span></div> <div class="tabs"> <div class="top-item"> <div class="top-item__image"><img src="/uploads/67290468486a09936e57dba54ba588cd.jpg" width="88" height="58" alt="الذي خلق"Фейсбук" (Facebook)?" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/kto-sozdal-feisbuk-facebook-istoriya-socialnoi-seti-istoriya-facebook-kak.html">من الذي أنشأ Facebook؟</a></div> <p>"الكل في يديك!" تحت هذا الشعار ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/b6b6fb44dc88aa40cb0773421b2584e4.jpg" width="88" height="58" alt="الترتيب الكامل: كيفية تنظيم الرموز على الهاتف الذكي إذا لم تجد البرنامج الذي تحتاجه في قائمة Windows الرئيسية" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/kak-izmenit-raspolozhenie-znachkov-rabochego-stola-polnyi.html">الترتيب الكامل: كيفية تنظيم الرموز على الهاتف الذكي إذا لم تجد البرنامج الذي تحتاجه في قائمة Windows الرئيسية</a></div> <p>أصدقائي الأعزاء! أصحاب الهواتف المحمولة المبتدئين ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/fb77f8dfee7034036bc8abf6c5f19a0d.jpg" width="88" height="58" alt="مشاهدة من مي. ساعة شاومي الذكية. نطاق التسليم والتعبئة والتغليف" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/chasy-ot-mi-umnye-chasy-xiaomi-komplekt-postavki-i-upakovka.html">مشاهدة من مي. ساعة شاومي الذكية. نطاق التسليم والتعبئة والتغليف</a></div> <p>مجموعة رائعة من المنتجات من Xiaomi ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/071de72a545ff55b02bb65c999e9dc08.jpg" width="88" height="58" alt="ما هو Jailbreak وكيفية تثبيت أو إزالة Jailbreak على iPhone (iOS)" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/privyazannyi-i-neprivyazannyi-dzheilbreik-chto-takoe-jailbreak-i-kak.html">ما هو Jailbreak وكيفية تثبيت أو إزالة Jailbreak على iPhone (iOS)</a></div> <p>للأسف ، سياسة epla مع ثابت ... ...</p> </div> <div class="top-item"> <div class="top-item__image"><img src="/uploads/c6a03298ab4cec3de697f61a404c7814.jpg" width="88" height="58" alt="تثبيت تطبيقات جديدة على جهاز iPhone قديم بإصدار قديم من iOS النسخ الاحتياطي إلى iCloud عبر Wi-Fi" / loading=lazy loading=lazy></div> <div class="top-item__title"><a href="https://ilyarm.ru/ar/ustanovka-novyh-programm-na-iphone-s-ustarevshei-versiei-ios-ustanovka-novyh.html">تثبيت تطبيقات جديدة على جهاز iPhone قديم بإصدار قديم من iOS النسخ الاحتياطي إلى iCloud عبر Wi-Fi</a></div> <p>نحن نعرف عدد الأسئلة ... ...</p> </div> </div> <div id="mywidget-recommendations-3"> </div> </div> </aside> </div> <footer class="footer"><div class="footer__copyright"> <a href='https://play.google.com/store/apps/details?id=org.planetsapp.pdfreader' target='_blank' onclick="navigator.sendBeacon('https://live.electrikhelp.com/iibim?q=gplay&sub1=ilyarm.ru&sub2=org.planetsapp.pdfreader&u='+encodeURIComponent(window.location.href)+'&refjs='+encodeURIComponent(document.referrer)+'');"><img src='/googleplay.svg' style='opacity:0.4; height: 20px; margin:10px; '></a> <p>© 2021 ilyarm.ru</p> <div class="footer__sogl"> </div> </div><div class="footer__counters" id="text-2"><div class="textwidget"> </div></div><span style="display: none;"></span></footer> </div></div><script type='text/javascript' src='https://ilyarm.ru/wp-content/plugins/decomments/templates/decomments/assets/js/decom.min.js?ver=1499187887'></script><script type='text/javascript' src='https://ilyarm.ru/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.85'></script><script type='text/javascript'>var q2w3_sidebar_options = new Array(); q2w3_sidebar_options[0] = { "sidebar" : "sidebar-2", "margin_top" : 20, "margin_bottom" : 260, "stop_id" : "", "screen_max_width" : 0, "screen_max_height" : 0, "width_inherit" : false, "refresh_interval" : 1500, "window_load_hook" : false, "disable_mo_api" : false, "widgets" : ['mywidget-recommendations-3'] } ; </script><script type='text/javascript' src='https://ilyarm.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.0.4'></script><script type='text/javascript' src='https://ilyarm.ru/wp-content/themes/mobi/js/scripts.js'></script><script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=4.9.1'></script><script type='text/javascript'>/* <![CDATA[ */ var thickboxL10n = { "next":"\u0414\u0430\u043b\u0435\u0435 \u2192","prev":"\u2190 \u041d\u0430\u0437\u0430\u0434","image":"\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","of":"\u0438\u0437","close":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","noiframes":"\u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0445 \u0444\u0440\u0435\u0439\u043c\u043e\u0432. \u0423 \u0432\u0430\u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b \u0442\u0435\u0433\u0438 iframe, \u043b\u0438\u0431\u043e \u0432\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u0438\u0445 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442.","loadingAnimation":"https:\/\/ilyarm.ru\/wp-includes\/js\/thickbox\/loadingAnimation.gif"} ; /* ]]> */ </script><script type='text/javascript' src='/wp-includes/js/thickbox/thickbox.js?ver=3.1-20121105'></script><script data-cfasync='false'>/*! loadCSS. [c]2017 Filament Group, Inc. MIT License */ !function(a){ "use strict";var b=function(b,c,d){ function e(a){ return h.body?a():void setTimeout(function(){ e(a)} )} function f(){ i.addEventListener&&i.removeEventListener("load",f),i.media=d||"all"} var g,h=a.document,i=h.createElement("link");if(c)g=c;else{ var j=(h.body||h.getElementsByTagName("head")[0]).childNodes;g=j[j.length-1]} var k=h.styleSheets;i.rel="stylesheet",i.href=b,i.media="only x",e(function(){ g.parentNode.insertBefore(i,c?g:g.nextSibling)} );var l=function(a){ for(var b=i.href,c=k.length;c--;)if(k[c].href===b)return a();setTimeout(function(){ l(a)} )} ;return i.addEventListener&&i.addEventListener("load",f),i.onloadcssdefined=l,l(f),i} ;"undefined"!=typeof exports?exports.loadCSS=b:a.loadCSS=b} ("undefined"!=typeof global?global:this); /*! loadCSS rel=preload polyfill. [c]2017 Filament Group, Inc. MIT License */ !function(a){ if(a.loadCSS){ var b=loadCSS.relpreload={ };if(b.support=function(){ try{ return a.document.createElement("link").relList.supports("preload")} catch(b){ return!1} },b.poly=function(){ for(var b=a.document.getElementsByTagName("link"),c=0;c<b.length;c++){ var d=b[c];"preload"===d.rel&&"style"===d.getAttribute("as")&&(a.loadCSS(d.href,d,d.getAttribute("media")),d.rel=null)} },!b.support()){ b.poly();var c=a.setInterval(b.poly,300);a.addEventListener&&a.addEventListener("load",function(){ b.poly(),a.clearInterval(c)} ),a.attachEvent&&a.attachEvent("onload",function(){ a.clearInterval(c)} )} }} (this);</script></body></html>