close

Instantánea de punto final a Global Edge Security

Si usted tiene clientes cada vez administrados que ejecutan Symantec Endpoint Protection 11 (SEP), que sepa cómo lamentablemente insuficiente la interfaz de gestión SEP es para determinar la salud de sus clientes. Si un equipo es conseguir una política corrupta, es probable que el servicio de cliente de administración de Symantec (SMC) se detendrá y no volverá a arrancar. Cuando esto sucede, el componente de septiembre responsable de actualizar las definiciones y los informes de las definiciones de fecha deja de funcionar. El componente de análisis en tiempo real - el servicio de Symantec Endpoint Protection - continuará funcionando, pero nunca va a actualizar. Dado que el servicio que le indica al Administrador de septiembre que un cliente no está actualizado no funciona, lo más probable es que nunca se sabe sobre él a menos que uno (o más) de los usuarios finales pasa a informar de ello.

Por lo tanto, con el fin de encontrar los clientes SEP rotos en mi compañía - cerca de 14.000 ordenadores en distintos lugares del país - Me volví a PowerShell y .NET Framework para hacer el trabajo pesado. Los resultados fueron muy sorprendente y desconcertante. Cientos de nuestros ordenadores estaban fuera de fecha y no informar al gestor-SEP-. Esta información permitió actualizar nuestros ordenadores utilizando una combinación de algunos de automatización y el buen ol 'moda Sneaker Net.

Esta secuencia de comandos supone un par de cosas:

    Debe tener privilegios de administrador en los equipos que están auditando. Compartir archivos e impresoras está habilitada en los equipos. Usted tiene una lista bastante sólido de nombres de equipos para ejecutar el script de PowerShell en contra (utilicé una lista de todos los objetos de SCCM equipo de Active Directory descubiertos).
