Contenidos
- Introducción
- Monitorización
- Rendimiento
- Registros del sistema
- Ejemplos
- Ejercicios
- Agrupar mensajes del log Application
- Información sobre IP en los logs
- Ver todos los logs desde hace un día
- Ver intentos de inicio de sesión con credenciales explícitas (información por tipo de log)
- Información sobre el mensaje «explore», analizar el proceso Explore
- Ver logs sobre la aplicación de PowerShell
- Ver los logs de asignación de privilegios especiales en los inicios de sesión desde hace dos días
- Reparación
- Copias de seguridad
- Restauración
Introducción
Para no tener que recurrir a la restauración de copias de seguridad o reparación del sistema operativo, hay que detectar los problemas antes de que ocurran mediante la:
- Administración de tareas y procesos, obtener información sobre los procesos y servicios que se ejecutan en el sistema.
- Gestión de eventos del sistema, los eventos son acontecimientos que ocurren en el sistema operativo.
- Monitorización el rendimiento del sistemas operativo mediante el control de CPU, disco, red y memoria.
Monitorización
Desde PowerShell se puede monitorizar el sistema mediante los administradores de tareas y procesos que dan información sobre los procesos y servicios que se ejecutan en el sistema.
Cmdlets que sirven para monitorizar procesos, hilos y servicios:
- Ver procesos
1 2 3 4 | Get-Process gps ps Get-WmiObject -Class win32_process |
- Matar procesos
1 | Stop-Process |
- Ver hilos
1 | Get-WmiObject -Class Win32_Thread |
- Ver servicios
1 2 3 | Get-Service Get-WmiObject -Class Win32_Service Get-WmiObject -query "select * from win32_service" |
Más información
Rendimiento
En PowerShell se puede gestionar el rendimiento mediante el Monitor de rendimiento, que analiza el rendimiento del sistema operativo. Tiene control de la CPU, el disco, la red y la memoria. Se puede monitorizar el rendimiento en tiempo real o de forma continuada.
El cmdlet que muestra información sobre rendimiento
1 | Get-Counter |
Parámetros y alias de los parámetros para el cmdlet Get-Counter
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ListSet {} Counter {} SampleInterval {} MaxSamples {} Continuous {} ComputerName {Cn} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |
Ver todos los nombres de los contadores de rendimiento
1 | Get-Counter -ListSet * | Sort-Object CounterSetName | Format-Table CounterSetName |
Ver todas las rutas de los contadores de rendimiento
1 | (Get-Counter -ListSet *).Paths |
Ver las rutas de los contadores de rendimiento para el USB
1 | (Get-Counter -ListSet USB).Paths |
Ejemplo
Ver el número de conexiones TCP establecidas
1 | Get-Counter -Counter "\TCPv4\Conexiones establecidas" |
Registros del sistema
El control de lo que ocurre en el sistema operativo se lleva a cabo mediante los Eventos del sistema, que son acontecimientos que ocurren en el sistema operativo.
El visor de eventos en Windows permite ver y examinar eventos que ocurren en el equipo. Windows tiene definidos tres tipos de registros de eventos o sucesos:
- De las aplicaciones. Son sucesos relacionados con la actividad de una determinada aplicación, los programadores pueden definir estos sucesos para recoger información acerca de la dinámica de las aplicaciones (errores, avisos, etc.).
- De seguridad. Son sucesos de auditoría definidos y activados previamente, para ello hay que activar las directivas de auditoría en la utilidad de Configuración de seguridad local.
- De sistema. Son sucesos relacionados con la actividad del sistema operativo.
Cmdlet que sirve para administrar registros de eventos
1 | Get-EventLog |
Parámetros y alias de los parámetros para el cmdlet Get-EventLog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | LogName {LN} ComputerName {Cn} Newest {} After {} Before {} UserName {} InstanceId {} Index {} EntryType {ET} Source {ABO} Message {MSG} AsBaseObject {} List {} AsString {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |
Ejemplos
Ver eventos disponibles
1 | Get-EventLog -List |
Ver información sobre un tipo de evento
1 2 3 4 5 6 | Get-EventLog Application Get-EventLog HardwareEvents Get-EventLog "Internet Explorer" Get-EventLog Security Get-EventLog System Get-EventLog "Windows PowerShell" |
Ver los últimos 10 errores en el sistema de registro
1 | Get-EventLog -Logname System -EntryType Error -Newest 10 | Format-Table TimeGenerated,Source,Message -Wrap |
Ejercicios
Agrupar mensajes del log Application
1 2 3 | Get-EventLog Application | Group-Object Message Get-EventLog Application | Group-Object Message | Select-Object Name Get-EventLog Application | Group-Object Message | Select-Object Name | Format-Custom |
Información sobre IP en los logs
1 2 3 | Get-EventLog Application | Where-Object Message -Match "192.168" Get-EventLog Application | Where-Object Message -Match "192.168" | Select-Object Message Get-EventLog Application | Where-Object Message -Match "192.168" | Select-Object Message | Format-Custom |
Ver todos los logs desde hace un día
1 | Get-EventLog -LogName System -EntryType Error, Warning -After (Get-Date).AddDays(-1) |
Ver intentos de inicio de sesión con credenciales explícitas (información por tipo de log)
1 | Get-EventLog -LogName Security | Where {$_.InstanceID -eq 4648} | Select-Object Message | Format-List |
Información sobre el mensaje «explore», analizar el proceso Explore
1 | Get-EventLog Application | Where-Object Message -Match "explore" | Select-Object Message | Format-Custom |
Ver logs sobre la aplicación de PowerShell
1 | Get-WinEvent -LogName "Microsoft-Windows-PowerShell/Operational" -ErrorAction SilentlyContinue |
Ver los logs de asignación de privilegios especiales en los inicios de sesión desde hace dos días
1 | Get-EventLog -LogName Security -InstanceId 4672 -After (Get-Date).AddDays(-1) | Sort-Object TimeGenerated | Out-GridView |
Reparación
Se entiende por reparar un sistema, corregir los problemas que tenga el sistema operativo. Los sistemas operativos disponen de herramientas que sirven para recuperar, reemplazar y corregir situaciones que impiden utilizarlo correctamente.
Copias de seguridad
En cualquier sistema operativo hay que asegurarse de que no se van a perder datos, y que si se produce la pérdida, por lo menos se podrán restaurar los datos perdidos. La duda no es saber si un disco duro fallará o no, sino cuándo lo hará, y para esto tenemos que estar preparados.
Una copia de seguridad consiste simplemente en tener duplicados los archivos en algún dispositivo o medio de almacenamiento, los archivos pueden ser de los usuarios o propios del sistema operativo.
Tipos de copias se seguridad:
- Copia completa. Se almacenan todos los archivos de los que se desea hacer copia y se marcan como copiados. Este tipo de copia requiere gran cantidad de tiempo y suficiente espacio de almacenamiento para guardar la copia.
- Copia incremental (progresiva). Se almacenan los archivos que se han modificado desde la última copia completa o incremental y se marcan como copiados.
Ejemplo
Simular mediante cadenas una copia de seguridad incremental
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #Simular copia incremental $valor1="hola" $valor2="hola a" $valor3="hola ad" $valor4="hola adi" $valor5="hola adio" $valor6="hola adios" $lunesc=$valor2.Replace($valor1,"");$lunesc $martesi=$valor3.Replace($valor2,"");$martesi $xi=$valor4.Replace($valor3,"");$xi $ji=$valor5.Replace($valor4,"");$ji $vi=$valor6.Replace($valor5,"");$vi #Qué valores han cambiado Compare-Object -ReferenceObject $valor2 -DifferenceObject $valor1 | where {$_.SideIndicator -eq "< =" -or $_.SideIndicator -eq "=>"} |
- Copia diferencial. Se almacenan los archivo que se han modificado desde la última copia completa y no se marcan como copiados.
Ejemplo
Simular mediante cadenas una copia de seguridad diferencial
1 2 3 4 5 6 7 8 9 10 | #Simular copia diferencial $valor1="hola" $valor2="hola a" $valor3="hola ad" $valor4="hola adi" $valor5="hola adio" $valor6="hola adios" $xi=$valor4.Replace($valor1,"");$xi $vi=$valor6.Replace($valor1,"");$vi |
Restauración
Consiste en restaurar archivos y la configuración del sistema, ayuda a corregir problemas. El restaurador utiliza puntos de restauración para hacer que los archivos del sistema y la configuración vuelvan al estado en que se encontraban en un momento anterior, sin que esto afecte a los archivos de los usuarios.
Los puntos de restauración se crean automáticamente todas las semanas (siempre y cuando no esté deshabilitado) y justo antes de los eventos de sistema importantes, como la instalación de un programa o controlador de dispositivo. También puede crear un punto de restauración manualmente.
El cmdlet que sirve para crear un punto de restauración
1 | Get-ComputerRestorePoint |
Parámetros y alias de los parámetros para el cmdlet Get-ComputerRestorePoint
1 2 3 4 5 6 7 8 9 10 11 12 13 | RestorePoint {} LastStatus {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |
El cmdlet que sirve para restaurar
1 | Restore-Computer |
Parámetros y alias de los parámetros para el cmdlet Restore-Computer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | RestorePoint {SequenceNumber, SN, RP} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} WhatIf {wi} Confirm {cf} |
Ejemplo
Crear un punto y restaurar
1 2 3 | Get-ComputerRestorePoint Restore-Computer -RestorePoint 255 Get-ComputerRestorePoint -LastStatus |