Cuando se trata de ejecutar comandos en Windows, PowerShell se ha convertido en un as en el hoyo. Durante años, los entusiastas se limitaron a los límites de la línea de comandos de Windows, pero en 2006, PowerShell surgió como una alternativa poderosa.
¿Qué es PowerShell??
PowerShell es un interactivo Interfaz de línea de comandos (CLI) y el motor de automatización diseñado por Microsoft para ayudar a diseñar configuraciones de sistema y automatizar tareas administrativas. Esta herramienta tiene su propia línea de comandos con un lenguaje de programación único similar a Perl. Inicialmente, PowerShell fue diseñado para administrar objetos en las computadoras de los usuarios.
Hoy, PowerShell ofrece a los usuarios un entorno extenso donde pueden ejecutar y automatizar tareas de administración del sistema. El usuario puede acceder a los recursos de Active Directory a Exchange Server a través de un programa. En esencia, PowerShell permite al usuario acceder a:
- Símbolo del sistema
- Comandos de PowerShell
- .NET Framework API
- Instrumentación de Administración Windows
- Modelo de objetos componentes de Windows
Como PowerShell se ha convertido en una aplicación de código abierto, los usuarios de Linux y Unix ahora pueden acceder a esta plataforma versátil. PowerShell se utiliza principalmente para ayudar a los usuarios a automatizar trabajos administrativos. En lugar de realizar tareas tediosas y repetitivas, el usuario simplemente puede crear scripts y emitir comandos, y PowerShell los completará automáticamente. El usuario puede personalizar cientos de comandos, llamados cmdlets.
Comandos de PowerShell
Aquí hay 25 comandos básicos de PowerShell:
Escoger localización | cd, chdir, sl | Establece la ubicación de trabajo actual en una ubicación específica. |
Obtener el contenido | gato, gc, tipo | Obtiene el contenido del elemento en la ubicación especificada. |
Agregar contenido | C.A | Agrega contenido a los elementos especificados, como agregar palabras a un archivo. |
Set-Content | Carolina del Sur | Escribe o reemplaza el contenido de un elemento con contenido nuevo. |
Elemento de copia | copia, cp, cpi | Copia un artículo de una ubicación a otra. |
Remover el artículo | del, borrar, rd, ri, rm, rmdir | Elimina los elementos especificados.. |
Move-Item | mi, muévete, mv | Mueve un artículo de una ubicación a otra.. |
Set-Item | si | Cambia el valor de un elemento al valor especificado en el comando. |
Nuevo artículo | ni | Crea un nuevo elemento.. |
Start-Job | sajb | Inicia un trabajo en segundo plano de Windows PowerShell. |
Comparar objetos | comparar, dif | Compara dos conjuntos de objetos.. |
Objeto grupal | grupo | Agrupa objetos que contienen el mismo valor para propiedades especificadas. |
Invoke-WebRequest | rizo, iwr, wget | Obtiene contenido de una página web en Internet. |
Medida-Objeto | medida | Calcula las propiedades numéricas de los objetos, y los caracteres, palabras y líneas en objetos de cadena, como archivos … |
Resolve-Path | rvpa | Resuelve los caracteres comodín en una ruta y muestra el contenido de la ruta. |
Reanudar trabajo | rujb | Reinicia un trabajo suspendido |
Conjunto-Variable | conjunto, sv | Establece el valor de una variable. Crea la variable si no existe una con el nombre solicitado. |
Show-Command | shcm | Crea comandos de Windows PowerShell en una ventana gráfica de comandos. |
Ordenar-Objeto | ordenar | Ordena objetos por valores de propiedad. |
Comienza el servicio | sasv | Inicia uno o más servicios detenidos. |
Proceso de inicio | savia, empezar | Inicia uno o más procesos en la computadora local. |
Suspender-Trabajo | sujb | Detiene temporalmente los trabajos de flujo de trabajo. |
Esperar trabajo | wjb | Suprime el símbolo del sistema hasta que uno o todos los trabajos en segundo plano de Windows PowerShell que se ejecutan en la sesión son … |
Donde-Objeto | ?, dónde | Selecciona objetos de una colección en función de sus valores de propiedad.. |
Salida de escritura | eco, escribir | Envía los objetos especificados al siguiente comando en la tubería. Si el comando es el último comando en la tubería, … |
Aquí está nuestra versión en PDF de la hoja de trucos de PowerShell. Haga clic en la imagen a continuación para abrir el PDF en una pestaña separada del navegador que puede guardar y usar como referencia rápida.
Hoja de trucos de PowerShell (PDF)
Cómo usar PowerShell
PowerShell es ideal para administradores corporativos que ejecutan operaciones de administración complejas en grandes redes corporativas. En lugar de recopilar información sobre cientos de servidores y servicios diferentes manualmente (lo que llevaría mucho tiempo), simplemente puede ejecutar un script en PowerShell para enviarle información automáticamente..
En términos generales, PowerShell es más beneficioso para los usuarios que tienen experiencia previa con líneas de comando. Para usar PowerShell, puede ejecutar una variedad de cmdlets, scripts, ejecutables y clases .NET. A los fines de este artículo, nos centraremos principalmente en cmdlets y scripts para ayudarlo a comprender los fundamentos..
Udemy tiene una serie de cursos mejor calificados en PowerShell que pueden resultarle útiles..
PowerShell vs Símbolo del sistema
Para muchos usuarios, PowerShell es una mejor alternativa al símbolo del sistema. La razón es que simplemente tiene más caballos de fuerza. Una de las mayores diferencias es que PowerShell usa cmdlets en lugar de comandos. Los cmdlets colocan la administración del registro y la Instrumentación de administración de Windows dentro del alcance administrativo de los usuarios. Por el contrario, el símbolo del sistema se limita a comandos mucho más simples.
Hay un cierto cruce en la sintaxis entre las dos plataformas, ya que PowerShell aceptará algunos comandos del símbolo del sistema como ipconfigtocd. Sin embargo, estos se conocen como alias en lugar de cmdlets. Otra diferencia clave es que PowerShell se centra en los objetos. Cada pieza de salida de datos de un cmdlet es un objeto en lugar de texto. Esto facilita que el usuario navegue por datos complejos. La inclusión del marco .NET también permite que los scripts de PowerShell utilicen interfaces .NET. En resumen, PowerShell es símbolo del sistema en esteroides.
Cargando PowerShell
Antes de profundizar en los conceptos básicos del uso de PowerShell, primero debe acceder a la interfaz principal. Si es un usuario de Windows 10, ya tendrá acceso a PowerShell 5. Los usuarios de Windows 8-8.1 tienen acceso a PowerShell 4, pero si está en Windows 7, deberá instalarlo en un .NET marco de referencia. En todos los sistemas operativos, PowerShell ofrece dos interfaces distintas..
El más avanzado es el Integrated Scripting Environment, que actúa como una GUI completa para usuarios experimentados. La alternativa básica es la consola PowerShell, que proporciona una línea de comandos para que el usuario ingrese sus comandos. Se recomienda a los principiantes que se queden con este último hasta que aprendan los fundamentos de PowerShell.
Para iniciar PowerShell en Windows 10, debe ser administrador. Inicie sesión como administrador, haga clic en comienzo, y desplázate por tus aplicaciones hasta que encuentres Windows PowerShell. Haga clic derecho y seleccione Ejecutar como administrador. En Windows 8.1, simplemente busque PowerShell en su Sistema carpeta. Del mismo modo, en Windows 7, el directorio predeterminado para PowerShell es el Accesorios carpeta después de haber instalado el programa.
Cómo ejecutar cmdlets
En pocas palabras, un cmdlet es un comando de función única. Ingresa cmdlets en la línea de comandos tal como lo haría con un comando o utilidad tradicional. Los cmdlets son la forma principal de interactuar con la CLI. En PowerShell, la mayoría de los cmdlets se escriben en C # y se componen de instrucciones diseñadas para realizar una función que devuelve un objeto .NET.
Se pueden usar más de 200 cmdlets en PowerShell. El símbolo del sistema de Windows PowerShell no distingue entre mayúsculas y minúsculas, por lo que estos comandos se pueden escribir en mayúsculas o minúsculas. Los cmdlets principales se enumeran a continuación:
- Get-Location – Obtener el directorio actual
- Escoger localización – Obtener el directorio actual
- Elemento de movimiento – Mover un archivo a una nueva ubicación
- Elemento de copia – Copie un archivo a una nueva ubicación
- Rebautizar – elemento Renombrar un archivo existente
- Nuevo artículo – Crear un nuevo archivo
Para obtener una lista completa de los comandos disponibles, use el cmdlet Get-Command. En la línea de comando ingresarías lo siguiente:
PS C: \> Get-Command
Es importante tener en cuenta que Microsoft restringe a los usuarios el uso de cmdlets personalizados de PowerShell en su configuración predeterminada. Para usar los cmdlets de PowerShell, debe cambiar el Política de ejecución desde Restringido a Remoto Firmado. Remoto firmado le permitirá ejecutar sus propios scripts pero detendrá los scripts sin firmar de otros usuarios.
Para cambiar su política de ejecución, escriba el siguiente comando de PowerShell:
PS C: \> Set-ExecutionPolicy
Para cambiar a Remoto Firmado, escriba el siguiente comando:
PS C: \> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Asegúrese de estar en una cuenta de administrador para tener permiso para establecer una nueva política de ejecución.
Cómo ejecutar scripts
Los procesos y comandos basados en scripts son parte de la base de la versatilidad de PowerShell. En PowerShell, un script es esencialmente un archivo de texto con una extensión ps1 en su nombre de archivo. Para crear una nueva secuencia de comandos, simplemente puede abrir el bloc de notas de Windows, escribir sus comandos y guardar con “.ps1” al final del nombre.
Para ejecutar un script, ingrese su carpeta y nombre de archivo en la ventana de PowerShell:
PS c: \ powershell \ mynewscript.ps1
Una vez que hayas hecho esto, tu script seleccionado se ejecutará.
Buscando crear sus propios scripts de PowerShell? Casi 5k estudiantes han tomado este curso de Udemy sobre secuencias de comandos avanzadas con PowerShell.
Superposición con los comandos de Windows
Cuando eres nuevo en PowerShell, puede ser abrumador intentar aprender una biblioteca de comandos completamente nueva. Sin embargo, de lo que la mayoría de los nuevos usuarios no se dan cuenta es que la sintaxis utilizada en la línea de comandos de Windows se superpone con PowerShell. Esto se hace más fácil por el hecho de que PowerShell no distingue entre mayúsculas y minúsculas.
Al igual que el símbolo del sistema, en PowerShell el comando cd todavía cambia los directorios, y el directorio aún proporciona una lista de archivos dentro de la carpeta seleccionada. Como tal, es importante recordar que no necesariamente está comenzando desde cero. Tomar esto en cuenta ayudará a disminuir la curva de aprendizaje que enfrenta al usar PowerShell y a disminuir la cantidad de comandos nuevos que debe aprender..
Dicho esto, es importante tener en cuenta que estos no se consideran comandos completos de PowerShell, sino sus alias (el nombre de Powershell para los comandos del símbolo del sistema de Windows). Por lo tanto, aunque puede probar algunos de los comandos del símbolo del sistema en PowerShell, debe aprender todo lo que pueda sobre los nuevos. No obstante, la experiencia del símbolo del sistema definitivamente puede ayudar a los nuevos usuarios a familiarizarse con PowerShell y comenzar a ejecutar.
Copia de seguridad de una base de datos SQL
Muchas personas usan PowerShell para realizar copias de seguridad de bases de datos SQL. La interfaz de línea de comandos puede realizar copias de seguridad completas de la base de datos, copias de seguridad de archivos y copias de seguridad del registro de transacciones. Hay muchas formas de hacer una copia de seguridad de una base de datos en PowerShell, pero una de las más simples es usar el comando Backup-SqlDatabase. Por ejemplo:
PS C: \> Backup-SqlDatabase -ServerINstance “Computer \ Instance” -Database “Databasecentral”
Esto creará una copia de seguridad de una base de datos con el nombre “Base de datos central” (o el nombre de la base de datos elegida “.
Para hacer una copia de seguridad de un registro de transacciones, debe ingresar:
PS C: \> Backup-SqlDatabase -ServerInstance “Computer \ Instance” -Database “Databasecentral” -BackupAction Log
Esto creará un registro de transacciones de la base de datos seleccionada..
Comandos esenciales de PowerShell
El uso de alias solo lo llevará hasta ahora en PowerShell, por lo que es importante comprometerse a aprender todo lo que pueda sobre los comandos nativos de PowerShell. Tocamos algunos de estos anteriores, pero vamos a desglosar los principales con mucho más detalle a continuación..
Consigue ayuda
Este comando debe estar en la parte superior de la lista de cualquier nuevo usuario cuando se trata de PowerShell. El comando Get-Help se puede usar para obtener literalmente ayuda con cualquier otro comando de PowerShell. Por ejemplo, si conoce el nombre de un comando, pero no sabe qué hace o cómo usarlo, el comando Get-Help proporciona la sintaxis completa del comando.
Por ejemplo, si desea ver cómo funciona Get-Process, escriba:
PS C: \> Get-Help -Name Get-ProcessPS C: \> Set-ExecutionPolicy
Como se mencionó anteriormente en esta guía, Microsoft tiene una política de ejecución restringida que impide las secuencias de comandos en PowerShell a menos que lo cambie. Al configurar la política de ejecución, tiene cuatro opciones para elegir:
- Restringido – La política de ejecución predeterminada que detiene la ejecución de scripts.
- Todos firmados – Ejecutará scripts si están firmados por un editor de confianza
- Remoto firmado – Permite ejecutar scripts que se han creado localmente
- Irrestricto – Una política sin restricciones para ejecutar scripts
PS C: \> Get-ExecutionPolicy
Si usa PowerShell, es posible que no siempre trabaje en un servidor con el que esté familiarizado. Ejecutando el comando Política de ejecución de ejecución le permitirá ver qué política está activa en el servidor antes de ejecutar un nuevo script. Si luego ve que el servidor en cuestión opera bajo una política restringida, puede implementar el Set-ExecutionPolicy comando para cambiarlo.
Obtener servicio
Uno de los comandos más importantes es Get-Service, que proporciona al usuario una lista de todos los servicios instalados en el sistema, tanto en ejecución como detenidos. Este cmdlet se puede dirigir mediante el uso de nombres de servicios u objetos específicos.
Por ejemplo, si tuviera que escribir PS C: \> Get-Service, se le mostrará una lista de todos los servicios en su computadora, sus estados y nombres para mostrar.
Para usar este comando para recuperar servicios específicos, escriba: PS C: \ Get-Service “WMI *” para recuperar todos los servicios que comienzan con WMI.
Si desea restringir la salida a los servicios activos en su computadora, ingrese el siguiente comando:
PS C: \ Obtener servicio | Where-Object {$ _. Status -eq “Ejecutando”}
ConvertTo-HTML
Al usar PowerShell, es posible que desee generar un informe sobre la información que ha visto. Una de las mejores formas de hacerlo es mediante el uso de ConvertTo-HTML mando. Este cmdlet le permite crear informes con tablas y colores, lo que puede ayudar a visualizar datos complejos. Simplemente elija un objeto y agréguelo al comando. Por ejemplo, podría escribir:
Get-PSDrive | ConvertTo-Html
Esto devuelve una gran cantidad de información, por lo que es una buena idea limitarlo a un archivo con el comando Out-File. Un mejor comando alternativo es:
Unidad Get-PSD | ConvertTo-Html | Out-File -FilePath PSDrives.html
Esto generará un archivo HTML en forma de tabla. Por ejemplo:
Luego puede agregar sus propios colores y bordes para refinar su presentación.
Export-CSV (y Get-Service)
No menos importante para aumentar la visibilidad es el comando Exportar-CSV. Le permite exportar datos de PowerShell a un archivo CSV. Básicamente, este comando crea un archivo CSV que compila todos los objetos que ha seleccionado en PowerShell. Cada objeto tiene su propia línea o fila dentro del archivo CSV. Este comando se utiliza principalmente para crear hojas de cálculo y compartir datos con programas externos..
Para usar este comando, escribiría:
PS C: \> Obtener servicio | Exportar-CSV c: \ service.csv
Es importante recordar no formatear objetos antes de ejecutar el comando Exportar-CSV. Esto se debe a que formatear objetos da como resultado que solo las propiedades formateadas se coloquen en el archivo CSV en lugar de los objetos originales en sí. En el caso de que desee enviar propiedades específicas de un objeto a un archivo CSV, usaría el Seleccionar objeto cmdlet.
Usar el Seleccionar objeto cmdlet, escriba:
PS C: \> Obtener servicio | Seleccionar nombre de objeto, estado | Exportar-CSV c: \ Service.csv
Get-Process
Si desea ver todos los procesos que se ejecutan actualmente en su sistema, el Get-Process El comando es muy importante. Para obtener una lista de todos los procesos activos en su computadora, escriba:
PS C: \ Get-Process
Tenga en cuenta que si no especifica ningún parámetro, obtendrá un desglose de cada proceso activo en su computadora. Para elegir un proceso específico, reduzca los resultados por nombre de proceso o ID de proceso y combínelo con el Lista de formatos cmdlet, que muestra todas las propiedades disponibles. Por ejemplo:
PS C: \ Get-Process windowrd, explorador | Lista de formato *
Esto le proporciona una supervisión integral de todos los procesos activos..
Get-EventLog
Si alguna vez desea acceder a los registros de eventos de su computadora (o registros en computadoras remotas) mientras usa PowerShell, entonces necesitará el Get-EventLog mando. Este cmdlet solo funciona en registros de eventos clásicos, por lo que necesitará Get-WinEvent comando para registros posteriores a Windows Vista.
Para ejecutar el comando de registro de eventos, escriba:
PS C: \> Get-EventLog -List
Esto mostrará todos los registros de eventos en su computadora.
Una de las razones más comunes por las que los usuarios miran los registros de eventos es para ver los errores. Si desea ver eventos de error en su registro, simplemente escriba:
PS C: \> Get-EventLog -LogName System -EntryType Error
Si desea obtener registros de eventos de varias computadoras, especifique qué dispositivos desea ver (enumerados a continuación como “Servidor1” y “Servidor2”). Por ejemplo:
PS C: \> Get-EventLog – LogName “Windows PowerShell” -ComputerName “equipo local”, “Servidor1”, “Servidor2”.
Los parámetros que puede usar para buscar registros de eventos incluyen:
- Después – El usuario especifica una fecha y hora y el cmdlet localizará los eventos que ocurrieron después
- AsBaseObject – Proporciona un System.Diagnostics.EventLogEntry para cada evento
- Como cuerda – Devuelve la salida como cadenas
- antes de – El usuario especifica una fecha y hora y el cmdlet localizará eventos que ocurrieron antes
- Nombre del computador – Se usa para referirse a una computadora remota
- EntryType – Especifica el tipo de entrada de eventos (error, auditoría de falla, auditoría de éxito, información, advertencia)
- Índice – Especifica valores de índice de los que el cmdlet encuentra eventos
- Lista – Proporciona una lista de registros de eventos.
- Nombre de usuario – Especifica los nombres de usuario asociados con un evento determinado
Detener el proceso
Cuando se usa PowerShell, no es raro experimentar un proceso que se congela. Siempre que esto suceda, puede usar Get-Process para recuperar el nombre del proceso que experimenta dificultades y luego detenerlo con el Detener el proceso mando. Generalmente, finaliza un proceso por su nombre. Por ejemplo:
PS C: \> Stop-Process -Name “bloc de notas”
En este ejemplo, el usuario ha terminado el Bloc de notas utilizando el comando Detener proceso.
PowerShell: una potente interfaz de línea de comandos
Aunque hacer la transición a PowerShell puede parecer bastante complejo, su interfaz de línea de comandos funciona de la misma manera que cualquier otra. Puede tener sus propios cmdlets únicos, pero una gran cantidad de recursos en línea puede ayudarlo con cualquier tarea administrativa que se le ocurra. Para aprovechar al máximo PowerShell, simplemente necesita acostumbrarse a la multitud de comandos disponibles para usted.
Como nuevo usuario, es fácil sentirse intimidado por los más de 200 cmdlets de PowerShell. Asegúrese de comenzar con la interfaz de línea de comandos antes de graduarse a la GUI completa. Independientemente de si es nuevo en PowerShell o en las interfaces de línea de comandos, hay más que suficiente información disponible en línea para ayudarlo a aprovechar al máximo esta poderosa herramienta.
En cuanto a la ejecución de comandos en Windows, PowerShell se ha convertido en una herramienta muy útil. Antes, los usuarios se limitaban a la línea de comandos de Windows, pero en 2006, PowerShell surgió como una alternativa poderosa. Esta herramienta es una interfaz de línea de comandos interactiva y un motor de automatización diseñado por Microsoft para ayudar a diseñar configuraciones de sistema y automatizar tareas administrativas. PowerShell permite al usuario acceder a una gran cantidad de recursos, como el símbolo del sistema, comandos de PowerShell, .NET Framework API, Instrumentación de Administración Windows y Modelo de objetos componentes de Windows. Además, los usuarios de Linux y Unix también pueden acceder a esta plataforma versátil, ya que se ha convertido en una aplicación de código abierto. PowerShell es utilizado principalmente para ayudar a los usuarios a automatizar trabajos administrativos, lo que les permite crear scripts y emitir comandos para completar tareas tediosas y repetitivas automáticamente. En resumen, PowerShell es una herramienta muy útil para los usuarios de Windows que buscan automatizar tareas administrativas y acceder a una gran cantidad de recursos.