Cómo recostackr los loggings de sucesos de security para una sola categoría a través de Powershell

Estoy tratando de escribir un script que recoge el logging de security de todos nuestros controlleres de dominio cada hora y los almacena de forma remota; puedo recostackr los loggings de security, pero hay una manera de recostackr los loggings de security por categoría o número de evento de la DC? por favor hágamelo saber si cualquier pregunta adicional.

Mi código:

$Eventlogs = Get-WmiObject -Class Win32_NTEventLogFile -ComputerName $computer Foreach($log in $EventLogs) { if($Log.LogFileName -eq "Security") { $Now = [DateTime]::Now $FileName = "Security" +"_"+$Now.Month+$Now.Day+$Now.Year+"_"+$Now.Hour+$Now.Minute+$Now.Second $path = "\\{0}\c$\LogFolder\$folder\$FileName.evt" -f $Computer $ErrBackup = ($log.BackupEventLog($path)).ReturnValue if($clear) { if($ErrBackup -ne 0) { "Backup failed" "Backup Error was " + $ErrBackup } } } } Copy-EventLogsToArchive -path $path -Folder $Folder } 

2 Solutions collect form web for “Cómo recostackr los loggings de sucesos de security para una sola categoría a través de Powershell”

No es que Get-EventLog no obtenga la categoría de tarea, es sólo que no es el comportamiento pnetworkingeterminado del cmdlet para mostrarlo. Pero los datos siguen ahí.

 Import-Module ActiveDirectory foreach($server in Get-ADComputer -Filter *) { Get-EventLog -LogName Security -ComputerName $server | ? { $_.CategoryNumber -EQ 12544 } } 

Esto se complica aún más por el hecho de que las categorías de tareas están en realidad en formatting numérico – Event Viewer utiliza CategoryMessageFiles para traducir los numbers de categoría a nombres de categoría.

Puede encontrar la location de CategoryMessageFiles en el Registro, en HKLM\System\CurrentControlSet\services\eventlog\Security\Security (hay una subkey para cada logging de sucesos.)

La razón por la que se hace de esta manera es facilitar que los desarrolladores creen sus propios loggings de events y sus propias categorías de tareas para sus propias aplicaciones.

Aquí hay alguna documentation del desarrollador sobre cómo get las cadenas de CategoryMessage, pero sé que no quieres pasar por todo eso, así que lo mejor sería encontrar ejemplos del tipo de events para los que deseas filtrar. sus numbers de categoría y, a continuación, hacer un Switch($_.CategoryNumber) en ellos para traducirlos en lo que nunca cadenas que te gusta.

Edit: En realidad rascar todo eso. Ignora todo lo que acabo de decir. Esto debería servirle mucho mejor:

 Get-WMIObject -Query "SELECT * FROM Win32_NTLogEvent WHERE LogFile='Security'" | Select EventCode, CategoryString 

Lo siento, pero no puedes hacerlo (copy de security de un file de logging de events filtrado en un nuevo file de logging de events) desde la command-line de Windows Server 2003.

Puede exportar un subset de los events en un logging de events a XML o un file CSV.

Puede utilizar Get-EventLog y filtrar todos los events de la Categoría de tarea con Where-Object . Como Ryan ya ha señalado, aunque la categoría de tarea no es parte de la salida por defecto, sigue ahí

El siguiente ejemplo sólo funciona en Windows Server 2003 (R2 incluido) y devuelve todos los events del logging de security en las categorías "Inicio de session / cierre de session" y "Acceso a objects"

 Get-EventLog -LogName Security | Where-Object {@("Logon/Logoff","Object Access") -contains $_.Category} 

Esto es fácil de leer y mantener, pero no funciona muy bien, ya que PowerShell busca y serializa TODAS las inputs del logging de events, antes de filtrar.

Basándose en el ejemplo de Ryans, utilicemos un filter WQL para llevarlo a cabo:

 $events = Get-WMIObject -Query "SELECT * FROM Win32_NTLogEvent WHERE LogFile='Security' AND (CategoryString = 'Logon/Logoff' OR CategoryString = 'Object Access')" 

Para save los events filtrados en un file, puede exportarlos como filas en un file CSV:

 $events | Export-Csv C:\myEvents.csv -NoTypeInformation 

o (si no tiene ningún problema al comprimir la copy de security pero desea mantener el formatting del post) utilice el cmdlet Export-CliXML para enviarlo a XML:

 $events | Export-CliXML C:\myEvents.xml 

A continuación, puede importarlos a la command-line cuando necesite searchlos en el futuro:

 $events = Import-CliXML C:\myEvents.xml 

La salida XML se serializa y requiere un montón de almacenamiento, pero como los events de logging de security se llenan en su mayoría con caracteres de espacio en blanco, el espacio en disco se recupera fácilmente cerrando los files. Consigo una proporción de compression del cerca de 98% con una carpeta común del cierre relámpago de un file de XML que contiene aprox. 200.000 events de security.

Podría ser capaz de lograr una mejor compression con 7-zip

  • DFS "clobering" files
  • ¿Cuál es la dirección OID para get la carga de CPU y el uso de RAM física en WinXPsp3 y WinServer2003r2sp2 a través de SNMP?
  • ¿Cómo puedo conectarme a una máquina específica con DFS?
  • ¿Cómo puedo restaurar Windows Server 2003 R2 Active Directory - Obtención de error 0xc00006a
  • Windows Server 2003 R2, SMB, puerto alternativo?
  • El nuevo controlador de dominio principal no iniciará Active Directory a menos que se arranque DC antiguo
  • Cómo hacer que el service esté activo y funcionando aunque la count de administrador se desconecte
  • DFS-R: cómo volver a sincronizar sin connection, gran cantidad de datos eliminados
  • Acceso remoto de PowerShell denegado
  • Windows Server 2003 r2 vs 2008 r2 - Rendimiento para SQL Server
  • Windows 2003 Server de repente se cae Conexiones a todo less PING y el puerto 80 (server web)
  • Acceso anónimo al recurso compartido de SMB alojado en Server 2008 R2 Enterprise
  • ¿Por qué no puedo get ASP.NET 4.0 para trabajar en Windows Server 2003 R2?
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.