martes, 10 de abril de 2012

No se puede instalar un Sitio Primario, opción en gris

Hola!

Justo acabo de ver a un compañero que le sucedió esto y quiero compartirlo.

Cuando se intenta instalar SCCM con SP2 la opción de instalar un sitio primario aparece en gris.
Esto ocurre cuando no se utiliza un DVD completo de SCCM para realizar la instalación. (Seguramente se esté utilizando solo el Service Pack 2 para instalar el SCCM).

Buscar una versión "slipstream SCCM with SP2"

Saludos!

martes, 27 de marzo de 2012

Colecciones dinámicas por horas

Paso a dejarles unas colecciones que les serán de utilidad. Imaginen que por ejemplo quieran crear 2 planes de ahorro de energia dependiendo si es por la mañana o si es por la tarde.

Utilizando esta consulta, todas la máquinas se agregarán a esta colección desde las 8AM hasta las 3PM. Antes de las 8AM y luego de las 3PM desapareceran de la colección. (Es mejor reducir el tiempo de actualización de la colección para que sea mas en tiempo real)

select R.ResourceID,
R.ResourceType,
R.Name,
R.SMSUniqueIdentifier,
R.ResourceDomainORWorkgroup,
R.Client
from SMS_R_System as r
where (getdate() is like "% 8:%AM"
or getdate() is like "% 9:%AM"
or getdate() is like "% 10:%AM"
or getdate() is like "% 11:%AM"
or getdate() is like "% 12:%PM"
or getdate() is like "% 1:%PM"
or getdate() is like "% 2:%PM"
or getdate() is like "% 3:%PM")


Como pueden ver utilizo la funcion de GETDATE.

Tambien pueden crear una coleccion con  las máquinas que tienen el agente instalado hace mas de 7 días

select SMS_R_SYSTEM.ResourceID,
SMS_R_SYSTEM.ResourceType,
SMS_R_SYSTEM.Name,
SMS_R_SYSTEM.SMSUniqueIdentifier,
SMS_R_SYSTEM.ResourceDomainORWorkgroup,
SMS_R_SYSTEM.Client
from
SMS_R_System  
WHERE
DATEDIFF(Day, SMS_R_System.CreationDate, GetDate()) > 6


Espero que les ayude como base para otras colecciones.

lunes, 26 de marzo de 2012

Instalación detallada de SCCM 2007

Hola

Les dejo un viejo video que realicé donde se detalla la instalación de System Center Configuration Manager 2007.

Aquí podrán ver los requesitos del SCCM 2007, aspectos de la migración de SMS 2003 a SCCM 2007 y características de la nueva versión.

También se comenta en detalle que modificaciones se hacen en el Active Directory y como realizarlas.
Y por ultimo un paso a paso detallado y explicado de cómo realizar la instalación.

Creo que vale la pena para aquellos que desean migrar de SMS 2003 y para aquellos que ya poseen SCCM 2007 pero desean saber que se realiza durante la instalación.

Espero sus comentarios.


lunes, 12 de marzo de 2012

Logs que utiliza System Center Configuration Manager 2007

El objetivo de este post es ayudarles a ustedes a saber que logs buscar para resolver problemas en SCCM 2007.
Les adjunto un documento donde se detallan todos los principales componentes de SCCM y todos los logs que ellos poseen.

Este documento les será de utilidad para saber que logs mirar cuando falla un componente en especial y así evitar controlar logs que no tienen que ver con el componente en sí.

Saludos
Gastón Gardonio

martes, 21 de febrero de 2012

Forzar que el agente envíe la información de DCM a su sitio.

Hola

Ultimamente estoy trabajando bastante con DCM y una de las cosas que mas me molestaron fue que tenia que esperar unos 15 minutos para que el agente envíe el informe de la evaluación del DCM al sitio para ser luego procesado.

Para saltarse estos 15 minutos, que están configurados por código en el el agente, es necesario utilizar la herramienta SendSchedule.exe.
Esta herramienta viene dentro de las SCCM client tools (ConfigMgr 2007 Toolkit V2\ClientTools)

Si bien el SendSchedule.exe tiene varias opciones (ejecutar SendSchedule.exe /L) no esta clara cual sirve para enviar los informes de DCM

