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

  • Escape windows repair instalar y comenzar en arranque normal?
  • DFS "clobering" files
  • Get-ExchangeCertificate: "No se encontró el contenedor de keys solicitado"
  • Acceso a una nueva installation de Windows 2003 Server R2 desde la networking
  • Problema de Windows fileshare sobre VPN, no puede abrir / copyr ciertos files. Problema de connection en networking?
  • Usuarios de Active Directory: todos los attributes de forma repentina
  • Ver / Buscar todos los files comprimidos en el server?
  • No se puede encontrar "Tiempo de locking de lectura" y "Tiempo de locking de escritura" para la delegación en la unidad organizativa
  • Windows 2003 servidor de acceso lento
  • Perfiles obligatorios en un Server 2003 TS Box
  • No se puede iniciar session en RDP en Server 2003 r2
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.