PowerShell es una plataforma de línea de comandos y secuencias de comandos diseñada para ayudar a los administradores de sistemas a administrar y automatizar tareas en un entorno Windows.
Basado en .NET Framework, PowerShell tiene mejores funcionalidades que la línea de comandos tradicional. Es compatible con cmdlets, objetos y canalizaciones, lo que permite a los usuarios realizar tareas complejas con facilidad.
PowerShell es una herramienta muy importante en la administración de Windows. Con las funciones existentes, los administradores pueden:
- Gestione los sistemas de forma más eficiente sin necesidad de utilizar interfaces gráficas.
- Automatice tareas rutinarias como la gestión de servicios, la configuración del sistema o la supervisión del rendimiento.
- Reduzca las posibilidades de error humano mediante el uso de scripts estandarizados.
PowerShell no solo aumenta la productividad, sino que también proporciona más flexibilidad para resolver problemas directamente, incluso en entornos de sistemas grandes y complejos. Esto lo convierte en una herramienta de referencia para los administradores modernos que necesitan una solución rápida y precisa.
¿Qué son los cmdlets?
Los cmdlets son pequeños programas que se crean para realizar tareas específicas en PowerShell. Sirven como herramienta para administrar y automatizar varios aspectos del sistema operativo Windows.
Los cmdlets se escriben en forma de clases .NET, normalmente mediante C. Los cmdlets se pueden incluir en PowerShell o formar parte de otras aplicaciones y servicios, como las características de VMware o Windows Server. Con los cmdlets, los usuarios pueden recuperar fácilmente información, cambiar la configuración y realizar otras operaciones.
Ejemplos de comandos populares
Dos ejemplos de cmdlets de uso común son:
1. Get-Process
Estos cmdlets se usan para obtener información sobre todos los procesos que se están ejecutando en el sistema. Por ejemplo, al ejecutar el siguiente comando, se mostrará una lista de todos los procesos activos:
Get-Process2. Get-Service
Estos cmdlets se usan para obtener información sobre todos los servicios enumerados en el sistema. Con este comando, el usuario puede ver el estado del servicio (si está en ejecución o detenido):
Get-ServiceVentajas de usar la sintaxis sustantivo-verbo en cmdlets
Una de las características más destacadas de los cmdlets es el uso estricto de la sintaxis noun-verb. Esto significa que cada cmdlet se denomina con un patrón claro, donde la primera parte (sustantivo) indica el objeto administrado y la segunda parte (verbo) indica la acción realizada en el objeto. Ejemplos:
- Get: Recuperación de información.
- Set: Cambie la configuración.
- Remove: Eliminar un objeto.
Entre las ventajas de esta sintaxis se incluyen:
- Los usuarios pueden encontrar fácilmente otros cmdlets relevantes si comprenden el patrón de nomenclatura.
- La sintaxis coherente ayuda a los nuevos usuarios a aprender y usar cmdlets más rápidamente.
- Los nombres claros de los cmdlets hacen que los scripts sean más fáciles de leer y entender.
Objetos en PowerShell
En PowerShell, un objeto es una estructura de datos que describe una entidad específica de un sistema, como un archivo, un proceso o un servicio. Cada objeto tiene properties (atributos) y methods (métodos) que proporcionan información y funciones relacionadas con esa entidad.
Las propiedades son las características de un objeto, mientras que los métodos son acciones que se pueden realizar en un objeto. Por ejemplo, un objeto de proceso puede tener propiedades como el nombre del proceso, el uso de CPU y el estado.
Cómo Get-Process genera objetos con propiedades como el uso de CPU
Al ejecutar el cmdlet Get-Process, PowerShell genera un objeto que representa todos los procesos que están activos en el sistema. Cada uno de estos objetos de proceso tiene varias propiedades, entre las que se incluyen:
- Name: El nombre del proceso.
- Id: Identificación única para el proceso.
- CPU: Uso de CPU por procesos.
Ejemplo de comando:
Get-ProcessEste comando le dará una lista de objetos de proceso y, si desea ver más información sobre uno de los objetos, puede usar el cmdlet Get-Member para averiguar las propiedades y los métodos que existen:
Get-Process | Get-Member

