[[hack_roadmap-0|Up]] ====== Introducción a PowerShell ====== PowerShell es una herramienta poderosa de línea de comandos y un lenguaje de scripting desarrollado por Microsoft, diseñado específicamente para la administración de sistemas. Es ampliamente utilizado por administradores de sistemas y profesionales de la ciberseguridad debido a su capacidad para automatizar tareas administrativas en sistemas Windows. ===== Conceptos Básicos de PowerShell ===== ==== ¿Qué es PowerShell? ==== PowerShell es una plataforma de automatización de tareas y gestión de configuración que consiste en un shell de línea de comandos, un lenguaje de scripting, y un marco de gestión de configuración. Ofrece acceso a funcionalidades de sistema operativo y puede interactuar con diferentes tecnologías, como servicios web y APIs. ==== Características Principales: ==== * **Interoperabilidad:** Puede interactuar con otras tecnologías y lenguajes. * **Cmdlets:** Son comandos especializados en PowerShell que realizan funciones específicas. * **Pipelines:** Permiten encadenar cmdlets para realizar tareas complejas. * **Objetos:** PowerShell trabaja con objetos en lugar de texto plano, lo que facilita la manipulación y gestión de datos. ==== Recursos: ==== * [[https://docs.microsoft.com/en-us/powershell/|Microsoft PowerShell Documentation]] * [[https://github.com/PowerShell/PowerShell|PowerShell GitHub Repository]] ===== Cmdlets y Estructura Básica ===== ==== Cmdlets ==== Los cmdlets son comandos nativos de PowerShell diseñados para realizar tareas específicas. La nomenclatura de cmdlets sigue una convención de verbo-sustantivo, como ''Get-Process'' o ''Set-Service''. ==== Ejemplos de Cmdlets Básicos: ==== * **Get-Process:** Lista los procesos en ejecución. Get-Process * **Set-Service:** Cambia el estado de un servicio. Set-Service -Name "wuauserv" -Status "Running" * **Get-Help:** Proporciona información sobre cmdlets y comandos. Get-Help Get-Process ==== Recursos: ==== * [[https://docs.microsoft.com/en-us/powershell/scripting/developer/cmdlet/cmdlet-overview|Cmdlet Overview]] ===== Uso de Pipelines ===== ==== Conceptos Clave: ==== El pipeline en PowerShell permite pasar la salida de un cmdlet como entrada a otro cmdlet, creando flujos de trabajo complejos y eficientes. ==== Ejemplos: ==== * **Filtrar Procesos:** Get-Process | Where-Object { $_.CPU -gt 100 } * **Seleccionar Propiedades Específicas:** Get-Service | Select-Object Name, Status ==== Recursos: ==== * [[https://docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-pipelines|Understanding Pipelines]] ===== Manipulación de Objetos ===== ==== Conceptos Clave: ==== A diferencia de muchos shells tradicionales que manejan texto, PowerShell trabaja con objetos. Cada cmdlet devuelve objetos .NET, lo que permite una manipulación de datos más robusta y estructurada. ==== Ejemplos: ==== * **Acceder a Propiedades de Objetos:** $process = Get-Process -Name "explorer" $process.Id * **Modificar Objetos:** $service = Get-Service -Name "wuauserv" $service.Status = "Stopped" $service | Set-Service ==== Recursos: ==== * [[https://docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-objects|Objects in PowerShell]] ===== Scripting en PowerShell ===== ==== Conceptos Clave: ==== PowerShell no solo es una herramienta de línea de comandos, sino también un lenguaje de scripting poderoso. Permite escribir scripts para automatizar tareas repetitivas, manejar configuraciones complejas, y realizar funciones administrativas avanzadas. ==== Ejemplos de Scripts Básicos: ==== * **Script para Listar Servicios:** # Listar todos los servicios Get-Service | Where-Object { $_.Status -eq 'Running' } * **Script para Backup:** # Backup de un directorio $source = "C:\Users\Usuario\Documents" $destination = "E:\Backup" Copy-Item -Path $source -Destination $destination -Recurse ==== Recursos: ==== * [[https://docs.microsoft.com/en-us/powershell/scripting/learn/deep-dives/scripting|Scripting with PowerShell]] ===== Administración del Sistema con PowerShell ===== ==== Conceptos Clave: ==== PowerShell permite administrar y configurar sistemas Windows de manera eficiente. Los administradores de sistemas pueden utilizar PowerShell para gestionar usuarios, configurar redes, monitorear el rendimiento del sistema, y más. ==== Ejemplos de Tareas Administrativas: ==== * **Agregar un Nuevo Usuario:** New-LocalUser -Name "NuevoUsuario" -Description "Cuenta de Usuario" * **Configurar una Dirección IP:** New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress "192.168.1.100" -PrefixLength 24 -DefaultGateway "192.168.1.1" * **Monitorear el Rendimiento del Sistema:** Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 ==== Recursos: ==== * [[https://docs.microsoft.com/en-us/powershell/scripting/samples/sample-scripts-for-administrators|PowerShell for System Administrators]] ===== Conclusión ===== PowerShell es una herramienta esencial para la administración de sistemas y la automatización de tareas en entornos Windows. Su capacidad para trabajar con objetos, cmdlets y scripting avanzado lo convierte en una opción poderosa para profesionales de la tecnología. La comprensión de los conceptos básicos, el uso de pipelines, la manipulación de objetos, y la escritura de scripts son habilidades clave que cualquier administrador de sistemas o profesional de seguridad debería dominar. Los recursos proporcionados ofrecen guías detalladas para profundizar en cada uno de estos aspectos y mejorar tus habilidades en PowerShell. ===== Recursos Adicionales ===== * [[https://docs.microsoft.com/en-us/powershell/scripting/overview?view=powershell-7.1|PowerShell Documentation]] (Microsoft)