Hostwinds Blog

Resultados de búsqueda para:


El poder de PowerShell Foto principal

El poder de PowerShell

por: Karlito Bonnevie  /  abril 29, 2022


Al comparar los comandos de la interfaz tradicional de la línea de comandos de Windows (CLI) con los de una CLI de Linux, realmente no hay comparación.No hay nada en el CLI tradicional de Windows (CD, Dir, Copy, Del, etc.) tan poderoso como Awk, Sed, Head, Tail, Tsort, Uniq, Split, etc. Dicho, uno de los problemas comunes con el LinuxCLI es que el procesamiento de flujo de texto a menudo se requiere para obtener el resultado deseado.Por ejemplo, digamos que le gustaría la dirección IPv6 de su máquina Linux.Un enfoque podría ser:

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

El comando GREP toma múltiples líneas que contienen "Inet6", el comando Head toma el primero de estos, y AWK imprime el segundo campo (es decir, la segunda cadena) en la línea, produciendo el valor IPv6 deseado.Bastante muy resbaladizo, pero estamos procesando flujos de texto, lo que puede volverse bastante complicado.Por ejemplo, digamos que le gustaría hacer lo siguiente:

  • Enumere todos los procesos del sistema, luego
  • Ordene la lista en orden descendente por recuento de identificadores seguido de tiempo de uso de la CPU, luego
  • Vea la lista como una tabla que muestra el nombre del proceso, el recuento de manijas, el tiempo de la CPU y la ruta completa del archivo de proceso?

El PowerShell para hacer esto es bastante sencillo:

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

Y aquí hay un fragmento de la salida.Como se puede ver, la tabla se clasifica mediante el recuento de manijas, luego por tiempo de CPU (tenga en cuenta los tiempos de CPU descendentes para los tres procesos usando 18 manijas):

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

Ahora diga que además de lo anterior, ¿le gustaría agrupar por el conteo de manejo?No podría ser mucho más fácil, solo agregue el argumento HandLecount -groupby al cmdlet de la mesa de formato (sí, así se llaman):

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

Aquí hay un fragmento de esa salida:

   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

Tenga en cuenta que no hay un toque de procesamiento de flujo de texto en ninguno de estos ejemplos de PowerShell.Esto se debe a que PowerShell pasa objetos (con varias propiedades) entre cmdlets y no flujos de datos.Si realmente quiso, aún puede manipular las transmisiones de texto con el cmdlet de cuerda de selección, pero rara vez es necesario hacerlo.Por cierto, en el último ejemplo, puede agrupar por cualquier propiedad de objetos Get-Process y puede usar Get-Process |Obtener miembro para ver rápidamente qué propiedades están disponibles.

¿Suena intrigante?¿Se pregunta cómo comenzar?Luego ver Usando PowerShell con Linux.

Escrito por Karlito Bonnevie  /  abril 29, 2022