Como se ha mencionado en una, un cliente septiembre puede tener un servicio de SMC roto y es muy posible que nunca se sabe que no hay nada malo (a menos que utilice la secuencia de comandos que se encuentra en ese puesto). Esta es la secuencia de comandos PowerShell que le permitirá reparar de forma remota la mayor parte de los clientes rotos. De nuevo, como con el guión de auditoría, debe tener derechos de administrador en el equipo que está ejecutando este script en. Puesto que utiliza WMI para ejecutar un proceso remoto, WMI debe ser también funciona correctamente en el equipo remoto.
El guión se compromete a reparar un cliente a la vez utilizando el parámetro "-compname". Sin embargo, puede modificar la secuencia de comandos para leer un archivo de texto mediante la adición de otra "ParaCada" y un "Get-Content" para el guión.
################################################## ############### # # # - Antivirus SMC reparación de servicio para clientes con corrupta # # políticas de seguridad. # # - Requiere un Parm de comandos de -compname # # - Parms se pueden cambiar para aceptar una lista de varios PC # # # # - Escrito por Jim Melton # # # ################################################## ############### ## Acepta el nombre del equipo desde la línea de comandos con -compname param ([cadena] $ CompName = $ (tiro "Entrada de texto es Requerido")) Write-Host $ CompName ## Carga de la clase System.ServiceProcess .net, establezca la acción de error de ## Sliently Continuar, e inicializar algunas variables. [System.Reflection.Assembly] :: LoadWithPartialName ( 'System.ServiceProcess') $ ErrorActionPreference = "Continuar" $ SEPreg = "SOFTWARE \ Symantec \ Symantec Endpoint Protection \ AV" $ SEPhome = "Directorio principal" $ SEPinstall = "" $ DefPaths = "SOFTWARE \ Symantec \ SharedDefs" $ SMCkey ="SOFTWARE \ Symantec \ Symantec Endpoint Protection \ SMC" $ SMCsvc = "Cliente de Symantec Management" $ SEPnetwork = "" ## Crear un nuevo objeto de la pinta para poner a prueba para ver si el equipo remoto ## Está en línea por lo que el guión no bombardear, asignar a un -compname ## Variable y ping al equipo. $ Ping = New-Object System.Net.NetworkInformation.Ping $ = $ Ordenador CompName $ Respuesta = $ ping.send ($ ordenador) ## Si las respuestas de ordenador, abrir un proceso remoto en el equipo roto, ## Abrir el registro (HKLM en este caso), y contar las entradas de registro SEP ## Para asegurarse de SEP instalado realmente. Si (el "éxito" $ reply.status eq) { $ RemoteProcess = [WmiClass] "\\ $ ordenador \ ROOT \ CIMV2: Win32_Process" $ OpenRegistry = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine,$computer) $ = $ DefsKey OpenRegistry.OpenSubKey ($ DefPaths, $ True) [Int] $ = $ ValueCount DefsKey.ValueCount ## Si SEP instalado y tiene entradas de registro válido para conseguir caminos de, ## Encontrar la SEP instalarcamino, escribir a la pantalla, cambiar el nombre de la existente ## Serdef.dat, copiar una nueva serdef.dat, y reinicie el servicio SMC utilizando ## Nuestro proceso de WMI remoto. Si ([int] $ ValueCount -gt 0) { If ($ DefsKey.GetValueNames () -ne $ null) { $ = $ SEPpath OpenRegistry.OpenSubKey ($ SEPreg, $ true) $ = $ SEPinstall SEPpath.GetValue ( "$ SEPhome") $ = $ SEPtemp SEPinstall.length [Int] $ SEPtemp = [int] $ SEPtemp - 3 $ = $ SEPinstall SEPinstall.substring ($ SEPinstall.length - [int] $ SEPtemp) Write-Host "de Symantec Endpoint Protection está instalado en $ SEPinstall." Copy-Item "\\ $ ordenador \ c $ \ $ SEPinstall \ serdef.dat" "\\ $ ordenador \ c $ \ $ SEPinstall \ serdef.old" -Recurse $ RemoteProcess.Create ( "c: \ $ SEPinstall \ smc.exe -start") Write-Host "Inicio de servicio de SMC." Write-Host "Terminado" } else { Write-Host, "SEP No instale encontrado" } } else { Write-Host "No instalado" } } Más{ Write-Host "ordenador no responde a un ping" #} }