Hostwinds مدونة

نتائج البحث عن:


قوة PowerShell صورة مميزة

قوة PowerShell

بواسطة: Karlito Bonnevie  /  أبريل 29, 2022


عند مقارنة أوامر واجهة سطر أوامر Windows التقليدية (CLI) مع أدوات Linux CLI ، لا توجد مقارنة.لا يوجد شيء في Windows CLI التقليدية (CD ، DIR ، COPY ، DEL ، إلخ) قوي مثل AWK ، SED ، HEAD ، TEL ، TSORT ، UNIQ ، SPLIT ، إلخ.CLI هي أن معالجة دفق النص مطلوب غالبًا للحصول على النتيجة المرجوة.على سبيل المثال ، قل أنك ترغب في عنوان IPv6 لجهاز Linux الخاص بك.قد يكون نهج واحد:

ifconfig | grep inet6 | head -1 | awk '{print $2}'

يمسك أمر GREP بسطور متعددة تحتوي على "inet6" ، ويستحوذ الأمر على أول هذه ، ويطبع AWK الحقل الثاني (أي السلسلة الثانية) في السطر ، مما ينتج عنه قيمة IPv6 المطلوبة.بقعة جميلة حقًا لكننا نعالج تدفقات النص ، والتي يمكن أن تصبح معقدة للغاية.على سبيل المثال ، قل أنك ترغب في القيام بما يلي:

  • قائمة جميع عمليات النظام ، ثم
  • فرز القائمة بترتيب تنازلي عن طريق عدد المقبض تليها وقت استخدام وحدة المعالجة المركزية ، ثم
  • عرض القائمة كجدول يوضح اسم العملية ، وعدد المقبض ، ووقت وحدة المعالجة المركزية ، ومسار ملف العملية الكامل؟

PowerShell للقيام بذلك واضح إلى حد ما:

Get-Process | Sort-Object -Property HandleCount, CPU | Format-Table -Property Name, HandleCount, CPU, Path

وهنا مقتطف من الإخراج.كما يتبين ، يتم فرز الجدول عن طريق عدد المقبض ، ثم عن طريق وقت وحدة المعالجة المركزية (لاحظ أوقات وحدة المعالجة المركزية الهبوطية للعمليات الثلاث باستخدام 18 مقابض):

Name                    HandleCount        CPU Path
----                    -----------        --- ----
chrome                          165     375.13 /opt/google/chrome/chrome
pwsh                            128       81.1 /opt/microsoft/powershell/7/pwsh
chrome                           52     216.36 /opt/google/chrome/chrome
chrome                           44     151.13 /opt/google/chrome/chrome
Xvnc                             33     254.66 /usr/bin/Xvnc
dbus-daemon                      31       0.23 /usr/bin/dbus-daemon
chrome                           23       0.45 /opt/google/chrome/chrome
xfce4-terminal                   18      16.39 /usr/bin/xfce4-terminal
xfce4-session                    18       0.12 /usr/bin/xfce4-session
xrdp-chansrv                     18       0.05 /usr/sbin/xrdp-chansrv
xfdesktop                        15       4.39 /usr/bin/xfdesktop
xfce4-power-manager              15       0.39 /usr/bin/xfce4-power-manager
chrome                           15       0.03 /opt/google/chrome/chrome

الآن قل ذلك بالإضافة إلى ما سبق ، هل ترغب في التجميع عن طريق عدد المقبض؟لا يمكن أن يصبح الأمر أسهل بكثير ، فقط أضف وسيطة -GroupBy HandleCount إلى CMDLET TABLET TABLE (نعم ، هذا ما يطلق عليهم):

Get-Process | Sort-Object -Property HandleCount, CPU | Format-Table -Property Name, HandleCount, CPU, Path -GroupBy HandleCount

إليك مقتطف من هذا الإخراج:

   HandleCount: 18

Name           HandleCount   CPU Path
----           -----------   --- ----
xfce4-terminal          18 16.68 /usr/bin/xfce4-terminal
xfce4-session           18  0.12 /usr/bin/xfce4-session
xrdp-chansrv            18  0.05 /usr/sbin/xrdp-chansrv

   HandleCount: 15

Name                HandleCount  CPU Path
----                -----------  --- ----
xfdesktop                    15 4.43 /usr/bin/xfdesktop
xfce4-power-manager          15  0.4 /usr/bin/xfce4-power-manager
chrome                       15 0.03 /opt/google/chrome/chrome

لاحظ أنه لا يوجد تلميح لمعالجة دفق النص في أي من أمثلة PowerShell هذه.ذلك لأن PowerShell يمرر الكائنات (مع خصائص مختلفة) بين CMDlets وليس تدفقات البيانات.إذا كنت ترغب حقًا في ذلك ، فلا يزال بإمكانك التعامل مع تدفقات النص مع cmdlet المحدد ، ولكن نادراً ما تكون هناك حاجة للقيام بذلك.بالمناسبة ، في المثال الأخير ، يمكنك التجميع من خلال أي خاصية كائن Get-Process ويمكنك استخدام Get-Process |احصل على عضو لمعرفة بسرعة ما هي الخصائص المتاحة.

صوت مثير للاهتمام؟أتساءل كيف تبدأ؟ثم انظر باستخدام PowerShell مع Linux.

كتب بواسطة Karlito Bonnevie  /  أبريل 29, 2022