Debéis utilizar la opción "11"

Message GUID: {00000000-0000-0000-0000-000000000111}     DisplayName: Send Unsent State Message

Ejecutar:

SendSchedule {00000000-0000-0000-0000-000000000111} MáquinaCliente

Cuando lo ejecutemos se enviará el informe instantáneamente y lo veremos procesado por el site rápidamente, seguramente antes de 15 minutos :D

Espero que les sea de utilidad

Saludos!

Gastón Gardonio

lunes, 6 de febrero de 2012

Antivirus y SCCM ¿Que exclusiones tengo que configurar?

Hi!
Un tema interesante y que quizás requiere siempre de buscar documentación de distintos servicios es el de las excepciones que se deben hacer en los antivirus para que no se vea afectado el SCCM.

El SCCM procesa gran cantidad de datos y sobre todo son gran cantidad de ficheros. Si el antivirus puede llegar a afectar la performance y hasta retener ficheros que no deberían ser monitorizados.

Paso a detallarles las recomendaciones que siempre se hacen desde Microsoft:

Se debe excluir del escaneo en tiempo-real:
  • <carpeta de instalacion de SCCM>\Inboxes (también  excluir todas sus subcarpetas
  • SMS_CMM\ServiceData (también  excluir todas sus subcarpetas)
  • Logs de SQL (logs de aplicación y de Base de datos)
  • WMI (%windir%\system32\wbem y %WINDIR%\SysWOW64\WBEM con todas sus subcarpetas)

En todos los site que tengan el IIS instalado deberíamos excluir:
  • El directorio de compresión de ficheros (por defecto es %systemroot%\IIS Temporary Compressed Files)
  • %systemroot%\system32\inetsrv
  • Excluir las extensiones de .log
En caso que tengan que justificar estos cambios les dejo los KB de Microsoft:
KB327453 Programas antivirus pueden contribuir al trabajo acumulado de archivo en SMS 2.0, SMS 2003 y Configuration Manager 2007
KB817442 Puede devolverse un archivo de 0 bytes cuando está habilitada la compresión en un servidor que ejecuta IIS
KB821749 Software antivirus puede ocasionar que IIS detenga de forma inesperada

miércoles, 25 de enero de 2012

Administrando equipos en Workgroups o en Sitios sin relaciones de confianza

Hola!

Bueno vamos a dejar claro como funciona SCCM en equipos que estan fuera del dominio o en sitios donde no hay relaciones de confianza.

Necesitamos 5 cosas:
  1. El rol de Server Locator Point.
  2. Configurar la cuenta de Network Access Account.
  3. Resolver el nombre del servidor Server Locator Point.
  4. Instalar el agente manualmente.
  5. Conectividad y puertos configurados correctamente.
1.- Para empezar debemos tener instalado el rol de Server Locator Point. Este rol se encargará de suministrar a los agentes el Management Point correcto con el que deben contactar. Si no lo tenemos debemos instalarlo.

2.- Debemos configurar la cuenta de Network Access Account para que los equipos fuera del dominio utilicen esta cuenta para acceder a los recursos que estan dentro del dominio, como por ejemplo los paquetes que estan en los Distribution Points.


3.- Dado que estos equipos no tienen acceso al directorio activo deben buscar al SLP utilizando DNS o WINS (igualmente ocurre si no extendemos el esquema de Directorio Activo).
Suele ocurrir que los equipos en workgroups no tienen ni DNS ni WINS configurados, por lo que hará falta modificar el fichero HOST (dentro de C:\Windows\System32\drivers\etc) para que puedan resolver el nombre.
Recomiendo agregar tanto una entrada para el nombre Netbios como otro para el FQDN del servidor.

4.- Por otro lado el agente de SCCM no se puede lanzar utilizando el Client Push Installation por lo que hay que realizarlo manualmente:

Utilizar los parametros:
CCMSETUP.EXE /MP:SERVIDORSCCM /SMSSLP:SERVIDORSCCM /FSP:SERVIDORSCCM /SITECODE:XXX

Con esto nos garantizaremos que los agentes se instalen apuntando al servidor/sitio de SCCM que deseemos. (En caso de que no asignemos a mano el Management Point, el Server Locator Point deberemos modificar tambien el fichero LMHOST dentro de C:\Windows\System32\drivers\etc, si tienen dudas pregunten y les detallo como editarlo.)

5.- Comprobar que podemos acceder al Management Point desde el equipo en workgroup. Para ello abrimos un Internet Explorer e ingresamos a los siguientes sitios (reemplazar SERVIDORSCCM por su servidor de SCCM.

http://SERVIDORSCCM/sms_mp/.sms_aut?mplist
http://SERVIDORSCCM/sms_mp/.sms_aut?mpcert
Si nos resuelve la pagina veremos unas webs con un XML.

Y eso es todo! No olviden de leer detalladamente las limitaciones que tiene trabajar con equipos fuera del dominio.

http://technet.microsoft.com/en-us/library/bb632435.aspx
http://technet.microsoft.com/en-us/library/bb932160.aspx
http://technet.microsoft.com/en-us/library/bb632476.aspx
http://technet.microsoft.com/en-us/library/bb680962.aspx
http://technet.microsoft.com/en-us/library/cc161989.aspx

Saludos!

viernes, 20 de enero de 2012

Como poner en mantenimiento de SCOM los equipos de una colección de SCCM?

Hola a todos!

Ayer mismo y como suele ocurrir muchas veces me han solicitado resolver una idea genial de un administrador en el mismo día...

Este administrador de SCOM deseaba poner en mantenimiento a las máquinas que aparecian en una colección de SCCM por medio de un script en powershell...

¿Como poner en mantenimiento en SCOM las máquinas que se encuentran en una colección de SCCM?

Primero genero una consulta de SQL para obtener los datos de la colección y lo guardamos en C:\coleccion.sql

use sms_SITE
Set nocount on
select distinct System_Resource_N_ARR.Resource_Names0
from v_FullCollectionMembership inner join v_GS_COMPUTER_SYSTEM on v_FullCollectionMembership.ResourceID = v_GS_COMPUTER_SYSTEM.ResourceID join v_Collection on v_Collection.CollectionID = v_FullCollectionMembership.CollectionID
join System_Resource_N_ARR on v_GS_COMPUTER_SYSTEM.ResourceID = System_Resource_N_ARR.ItemKey
where v_Collection.Name like 'NOMBRE DE LA COLECCION DE SCCM'


Reemplazar sms_SITE y 'NOMBRE DE LA COLECCION DE SCCM' por el su base de datos de SCCM y el nombre de la colección que desean obtener las máquinas.

Luego creamos el siguiente scritp de powershell:

osql -E -n -S ServidorSQL\Instancia -iC:\Coleccion.sql -h-1 -s "," -w 380 -oC:\Coleccion.txt
(gc C:\Coleccion.txt) -replace ' ' | sc C:\Coleccion.txt
$maquinas =  (get-content -path C:\Coleccion.txt)
foreach ($maquinas in $maquinas)
{
$rootMS = 'ServidorRMS'
$computerPrincipalName = $maquinas
$minutes = '20'
$comment = 'Reiniciando-desde-SCCM TRUE'
$reason =  'PlannedOther'


Add-PSSnapin "Microsoft.EnterpriseManagement.OperationsManager.Client" -ErrorVariable errSnapin;
Set-Location "OperationsManagerMonitoring::" -ErrorVariable errSnapin;
new-managementGroupConnection -ConnectionString:$rootMS -ErrorVariable errSnapin;
set-location $rootMS -ErrorVariable errSnapin;

$computerClass = get-monitoringclass -name:Microsoft.Windows.Computer
$computerCriteria = "PrincipalName='" + $computerPrincipalName + "'"
$computer = get-monitoringobject -monitoringclass:$computerClass -criteria:$computerCriteria
$startTime = [System.DateTime]::Now
$endTime = $startTime.AddMinutes($minutes)
if($computer.InMaintenanceMode -eq $false)
{
    "Putting " + $computerPrincipalName + " into maintenance mode"
   New-MaintenanceWindow -startTime:$startTime -endTime:$endTime -comment:$comment -Reason:$reason -monitoringObject:$computer
}

}

Reemplazar los siguientes campos:
$rootMS = 'ServidorRMS' Con el servidor RMS de SCOM
$minutes = '20' Con los minutos que van a estar en mantenimiento

$comment = 'Reiniciando-desde-SCCM TRUE' Descripción del reinicio
$reason = 'PlannedOther'

NOTA IMPORTANTE: En el equipo que ejecutemos este powershell deberemos tener instalada la consola de SCOM y el usuario deberá ser administrador de SCOM y de SCCM.

Esta claro que el script se puede mejorar y bastante pero dado que me lo solicitaron "para ayer" creo que ya estoy contento con que funcione.

Saludos!

Gastón

jueves, 19 de enero de 2012

Ventanas de mantenimiento en SCCM

Hola a todos

Últimamente me han realizado varias consultas de como funcionan exactamente las ventanas de mantenimiento dado que a varios conocidos les ha traído dolores de cabeza.

Lo que debemos saber de las ventanas de mantenimiento:

1.       Las ventanas no vienen configuradas por defecto en SCCM. Eso significa que por defecto se va a ejecutar advertisements, actualizaciones y task sequences sin restricciones de tiempo.

2.       Las ventanas de mantenimiento se configuran a nivel de colección por lo que afecta a todos los equipos dentro de ella.

3.       Comúnmente un equipo se encuentra dentro de varias colecciones por lo que puede tener varias ventanas de mantenimiento. En ese caso el equipo sumará todas las ventanas, ya estén separadas o se solapen en tiempo.

4.       Si en algún momento un equipo deja de pertenecer a la colecciones con ventana de mantenimiento, este comenzará a trabajar como si nunca haya tenido ventana, instalando y reinciando cuando este configurado en el advertisement, actualizació o task sequence.

Seguramente el punto 4 es el que trae más dolores de cabeza a los administradores de SCCM y es el que voy a tratar.

Como por defecto no hay ventanas de mantenimiento tendremos disponibilidad de ejecutar tareas las 24 horas.

Cuando configuramos 1 ventana de mantenimiento pasamos a crear una restricción en la ejecución de tareas.

En este ejemplo configuramos una ventana de mantenimiento de 3 horas, de 13:00 a 16:00.


  • De 00:00 a 14:59 no se ejecutará nada ni se reiniciará el equipo.*
  • De 13:00 a 16:00. Se ejecutarán tareas y se reiniciará el equipo.
  • De 16:01 a 23:59 no se ejecutará nada ni se reiniciará el equipo.*
*Se pueden llegar a configurar tareas que ignoren la configuración de la ventana de mantenimiento permitiendo instalar y/o reiniciar el equipo.

Ahora pregunto, ¿Qué sucede si le quitamos a este equipo la ventana de mantenimiento?

Ejecutará todo nuevamente y reiniciará el servidor si lo requiriera, volverá al comportamiento por defecto.


Recomendación:

Si tenemos equipos que siempre tienen una ventana de mantenimiento y las vamos configurando nosotros es mejor siempre dejar una ventana de mantenimiento “antigua” que tenga una ventana con una fecha que ya pasó para evitar que el equipo cambie al estado por defecto.

Espero que les sea de utilidad y responda a sus preguntas.

Por favor, comentar si desean algun teman específico.

Saludos

Gastón Gardonio

martes, 17 de enero de 2012

Modificando el inventario para reportar CPU y Cores correctamente

Hola,

Vamos a hablar de como obtener información de procesadores.

Actualmente existe un problema para obtener esta información en los sistemas Windows 2003 / Windows XP. Estos sistemas operativos no diferencian en WMI los Cores de los Cores Lógicos, es decir si tenemos 2 CPUs con 2 cores cada uno y habilitamos HyperThreading el SCCM nos mostrará un total de 16 Cores...

Hace ya un tiempo se lanzaron hotfixs para solucionar este problema:

KB932370 El número de procesadores físicos hyperthreading habilitado o el número de procesadores multinúcleo físicos se informa incorrectamente en Windows Server 2003
http://support.microsoft.com/kb/932370/es

KB936235 El número de procesadores físicos hyperthreading habilitado o el número de procesadores multinúcleo físicos se informa incorrectamente en Windows XP
http://support.microsoft.com/kb/936235

Luego de tener desplegado este KB podremos modificar el inventario de SCCM para que obtenga dicha información:

Modificar el smsdef.mof agregando este contenido al final (no hace falta deshabilitar la clase sms_processor):

[ SMS_Report (TRUE),
SMS_Group_Name ("Processor_Cores"),
SMS_Class_ID ("CUSTOM|Processor_Cores|1.0")]

class win32_processor : SMS_Class_Template
{
[SMS_Report (FALSE) ] uint16 AddressWidth;
[SMS_Report (FALSE) ] uint16 Architecture;
[SMS_Report (FALSE) ] uint16 Availability;
[SMS_Report (FALSE) ] string Caption;
[SMS_Report (FALSE) ] uint32 ConfigManagerErrorCode;
[SMS_Report (FALSE) ] boolean ConfigManagerUserConfig;
[SMS_Report (FALSE) ] uint16 CpuStatus;
[SMS_Report (FALSE) ] uint32 CurrentClockSpeed;
[SMS_Report (FALSE) ] uint16 CurrentVoltage;
[SMS_Report (FALSE) ] uint16 DataWidth;
[SMS_Report (FALSE) ] string Description;
[SMS_Report (TRUE), key ] string DeviceID;
[SMS_Report (FALSE) ] boolean ErrorCleared;
[SMS_Report (FALSE) ] string ErrorDescription;
[SMS_Report (FALSE) ] uint32 ExtClock;
[SMS_Report (FALSE) ] uint16 Family;
[SMS_Report (FALSE) ] datetime InstallDate;
[SMS_Report (FALSE) ] uint32 L2CacheSize;
[SMS_Report (FALSE) ] uint32 L2CacheSpeed;
[SMS_Report (FALSE) ] uint32 LastErrorCode;
[SMS_Report (FALSE) ] uint16 Level;
[SMS_Report (FALSE) ] uint16 LoadPercentage;
[SMS_Report (FALSE) ] string Manufacturer;
[SMS_Report (FALSE) ] uint32 MaxClockSpeed;
[SMS_Report (FALSE) ] string Name;
[SMS_Report (TRUE) ] uint32 NumberOfCores;
[SMS_Report (TRUE) ] uint32 NumberOfLogicalProcessors;
[SMS_Report (FALSE) ] string OtherFamilyDescription;
[SMS_Report (FALSE) ] string PNPDeviceID;
[SMS_Report (FALSE) ] uint16 PowerManagementCapabilities[];
[SMS_Report (FALSE) ] boolean PowerManagementSupported;
[SMS_Report (FALSE) ] string ProcessorId;
[SMS_Report (FALSE) ] uint16 ProcessorType;
[SMS_Report (FALSE) ] uint16 Revision;
[SMS_Report (FALSE) ] string Role;
[SMS_Report (FALSE) ] string SocketDesignation;
[SMS_Report (FALSE) ] string Status;
[SMS_Report (FALSE) ] uint16 StatusInfo;
[SMS_Report (FALSE) ] string Stepping;
[SMS_Report (FALSE) ] string SystemName;
[SMS_Report (FALSE) ] string UniqueId;
[SMS_Report (FALSE) ] uint16 UpgradeMethod;
[SMS_Report (FALSE) ] string Version;
[SMS_Report (FALSE) ] uint32 VoltageCaps;
};


Por último solo queda crear el reporte y esperar que las máquinas reporten la información al servidor de SCCM:

SELECT
SYS.Netbios_Name0 as [Nombre],
Processor.Name0 as [Tipo de Procesador], 
Processor.NormSpeed0 as [Velocidad de CPU],
ProcCores.NumberOfCores0 as [Cantidad de Cores],
ProcCores.NumberOfLogicalProcessors0 as [Cantidad de Cores Logicos]
FROM v_R_System SYS
JOIN v_GS_PROCESSOR Processor on SYS.ResourceID=Processor.ResourceID
left join v_gs_Processor_Cores as ProcCores on Processor.ResourceID = ProcCores.ResourceID


Saludos!

Gastón Gardonio