Hostwinds Blog

Suchergebnisse für:


Die Kraft der Powershell Ausgewähltes Bild

Die Kraft der Powershell

durch: Karlito Bonnevie  /  April 29, 2022


Beim Vergleich der Befehle der traditionellen Windows-Befehlszeilenschnittstelle (CLI) mit denen eines Linux-CLI gibt es wirklich keinen Vergleich.Es gibt nichts in der traditionellen Windows -CLI (CD, Dir, Copy, Del usw.), so mächtig wie awk, sed, Kopf, Schwanz, Tsort, Uniq, Split usw., das heißt, eines der gemeinsamen Probleme mit dem LinuxCLI ist, dass eine Textstromverarbeitung häufig erforderlich ist, um das gewünschte Ergebnis zu erzielen.Angenommen, Sie möchten die IPv6 -Adresse Ihres Linux -Computers.Ein Ansatz könnte sein:

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

Der GREP -Befehl greift mehrere Zeilen mit "INET6", dem Kopfbefehl, der erste davon und awk druckt das zweite Feld (d. H. Die zweite Zeichenfolge) in der Zeile und erzeugt den gewünschten IPv6 -Wert.Ziemlich glatt wirklich, aber wir verarbeiten Textströme, die schnell ziemlich kompliziert werden können.Sagen Sie zum Beispiel, Sie möchten Folgendes tun:

  • Listen Sie dann alle Systemprozesse auf
  • Sortieren Sie die Liste in absteigender Reihenfolge nach Griffzählung, gefolgt von der CPU -Nutzungszeit, dann
  • Zeigen Sie die Liste als Tabelle an, die den Prozessnamen, die Anzahl der Zähler, die CPU -Zeit und den vollständigen Prozessdateipfad verarbeiten?

Die Powershell, dies zu tun, ist ziemlich einfach:

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

Und hier ist ein Ausschnitt der Ausgabe.Wie zu sehen ist, wird die Tabelle nach der Griffzahl sortiert und dann nach CPU -Zeit (beachten Sie die absteigende CPU -Zeiten für die drei Prozesse mit 18 Griffen):

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

Sagen Sie nun, dass Sie zusätzlich zu den oben genannten nach Griffzählungen gruppieren möchten?Es könnte nicht viel einfacher werden. Fügen Sie einfach das Argument für das HandleCount -Argument für das Format -Tisch -CMDLET hinzu (ja, das ist, was sie genannt haben):

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

Hier ist ein Ausschnitt dieser Ausgabe:

   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

Beachten Sie, dass in keiner dieser PowerShell -Beispiele ein Hinweis auf die Verarbeitung von Textstromverarbeitung vorhanden sind.Das liegt daran, dass PowerShell Objekte (mit verschiedenen Eigenschaften) zwischen CMDLets und nicht Datenströmen übergibt.Wenn Sie wirklich wollten, können Sie noch Textströme mit dem Select-String-CMDLet manipulieren, aber es besteht selten die Notwendigkeit, dies zu tun.Übrigens können Sie im letzten Beispiel jede Eigenschaft Get-Process-Objekt gruppieren und Get-Process | verwendenTreffen Sie, um schnell zu sehen, welche Eigenschaften verfügbar sind.

Faszinierend klingen?Sie fragen sich, wie man anfängt?Dann sehen Verwenden von PowerShell mit Linux.

Geschrieben von Karlito Bonnevie  /  April 29, 2022