################################################## ############### # # # - Antivirus chequeo de secuencias de comandos # - Objetos de equipo de auditoría de un archivo de texto especificado en # Tiempo de ejecución. Comprueba si la versión de AV, se detuvieron / marcha # servicios, y las fechas de definición. # # - Escrito por Jim Melton # ** No dude en utilizar y modificar este script según sea necesario. # Sólo por favor dar crédito si lo hace. # ################################################## ############### ## Parámetro de línea de comandos de configuración para permitir al usuario especificar el contenido ## Archivos en tiempo de ejecución. El parámetro es -FileName param ([cadena] $ archivo = $ (tiro "Entrada de texto es Requerido")) Write-Host $ archivo ## Ensamblaje de carga utilizado para interrogar a los servicios en la máquina remota. [System.Reflection.Assembly] :: LoadWithPartialName ( 'System.ServiceProcess') $ ErrorActionPreference = "Continuar" ## Establecer las variables $ SMCsvc = "Cliente de Symantec Management" $ SMCstatus = "" $ SEPsvc = "Symantec Endpoint Protection" $ SAVsvc = "Symantec Antivirus" $ SAV8svc = "SymantecAntivirus Cliente " $ Path = "c $ \ Archivos de programa \ Archivos comunes \ Symantec Shared \ VirusDefs" $ Savepath = "\\ server \ share \" ## Instantiate Excel ComObject y escribir títulos en una hoja de cálculo. $ Excel = New-Object -ComObject Excel.Application $ = $ Verdadera excel.visible $ = $ Excel.Workbooks.Add libro () $ = $ Hoja workbook.Worksheets.Item (1) $ Worksheet.Cells.Item (1,1) = "Nombre del equipo" $ Worksheet.Cells.Item (1,2) = "Dirección IP" $ Worksheet.Cells.Item (1,3) = "Versión AV" $ Worksheet.Cells.Item (1,4) = "definiciones de virus" $ Worksheet.Cells.Item (1,5) = "Estado" $ = $ Gama worksheet.UsedRange $ Range.Interior.ColorIndex = 19 $ Range.Font.ColorIndex = 11 $ = $ True range.Font.Bold $ IntRow = 2 ## Crear objeto Ping $ Ping = New-Object System.Net.NetworkInformation.Ping ## Obtener datos de archivo especificado por el usuario $ ColComputers = Get-Content $ archivo foreach ($ ordenador en $ colComputers) { ## Cero las variables en la parte superior del bucle y ping a la siguiente Machin ## en la lista. $ IPaddress = "" $ AVservice ="" [Cadena] servicio $ = "" $ VirDate = "" $ Respuesta = $ ping.send ($ ordenador) $ IPaddress = [cadena] $ reply.Address ## Comprobar respuesta de ping. Si se trata de un éxito, de verificar la ruta Symantec Shared archivos para ver si ## existe. Si la ruta es válida, obtener el contenido de definfo.dat y analizar el ## Fecha de definición y rev. Si (el "éxito" $ reply.status eq) { $ ValidPath = Test-Path "\\ $ ordenador \ $ path" If ($ ValidPath -EQ "Verdadero") { $ DefInfo = Get-Content "\\ $ ordenador \ $ Path \ definfo.dat" $ = $ Defline DefInfo [1] $ = $ DefYear DefLine.substring (8,4) $ = $ DefMonth DefLine.substring (12,2) $ = $ DefDay DefLine.substring (14,2) Revisión $ = $ DefLine.substring (17,3) [Int] $ = $ DEFDATE DefLine.Substring (8,8) [Cadena] $ DEFDATE = "$ DefMonth" "-" "$ DefDay" "-" "$ DefYear" $ VirDate = [fecha y hora] $ DEFDATE } ## Si no existe la ruta o definfo.dat, rescatar a los de la sentencia if. else { $ VirDate = $ null continuar } ## Consultar el mando a distanciamáquina para la SEP, SAV, o servicios SAV 8x RTVSCAN. También, ## Consultar el servicio de SMC-SEP-. Estos son por separado con el fin de asegurarse de ## Que tanto los servicios SEP y SMC se están ejecutando en una máquina. $ = Servicios [System.ServiceProcess.ServiceController] :: GetServices ($ informáticos) | ` donde {(($ _. idioma -eq $ SEPsvc) -o ($ _. idioma -eq $ SAVsvc) ` -o ($ _. idioma -eq $ SAV8svc))} $ SMCservice = [] :: System.ServiceProcess.ServiceController GetServices ($ ordenador) | ` donde {($ _. idioma -eq $ SMCsvc)} ## Compruebe para ver qué servicios están presentes. Si no hay servicios en el equipo, que escribe ## En la hoja de cálculo y continuar con el siguiente equipo. foreach ($ servicio en los servicios $) { If ($ service.displayname -eq $ null) { $ Worksheet.Cells.Item ($ intRow, 1) = $ ordenador $ Worksheet.Cells.Item ($ intRow, 2) = $ IPaddress $ Worksheet.Cells.Item ($ intRow, 5) = "Los servicios no están presentes en $ ordenador." $ = $ IntRow intRow 1 } ## De lo contrario, si se trata de SAV o SAV 8, inserte SAV en $ AVService. else { If (($ service.DisplayName -eq $ SAVsvc) -o ($ service.DisplayName -eq $ SAV8svc)) { $ AVservice = "Symantec Antivirus" } ## Si no es nulo o SAV, entonces tiene que ser-SEP-. Inserte en septiembre $ AVService. También comprobar para ver si ## El servicio de SMC se detiene. Si es así, establecer $ SMCstatus en Detenido. else { If ($ service.DisplayName -eq $ SEPsvc) { $ AVservice = "Symantec Endpoint Protection" If ($ SMCservice.DisplayName -eq $ SMCsvc) { Si ([cadena] $ SMCservice.status -eq 'Detenido') { $ SMCstatus = "Stopped" } } } } ## Si el equipo está en línea y tiene instalado AV, introduzca su información en la hoja de cálculo. ## Si se detiene el servicio SMC, adjuntará dicha información al bloque de estado que muestra la SEP ## RTVScan estado. De lo contrario, basta con insertar el estado de RTVScan. $ Worksheet.Cells.Item ($ intRow, 1) =$ ordenador $ Worksheet.Cells.Item ($ intRow, 2) = $ IPaddress $ Worksheet.Cells.Item ($ intRow, 3) = $ AVservice $ Worksheet.Cells.Item ($ intRow, 4) = "$ DEFDATE" "rev" "$ Revision" If ($ SMCstatus -eq "Stopped") { $ Worksheet.Cells.Item ($ intRow, 5) = [cadena] $ service.Status ",` sin embargo, el servicio de SMC se detiene ". } else { $ Worksheet.Cells.Item ($ intRow, 5) = [cadena] $ service.Status } } ## Incrementar la fila de hojas de cálculo y restablecer $ SMCstatus en blanco. $ = $ IntRow intRow 1 $ SMCstatus = "" } } ## Si la máquina no responde a un ping, inserte que en la hoja de cálculo. else { If ($ reply.status -eq "TimedOut") { $ Worksheet.Cells.Item ($ intRow, 1) = $ ordenador $ Worksheet.Cells.Item ($ intRow, 3) = $ IPaddress $ Worksheet.Cells.Item ($ intRow, 5) = "no respondió a un ping." $ = $ IntRow intRow 1 } ## Si la máquina no responde a un ping y la dirección IP no es válida, el nombre del equipo ## No hay que bevalid por más tiempo. else { $ IPaddress = "Nombre del equipo esno es válido." $ Worksheet.Cells.Item ($ intRow, 1) = $ ordenador $ Worksheet.Cells.Item ($ intRow, 3) = $ IPaddress $ Worksheet.Cells.Item ($ intRow, 5) = "no respondió a un ping." $ = $ IntRow intRow 1 } } ## Una vez que los datos son completamente escrito en la hoja de cálculo, ajuste automático de todas las columnas a la anchura de los datos. $ Range.EntireColumn.AutoFit () | Out-Null } ## Declaración Switch mediante un interruptor de expresión regular para determinar la ubicación que está siendo auditada en base a la ## Nombre de archivo del archivo de entrada. Si necesita un informe de Adhoc, utilice computers.txt que el de entrada. Cambiar -regex ($ archivo) { "Loc01comps.txt" {$ Ubicación = "Ubicación1"} "Loc02comps.txt" {$ Ubicación = "Location2"} "Loc03comps.txt" {$ Ubicación = "Location3"} "Loc04comps.txt" {$ Ubicación = "LOCATION4"} "Loc05comps.txt" {$ Ubicación = "Location5"} "Loc06comps.txt" {$ Ubicación = "Location6"} "Loc07comps.txt" {$ Ubicación = "Location7"} "Loc08comps.txt" {$ Ubicación = "Location8"} "Loc09comps.txt" {$ Ubicación = "Location9"} "Loc10comps.txt"{$ Ubicación = "Location10"} "Loc11comps.txt" {$ Ubicación = "Location11"} {Ubicación = "Informe Adhoc"} $ "computers.txt" predeterminado {$ Ubicación = "Otros"} } ## Guarde la hoja de cálculo de la ruta en la variable usando el nombre determinado a partir del interruptor de seguridad. $ SpreadSheetName = $ $ savepath ubicación ". Xls" $ Workbook.Worksheets.item (1) .Nombre = $ Localización ## Compruebe si existe la hoja de cálculo. Si lo hace, borrarlo y volver a crearlo, y guardarlo. ## Intento de cerrar Excel y poner fin a la ComObject. Esto no parece funcionar bien con Excel 2K7, ## Por lo que estamos llamados procesos Excel matando. Esto cerrará todos los procesos de cálculo de Excel. Si (Test-Path $ SpreadSheetName) { Remove-Item $ SpreadSheetName Write-Host $ SpreadSheetName $ Excel.ActiveWorkbook.SaveAs ($ SpreadSheetName) $ Excel.Quit () [System.Runtime.Interopservices.Marshal] :: ReleaseComObject ($ excel) Remove-Variable excel Get-Process -Nombre Excel |Matar } Más{ $ Excel.ActiveWorkbook.SaveAs ($ SpreadSheetName) $ Excel.Quit () [System.Runtime.Interopservices.Marshal] :: ReleaseComObject ($ excel) Remove-Variable excel Get-Process -Nombre Excel | Matar }

Previous Post     Next Post


TAGS


CATEGORIES

.