Esto mostrará todas las propiedades y métodos del objeto generado por el Get-Process, incluido el uso de la CPU.
Beneficios de los objetos para la automatización de tareas administrativas
El uso de objetos en PowerShell tiene muchas ventajas para la automatización de tareas administrativas:
- Con los objetos, los administradores pueden acceder fácilmente a los datos y modificarlos sin tener que realizar un procesamiento de texto complejo. Esto acelera la gestión de la información y mejora la precisión.
- Los objetos hacen que los scripts de PowerShell sean más claros y fáciles de entender. Los administradores pueden utilizar directamente las propiedades de los objetos en el script para realizar acciones específicas.
- PowerShell permite a los usuarios conectar cmdlets a través de canalizaciones, donde la salida de un cmdlet se puede usar como entrada para otros cmdlets. Esto facilita el procesamiento de datos de forma secuencial y eficiente.
- Dado que PowerShell se basa en .NET, cada objeto de PowerShell es un objeto de .NET. Proporciona acceso a una amplia gama de métodos y propiedades, ampliando las capacidades de gestión del sistema.
Beneficios de los objetos para la automatización de tareas administrativas
El uso de objetos en PowerShell tiene muchas ventajas para la automatización de tareas administrativas:
1. Facilidad de manipulación de datos
Puede filtrar, ordenar o modificar los datos fácilmente. Por ejemplo:
Get-Process | Where-Object {$_.CPU -gt 5}Este comando solo mostrará los procesos con más del 5% de uso de la CPU.
2. Integración con otros cmdlets
Los objetos se pueden pasar a otros cmdlets a través del pipeline, lo que permite la creación de scripts complejos. Ejemplo:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5Este comando muestra los 5 procesos con el mayor uso de CPU.
3. Eficiencia del guión
Con los objetos, puede crear scripts más precisos y eficientes, lo que reduce el riesgo de errores frecuentes en el análisis de texto sin procesar.
Uso de canalizaciones para la automatización
Pipeline es una gran característica de PowerShell que le permite transmitir resultados de un cmdlet a otro. Este concepto utiliza el símbolo | (pipe) para conectar cmdlets, de modo que pueda crear un proceso de automatización más eficiente y flexible.
En PowerShell, las canalizaciones sirven para hacer fluir objects from un cmdlet a otro. Símbolo | Separe los cmdlets y permita que los resultados del primer cmdlet se pasen al segundo cmdlet sin almacenar datos temporales.
Un ejemplo sencillo:
Get-Process | Sort-Object CPU -Descending- Get-Process: Recupera una lista de todos los procesos activos en el sistema.
- Sort-Object CPU -Descending: Ordena los procesos según el uso de la CPU desde el más alto.
El resultado es una lista de procesos que se han ordenado por uso de CPU.
Agrupación de procesos en función del uso de memoria virtual
Por ejemplo, supongamos que desea saber qué aplicaciones utilizan más Virtual Memory (VM) y agrupar los procesos por la empresa que las creó. Estos son los pasos:
- Utilice Get-Process para ejecutar todos los procesos.
- Ordene los procesos por uso de máquina virtual.
- Tome un número específico de procesos, como los 10 principales.
- Agrupe los procesos por Company propiedades.
El código completo:
Get-Process |
Sort-Object VM -Descending |
Select-Object -First 10 |
Group-Object Company- Sort-Object VM -Descending: Ordena los procesos en función del uso Virtual Memory desde el más alto.
- Select-Object -First 10: Seleccione los 10 procesos principales con el mayor uso de VM.
- Group-Object Company: Agrupa los procesos por el nombre de la empresa que los creó.
La salida mostrará la Company más alta mana yang memiliki proses dengan penggunaan Virtual Memory.
Cómo combinar cmdlets para soluciones más complicadas
Las canalizaciones facilitan la combinación de cmdlets y la creación de soluciones más complejas sin necesidad de escribir código difícil. Por ejemplo, si desea encontrar un proceso que use una CPU alta y detenerlo, puede usar la siguiente canalización:
Get-Process |
Where-Object {$_.CPU -gt 50} |
Stop-Process- Where-Object {$_.CPU -gt 50}: Filtra los procesos que tienen más del 50% de uso de CPU.
- Stop-Process: Detiene el proceso filtrado.
Esta canalización le permite automatizar tareas con pasos claros y organizados. También puede agregar parámetros para que la solución sea más específica, como enviar un informe de los resultados:
Get-Process |
Where-Object {$_.CPU -gt 50} |
Export-Csv -Path “HighCPUProcesses.csv”Esta canalización almacenará los datos del proceso intensivo de CPU en un archivo CSV.
Automatización con PowerShell
Un cmdlet muy útil en PowerShell es Get-WindowsOptionalFeature. Este cmdlet permite a los usuarios ver las características opcionales disponibles en Windows, incluido su estado (ya sea habilitado o deshabilitado). Con estos cmdlets, los administradores pueden administrar y auditar fácilmente las características existentes.
Para mostrar todas las funciones opcionales en Windows, puede ejecutar el siguiente comando:
Get-WindowsOptionalFeature -OnlineEste comando generará una lista de objetos que representan cada característica opcional, completa con propiedades como FeatureName, State y una descripción de la característica.
Pasos para crear un script simple para la automatización
Estos son los pasos para crear un script simple que use Get-WindowsOptionalFeature para auditar y habilitar automáticamente ciertas características:
- Ejecute PowerShell con privilegios de administrador para asegurarse de que tiene los permisos necesarios.
- Use el cmdlet Get-WindowsOptionalFeature para obtener una lista de todas las características opcionales.
$features = Get-WindowsOptionalFeature -En línea- Por ejemplo, si desea comprobar si la función “TelnetClient” está habilitada o no, puede filtrar los resultados.
$telnetFeature = $features | Objeto-donde: { $_. FeatureName -eq 'TelnetClient' }- Si la característica no está activa, puede habilitarla mediante el cmdlet Enable-WindowsOptionalFeature.
if ($telnetFeature.State -eq 'Disabled') {
Enable-WindowsOptionalFeature -Online -FeatureName 'TelnetClient' -All
Write-Host “TelnetClient feature has been enabled.”
} else {
Write-Host “TelnetClient feature is now active.”
}- Guarde este script como un archivo .ps1, por ejemplo, EnableTelnet.ps1, y ejecútelo en PowerShell.

