¿Que es PowerShell?
PowerShell es un shell de línea de comandos y un lenguaje de scripting desarrollado por Microsoft. A diferencia de las interfaces de línea de comandos más antiguas como cmd.exe
, PowerShell está construido sobre el .NET Framework, lo que le da un poder y una flexibilidad mucho mayores. Su objetivo principal es la automatización y la gestión de la configuración en entornos Windows, aunque ahora también está disponible para Linux y macOS.
Características clave
PowerShell se diferencia de otros shells por varias razones:
Orientado a objetos: En lugar de manipular texto plano, PowerShell trabaja con objetos .NET. Esto significa que cuando ejecutas un comando, la salida no es solo texto, sino una colección estructurada de objetos con propiedades y métodos. Esto facilita filtrar, ordenar y manipular la información de manera mucho más eficiente.
Por ejemplo, el comando
Get-Process
no solo muestra una lista de procesos, sino que devuelve una lista de objetos que representan cada proceso. Puedes acceder a las propiedades de estos objetos, como elId
o elName
, y luego usar otros comandos para interactuar con ellos.Cmdlets (Comandos): Los comandos de PowerShell se llaman cmdlets (pronunciado command-lets). Siguen una estructura de "Verbo-Sustantivo" (
Verbo-Noun
) que los hace intuitivos de usar. Por ejemplo:Get-Help
(obtener ayuda)Set-Location
(establecer ubicación)New-Item
(crear un nuevo elemento)Stop-Process
(detener un proceso)
Automatización: Es una herramienta fundamental para la automatización de tareas administrativas. Puedes escribir scripts para automatizar la creación de usuarios, la gestión de servidores, la instalación de software y la configuración de sistemas. Esto es especialmente útil en grandes redes corporativas.
Usos comunes
PowerShell es ampliamente utilizado por administradores de sistemas y profesionales de TI para:
Gestión del sistema operativo: Instalar actualizaciones, gestionar permisos de archivos y carpetas, y monitorear el rendimiento del sistema.
Administración de Active Directory: Crear y modificar cuentas de usuario, grupos y unidades organizativas.
Gestión de servicios de Microsoft: Configurar y administrar servicios como Exchange, SQL Server y SharePoint.
Scripting y automatización: Escribir scripts para automatizar tareas repetitivas y estandarizar la configuración de sistemas.
Aquí tienes algunos ejemplos de comandos y scripts de PowerShell para diferentes tareas comunes.
1. Gestión de archivos y carpetas 📂
Estos cmdlets son el equivalente a los comandos
cd
,ls
,mkdir
yrm
en otros shells, pero orientados a objetos.Listar archivos en una carpeta:
PowerShellGet-ChildItem C:\Users\ejemplo
Este comando obtiene todos los archivos y subcarpetas dentro de la ruta especificada. Puedes usar
gci
como alias.Crear una nueva carpeta:
PowerShellNew-Item -Path C:\Temp\NuevaCarpeta -ItemType Directory
El comando
New-Item
es muy versátil y se utiliza para crear nuevos archivos o carpetas.Copiar un archivo:
PowerShellCopy-Item C:\Temp\archivo.txt C:\Users\ejemplo\
Copia el archivo
archivo.txt
a la carpeta de destino.
2. Gestión de procesos ⚙️
PowerShell es excelente para manejar procesos del sistema operativo.
Ver todos los procesos en ejecución:
PowerShellGet-Process
Esto devuelve una lista de objetos de proceso, no solo texto. Puedes filtrar la salida.
Filtrar y detener un proceso específico:
PowerShellGet-Process | Where-Object {$_.ProcessName -eq "notepad"} | Stop-Process
Este es un ejemplo clásico del poder de PowerShell:
Get-Process
: Obtiene todos los procesos.|
: El pipe envía la salida del primer comando como entrada al siguiente.Where-Object {$_.ProcessName -eq "notepad"}
: Filtra los procesos, buscando solo aquellos cuyo nombre es "notepad".Stop-Process
: Detiene todos los procesos que coinciden con el filtro.
3. Gestión de servicios de Windows 🛠️
Puedes iniciar, detener y configurar servicios del sistema.
Obtener el estado de un servicio:
PowerShellGet-Service -Name "Spooler"
Verifica si el servicio de la cola de impresión (
Spooler
) está en ejecución.Detener e iniciar un servicio:
PowerShellStop-Service -Name "Spooler" Start-Service -Name "Spooler"
Detiene y luego reinicia el servicio.
4. Gestión de usuarios y red 🌐
PowerShell se usa mucho en entornos corporativos para la administración de usuarios y la configuración de red.
Obtener la configuración de red:
PowerShellGet-NetIPAddress
Muestra la configuración de las interfaces de red del equipo, incluyendo direcciones IP.
Crear un nuevo usuario local (con privilegios de administrador):
PowerShellNew-LocalUser -Name "NuevoUsuario" -Password (Read-Host -AsSecureString "Introduce una contraseña") -Description "Usuario de prueba" Add-LocalGroupMember -Group "Administradores" -Member "NuevoUsuario"
Este script crea un nuevo usuario y luego lo añade al grupo de Administradores.
Read-Host -AsSecureString
solicita una contraseña de forma segura.