Hostwinds Blog

Résultats de recherche pour:


Le pouvoir de PowerShell L'image sélectionnée

Le pouvoir de PowerShell

par: Karlito Bonnevie  /  avril 29, 2022


Lorsque vous comparez les commandes de l'interface de ligne de commande Windows traditionnelle (CLI) avec celles d'une CLI Linux, il n'y a vraiment aucune comparaison.Il n'y a rien dans le CLI Windows traditionnel (CD, Dir, Copy, Del, etc.) aussi puissant que awk, sed, tête, queue, Tsort, Uniq, Split, etc. Cela dit, l'un des problèmes courants avec le LinuxLa CLI est que le traitement du flux de texte est souvent nécessaire pour obtenir le résultat souhaité.Par exemple, disons que vous souhaitez l'adresse IPv6 de votre machine Linux.Une approche pourrait être:

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

La commande grep saisit plusieurs lignes contenant "INET6", la commande Head en saisit le premier, et AWK imprime le deuxième champ (c'est-à-dire la deuxième chaîne) dans la ligne, produisant la valeur IPv6 souhaitée.Assez lisse vraiment, mais nous traitons des flux de texte, ce qui peut rapidement devenir assez compliqué.Par exemple, disons que vous aimeriez faire ce qui suit:

  • Énumérez tous les processus système, puis
  • Triez la liste dans l'ordre descendant par comptage des manches suivi du temps d'utilisation du processeur, puis
  • Affichez la liste comme un tableau affichant le nom du processus, le nombre de manches, le temps du processeur et le chemin complet du fichier de processus?

Le PowerShell pour le faire est assez simple:

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

Et voici un extrait de la sortie.Comme on peut le voir, le tableau est trié par le nombre de poignées, puis par le temps du processeur (notez les temps de processeurs descendants pour les trois processus en utilisant 18 poignées):

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

Maintenant, dites qu'en plus de ce qui précède, vous aimeriez vous regrouper par le nombre de poignées?Cela ne pouvait pas être beaucoup plus facile, il suffit d'ajouter l'argument de HandleCount-GroupeBy à la commande de format-table (oui, c'est comme ça qu'ils appellent):

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

Voici un extrait de cette sortie:

   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

Notez qu'il n'y a pas de soupçon de traitement de flux de texte dans aucun de ces exemples PowerShell.En effetSi vous le vouliez vraiment, vous pouvez toujours manipuler des flux de texte avec l'attaque de sélection de sélection, mais il y a rarement un besoin de le faire.Soit dit en passant, dans le dernier exemple, vous pouvez vous regrouper par n'importe quelle propriété d'objet Get-Process et vous pouvez utiliser Get-Process |Get Member pour voir rapidement quelles propriétés sont disponibles.

Cela est intrigant?Vous vous demandez comment commencer?Puis voir Utilisation de PowerShell avec Linux.

Écrit par Karlito Bonnevie  /  avril 29, 2022