Comandos básicos de powershell para la administración de ficheros, procesos, tareas y usuarios.
luishcr • 29 January, 2023
Comandos básicos más usados (abrir Powershell en modo administrador).
- Los cmdlets (commandlets) en PowerShell son comandos que realizan tareas específicas en el sistema operativo Windows y en otros sistemas. Se se componen de un verbo, que describe la acción que el cmdlet realiza. Por ejemplo, Get, Set, New, etc, y un sustantivo que identifica el objeto con el que se está trabajando. Por ejemplo, Item, Process, Service, etc.. Algunos cmdlets comunes en PowerShell incluyen "Get-ChildItem" para obtener una lista de archivos y carpetas en un directorio específico, "New-Item" para crear un archivo o carpeta, y "Restart-Computer" para reiniciar el equipo.
- Un cmdlet en PowerShell también puede tener parámetros opcionales y obligatorios que se especifican en la línea de comando. Estos parámetros pueden proporcionar información adicional al cmdlet y permitirle realizar su tarea de manera más efectiva. Los parámetros se especifican utilizando la sintaxis "-NombreDelParametro ValorDelParametro". Por ejemplo, Get-ChildItem -Path C:\Users\NombreDeUsuario. A continuación vemos una lista de los cmdlets más comunes y su función.
- Actualizar ayuda de cmdlets.
Update-Help
- Buscar comando por verbo, nombre o filtrados.
Get-Command -Verb New
Get-Command -Noun LocalUser
Get-Command "*user*"
- Obtener ayuda de un cmdlet con ejemplos.
Get-Help New-LocalUser -Examples
- Imprimir módulos actuales.
Get-Module
- Imprimir comandos de un determinado módulo.
Get-Command -Module Microsoft.PowerShell.Management
- Listar módulos disponibles.
Get-Module -ListAvailable
- Importar módulos.
Import-Module Bitlocker -Verbose
- Quitar módulos.
Remove-Module Bitlocker
- Imprimir adaptadores de red.
Get-NetAdapter
- Imprimir fecha del sistema.
Get-Date
- Borrar historial.
Clear-History
- Imprimir Alias.
Get-Alias
- Limpiar pantalla (cls).
Clear-Host
- Imprimir ubicación actual (pwd).
Get-Location
- Desplazarse (cd).
Set-Location :D\Downloads
- Imprimir contenido (ls).
Get-ChildItem :D\Projects
- Crear fichero (ni/md).
New-Item script.ps1
- Borrar fichero (rm).
Remove-Item script.ps1
- Mover fichero (mv).
Move-Item :D\Projects\scripts.ps1 D:\Scripts
- Renombrar fichero (ren).
Rename-Item script.ps1 reverse_shell.ps1
- Copiar ficheros (cp).
Copy-Item .\script.ps1 D:\lab
- Imprimir contenido de fichero.
Get-Content fichero.txt
Ejecución de Scripts.
- Mostrar políticas de ejecución de scripts.
Get-ExecutionPolicy -List
- Restricted
Set-ExecutionPolicy Restricted
- AllSigned
Set-ExecutionPolicy -ExecutionPolicy AllSigned -Scope CurrentUser
- RemoteSigned
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
- Unrestricted
Set-ExecutionPolicy Unrestricted
- Undefined (remove the execution polocy)
Set-ExecutionPolicy -ExecutionPolicy Undefined -Scope CurrentUser
- Correr Script sin cambiar la política de ejecución
Unblock-File -Path .\Script.ps1
.\Script.ps1
- Ejecución remota
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-ExecutionPolicy } | Set-ExecutionPolicy
Tuberías, filtros, redireccionamiento para visualizar procesos y tareas.
- Contar el números de usuarios.
Get-LocalUser | Measure-Object
- Listado de ficheros con peso > 10 MB orden descendiente.
Get-ChildItem -Recurse | Where-Object {$_.Length -gt 10Mb} | Sort-Object -Descending -Property Length
- Filtrar conexiones de red establecidas con formato tabla.
Get-NetTCPConnection | Where-Object{$_.State -eq 'Established'} | ft -a
- Redirección a fichero.
Get-NetFirewallProfile > security.txt
- Filtrar procesos por uso de CPU mayor a 50% y listar de forma descendente.
Get-Process | where CPU -GT 50 | Sort-Object -Property CPU -Descending
- Crear una tarea programada para apagar el sistema todos los dias a las 2:00 Horas.
$action = New-ScheduledTaskAction -Execute 'shutdown.exe'
$time = New-ScheduledTaskTrigger -At 2:00 -Daily
Register-ScheduledTask -Action $action -Trigger $time -TaskName "Autoapagado" -Description "Apagado automático diario 2:00 AM"
- Mostrar, modificar y eliminar tareas programdas.
Get-ScheduledTask
$time = New-ScheduledTaskTrigger -At 12:00 -Once
Set-ScheduledTask -TaskName "Autoapagado" -Trigger $time
Unregister-ScheduledTask -TaskName "Autoapagado" -Confirm:$false
Administración de cuentas de usuarios y grupos.
- Obtener los cmdlets para trabajar con usuarios.
Get-Command –Module Microsoft.PowerShell.LocalAccounts
- Imprimir usuarios locales.
Get-LocalUser
- Mostrar información detallada de una cuenta.
Get-LocalUser -Name nombreUsuario | fl *
Get-LocalUser | ft –AutoSize –Wrap
- Imprimir grupos locales.
Get-LocalGroup
- Crear nueva cuenta “Developer” sin password.
New-LocalUser -Name Developer -NoPassword
- Crear nueva cuenta “Developer” con password encriptada.
$password = Read-Host -AsSecureString
New-LocalUser -Name Developer -Password $password
- Establecer o modificar una propiedad: La contraseña nunca expira.
Set-LocalUser nombreUsuario -PasswordNeverExpires $true
Set-LocalUser nombreUsuario -Password (ConvertTo-SecureString "qwerty" -AsPlainText –Force)
Set-LocalUser nombreUsuario -FullName "Sr User“
- Renombrar cuenta de usuario.
Rename-LocalUser nombreUsuario -NewName nuevoNombreUsuario
- Activar/Deshabilitar/Eliminar cuentas de usuario.
Disable-LocalUser nombreUsuario
Enable-LocalUser nombreUsuario
Remove-LocalUser –Confirm nombreUsuario
- Obtener información detallada de un grupo.
Get-LocalGroup nombreGrupo | fl *
- Crear un grupo.
New-LocalGroup nombreGrupo
- Establecer/modficar propiedades.
Set-LocalGroup -Description "Personal Oficina 2" nombreGrupo
Rename-LocalGroup nombreGrupo -NewName nuevoNombreGrupo
Remove-LocalGroup –Confirm nombreGrupo
- Obtener/agregar/modificar miembros de grupo.
Get-LocalGroupMember nombreGrupo
Add-LocalGroupMember nombreGroup -Member usuario7
Remove-LocalGroupMember nombreGroup -Member usuario7