PowerShell es una herramienta con interfaz de comandos basado en una consola que nos permite comunicarnos mediante estos comandos con nuestro sistema. Como indica su nombre es una Shell que permite la comunicación entre el PC y el usuario ofreciéndonos una interfaz de interacción. Debido a su naturaleza, su uso básicamente se realiza por medio del teclado y la introducción de texto. Windows PowerShell nació como una solución más potente y menos restrictiva a lo que ofrecían otras Shell como el Símbolo de sistema.
Como administradores es verdaderamente útil conocer tanto el Símbolo de Sistema como Windows PowerShell para ajustar cualquier elemento interno. Una de las ventajas de PowerShell es que nos permite automatizar procesos y tareas y así facilitar las tareas que queramos realizar. Con los scripts PowerShell útiles o comandos mas usados en PowerShell podemos realizar tareas de Windows 10 fácilmente y con permisos completos de administrador.
Con Windows Powershell podremos acceder a elementos básicos de cmd además de otros aspectos internos más complejos de nuestros equipos. WPowerShell además se comporta como un entorno de gestión de scripts potente que simplifica nuestra stareas. También cuenta con la posibilidad de ejecución con control remoto. Debido a su complejidad es normal abarcar PowerShell para un público más profesional y cmd para uno más estándar.
A continuación, veremos un listado de comandos que nos serán útiles cuando trabajemos con PowerShell. Te proponemos también el videotutorial para poder abrir Windows PoerShell:
1. Comandos más usados en PowerShell
Es una función que no muchos saben de serie y es que puedes navegar por los registros de Windows usando la PS.
PS C:\Users\jcarrillo> cd hkcu: PS HKCU:\> ls
Hive: HKEY_CURRENT_USER SKC VC Name Property --- -- ---- -------- 2 0 AppEvents {} 0 36 Console {ColorTable00, ColorTable01, ColorTab... 13 0 Control Panel {} 0 2 Environment {TEMP, TMP} 4 0 EUDC {} 1 6 Identities {Identity Ordinal, Migrated7, Last Us... 3 0 Keyboard Layout {} 2 0 Layout {} 0 0 Network {} 3 0 Printers {} 37 0 Software {} 1 0 System {} 1 8 Volatile Environment {LOGONSERVER, USERDOMAIN, USERNAME, U...
Podremos realizar una búsqueda en powershell y que se aplica a todos los sub-directorios que existan por y si buscamos en la raíz buscara en toda la partición.
dir –r | select string "quebuscar"
Podemos ver cuáles son los procesos que consumen más memoria en el sistema.
-- ps | sort –p ws | select –last 5
Podemos hacer que un servicio se detenga y luego vuelva a iniciar muy útil.
-- Restart-Service DHCP
Listamos todos los Ítems de un directorio:
-- Get-ChildItem – Force
Buscamos en una seria de directorios o carpetas:
-- Get-ChildItem –Force c:\directory –Recurse
Elminar todos los archivos con la Powershell en un directorio sin pedir confirmación en cada uno de ellos.
Remove-Item C:\tobedeleted –Recurse
(Get-WmiObject -Class Win32_OperatingSystem -ComputerName .).Win32Shutdown(2)
Ahora nos pasamos a la recolección de información del sistema con la PowerShell.
2. Comandos PowerShell Información del Sistema
Obtiene la información del sistema en uso.
Get-WmiObject -Class Win32_ComputerSystem
Lista el tipo de BIOS del sistema en uso con el siguiente comando:
Get-WmiObject -Class Win32_BIOS -ComputerName
Lista todas las actualizaciones de Windows instaladas en el sistema se incluyen QFES o archivos de Windows Update.
Get-WmiObject -Class Win32_QuickFixEngineering -ComputerName .
Muestra el usuario que está conectado en el sistema.
Get-WmiObject -Class Win32_ComputerSystem -Property UserName -ComputerName
Muestra una lista con todas las aplicaciones instaladas con solo nombre sin descripción:
Get-WmiObject -Class Win32_Product -ComputerName . | Format-Wide -Column 1
Muestra todas las IP asociadas a la maquina físicas o virtuales.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Format-Table -Property IPAddress
Obtenemos mayor información como la interfaz asociada y los DNS.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=TRUE -ComputerName . | Select-Object -Property [a-z]* -ExcludeProperty IPX*,WINS*
Muestra las interfaces de red configuradas en DHCP que estén habilitadas.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter "DHCPEnabled=true" –ComputerName
Habilita las interfaces que estén en DHCP en el Sistema con Powershell.
Get-WmiObject -Class Win32_NetworkAdapterConfiguration -Filter IPEnabled=true -ComputerName . | ForEach-Object -Process {$_.EnableDHCP()}
Nos vamos ahora a la administración de aplicaciones, tema muy interesante y demandado.
3. Administración aplicaciones PowerShell
Instalar un paquete MSI en una computadora remota.
(Get-WMIObject -ComputerName TARGETMACHINE -List | Where-Object -FilterScript {$_.Name -eq "Win32_Product"}).Install(\\MACHINEWHEREMSIRESIDES\path\package.msi)
Actualizamos un paquete MSI en un computador remoto.
(Get-WmiObject -Class Win32_Product -ComputerName . -Filter "Name='name_of_app_to_be_upgraded'").Upgrade(\\MACHINEWHEREMSIRESIDES\path\upgrade_package.msi)
Removemos / Eliminamos un paquete con extensión MSI de la maquina en uso.
(Get-WmiObject -Class Win32_Product -Filter "Name='product_to_remove'" -ComputerName . ).Uninstall()
Podemos incluso apagar una máquina remota usando este comando:
Start-Sleep 60; Restart-Computer –Force –ComputerName TARGETMACHINE
Añadir una impresora a nuestro equipo pero antes debe ser reconocida instalando los drivers necesarios.
(New-Object -ComObject WScript.Network).AddWindowsPrinterConnection("\\printerserver\hplaser3")
Eliminar / quitar una impresora de nuestro equipo es importante saber que no desinstala los controladores.
Remove a printer -- (New-Object -ComObject WScript.Network).RemovePrinterConnection("\\printerserver\hplaser3 ")
Podemos ingresar a una PowerShell de una maquina remota pero antes debemos tener habilitado el remote management.
enter-pssession TARGETMACHINE
Para finalizar podemos invocar un script en un equipo en remoto y es uno de los mas interesantes.
invoke-command -computername machine1, machine2 -filepath c:\Script\script.ps1
4. Administrar archivos PowerShell
Get-Command *parámetro* Get-Command *-service*
Invoke-Expression expresion Invoke-Expression c:\scripts\analisis.ps1
Set-ExecutionPolicy -ExecutionPolicy Restricted
Get-Item P*
Copy-Item "probando.jpg" -Destination "C:\Varios\probando2.jpg"
Get-Content "C:\Users\Solvetic\Desktop\pruebatexto.txt" -TotalCount 25
5. Ver usuarios PowerShell
Get-LocalUser
Get-LocalUser -Name nombreusuario
Get-LocalUser -Name nombreusuario|fl
6. Ver grupos PowerShell
Para a ver comandos para mostrar información sobre los grupos usando comandos PowerShell.
Get-LocalGroup
Get-LocalGroup -Name nombregrupo
Get-LocalGroup -Name nombregrupo|fl
7. Ver discos PowerShell
Para a ver comandos para mostrar información sobre los discos usando comandos PowerShell tenemos estos ejemplos:
Get-Disk
Get-Disk -Number numerodisco|fl
Get-Partition -DiskNumber numerodisco
Se han listado comandos PowerShell windows 10 que pueden facilitar muchas tareas como administrador desde tareas como explorar en un directorio a un poco más complicadas como habilitar una NIC con DHCP. Es una lista de los comandos que pueden usarse en tareas en general si tienes alguna sugerencia u otro comando interesante no dudes en dejarlo en los comentarios.