Hola
Les voy a comentar un problema que ha tenido un administrador amigo cuando comenzó a utilizar Desired Configuration Management.
Luego de crear sus Configuration Items, un Configuration Baseline y aplicarlo sobre una colección comprobó que el cliente de SCCM había recibido la configuración y debería reportar la información correctamente al servidor.
Al utilizar el reporte "Summary compliance by configuration
baseline" se dió cuenta que en la columna de Configuration Baseline Name estaba vacía pero la columna Configuration Baseline Unique ID si tenía información.
Al analizar el problema me di cuenta que DCM si utiliza la configuración de Localización cuando se crea. Existe una columna en las tablas llamada LocaleID.
Al ver esto y ver el idioma de Windows pude detectar confirmar que estaba pasando. Al tener el sistema operativo en español y el SCCM a ser en ingles la columna de LocaleID se completaba con un código de idioma que no dejaba funcionar correctamente el reporte.
Las soluciones que propuse:
1.- Utilizar la consola de SCCM desde un Windows en ingles con el localización de United States. (seguramente la menos intrusiva)
2.- Se podría cambiar el reporte original de "Summary compliance by configuration baseline" y "Summary compliance by configuration item" para que utilice la tabla v_LocalizedCIProperties en vez de la tabla v_LocalizedCIProperties_SiteLoc dado que v_LocalizedCIProperties no trae problemas con la diferencia de idioma.
3.- Esta última funciona pero no creo que haya necesidad llegar a utilizarla dado que se tiene que modificar a mano la tabla desde SQL. Se debería cambiar el LocaleID de la tabla CI_LocalizedProperties por el que aparece en el LocaleID que aparece en la tabla dbo.SMSData.LocaleID.
Este problema seguramente se va a presentar en todas aquellas personas que instalan el sistema operativo en Español asi que espero que les sea de mucha utilidad.
Saludos
Gastón Gardonio
jueves, 12 de enero de 2012
lunes, 9 de enero de 2012
Como mover la base de datos de WSUS?
Hola
Justo acabo de realizar este procedimiento y creo que es buena idea compartirlo dado que el procedimiento que realicé no me dió ni un problema.
Este procedimiento se aplica cuando las bases de datos no sos Windows Internal Databases/SQL Server Express Edition
1.- Ejecute el WSUS Server Cleanup Wizard para reducir el tamaño de la base de datos.
2.- Detener los servicios de IIS y Update Services.
3.- Realizar un backup de la base de datos utilizando el Management Studio y copiar la base de datos a el SQL destino.
4.- Realizar un Attach de la base de datos en el nuevo servidor.
5.- Agregar la cuenta de máquina como usuario de la base de datos. Ejemplo: Dominio\Servidor$
6.- En el servidor de WSUS ejecutar Regedit y dirigirse a : HKLM\Software\Microsoft\Update Services\Server\Setup
7.- Modificar el valor de SqlServerName por el nombre de la instanacion de SQL. Ejemplo: Servidor\Instancia
8.- Volver a iniciar los servicios de IIS y Update Services
Para comprobar que todo funciona correctamente solo hace falta abrir la consola de WSUS y ver si conecta correctamente a su BBDD.
Saludos!
Gastón Gardonio
lunes, 19 de diciembre de 2011
Algunos reportes interesantes para SCCM
Hola!
Reportes!!! Seguramente tengan algunos reportes que utilicen bastante y que les sirven como base para crear otros reportes rápidamente.
Les dejo algunos bastantes interesantes
v_GS_COMPUTER_SYSTEM.Manufacturer0 as [Fabricante],
LDISK.VolumeName0 as [Nombre del disco],
LDISK.FreeSpace0 as [Espacio Libre (MB)],
LDISK.FreeSpace0/1024 as [Espacio Libre(GB)],
LDISK.Size0/1024 as [Total de espacio (GB)],
LDISK.FreeSpace0*100/LDISK.Size0 as C074
FROM v_FullCollectionMembership SYS
join v_GS_LOGICAL_DISK LDISK on SYS.ResourceID = LDISK.ResourceID
JOIN v_R_System RSYS ON SYS.ResourceID = RSYS.ResourceID
join v_GS_COMPUTER_SYSTEM on v_GS_COMPUTER_SYSTEM.ResourceID = RSYS.ResourceID
WHERE
LDISK.Size0 > 0
AND SYS.CollectionID = 'SMS000DS'
ORDER BY SYS.Name, LDISK.DeviceID0
v_FullCollectionMembership.CollectionID
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
where v_GS_COMPUTER_SYSTEM.Name0 = @computer
dbo.v_GS_OPERATING_SYSTEM.LastBootUpTime0, GETDATE()) AS [Días desde el ultimo reboot], dbo.v_GS_OPERATING_SYSTEM.Caption0
FROM dbo.v_GS_OPERATING_SYSTEM INNER JOIN
dbo.v_R_System ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System.ResourceID
WHERE (DATEDIFF(Day, dbo.v_GS_OPERATING_SYSTEM.LastBootUpTime0, GETDATE()) > 7)
ORDER BY [Días desde el ultimo reboot]
(cambiar el GETDATE()) > 7 por el numero de días que deseen)
Select distinct
v_R_System.Netbios_Name0 as [Servidor sin ARCHIVO.TXT],
v_R_System.Operating_System_Name_and0 as [Sistema Operativo]
FROM v_R_System
inner join v_FullCollectionMembership ON v_FullCollectionMembership.ResourceID = v_R_System.ResourceID
inner join v_Collection ON v_Collection.CollectionID = v_FullCollectionMembership.CollectionID
WHERE
v_R_System.Netbios_Name0 not in
(
select v_r_system.Netbios_Name0
from
v_GS_SoftwareFile inner join v_r_system on v_r_system.resourceid=v_GS_SoftwareFile.resourceid
where
v_GS_SoftwareFile.filename like 'ARCHIVO.TXT'
)
AND
v_Collection.Name like 'Servidores que deben tener el Archivo.txt'
order by v_R_System.Netbios_Name0
No duden en consultarme por algún otro ejemplo u otro tema!
Gastón!
Reportes!!! Seguramente tengan algunos reportes que utilicen bastante y que les sirven como base para crear otros reportes rápidamente.
Les dejo algunos bastantes interesantes
- Información de espacio en disco de servidores:
v_GS_COMPUTER_SYSTEM.Manufacturer0 as [Fabricante],
LDISK.VolumeName0 as [Nombre del disco],
LDISK.FreeSpace0 as [Espacio Libre (MB)],
LDISK.FreeSpace0/1024 as [Espacio Libre(GB)],
LDISK.Size0/1024 as [Total de espacio (GB)],
LDISK.FreeSpace0*100/LDISK.Size0 as C074
FROM v_FullCollectionMembership SYS
join v_GS_LOGICAL_DISK LDISK on SYS.ResourceID = LDISK.ResourceID
JOIN v_R_System RSYS ON SYS.ResourceID = RSYS.ResourceID
join v_GS_COMPUTER_SYSTEM on v_GS_COMPUTER_SYSTEM.ResourceID = RSYS.ResourceID
WHERE
LDISK.Size0 > 0
AND SYS.CollectionID = 'SMS000DS'
ORDER BY SYS.Name, LDISK.DeviceID0
- Listar las colecciones a las que pertenece una máquina:
v_FullCollectionMembership.CollectionID
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
where v_GS_COMPUTER_SYSTEM.Name0 = @computer
- Servidores con mas de 7 días sin reiniciarce:
dbo.v_GS_OPERATING_SYSTEM.LastBootUpTime0, GETDATE()) AS [Días desde el ultimo reboot], dbo.v_GS_OPERATING_SYSTEM.Caption0
FROM dbo.v_GS_OPERATING_SYSTEM INNER JOIN
dbo.v_R_System ON dbo.v_GS_OPERATING_SYSTEM.ResourceID = dbo.v_R_System.ResourceID
WHERE (DATEDIFF(Day, dbo.v_GS_OPERATING_SYSTEM.LastBootUpTime0, GETDATE()) > 7)
ORDER BY [Días desde el ultimo reboot]
(cambiar el GETDATE()) > 7 por el numero de días que deseen)
- Informa de las máquinas que no tienen un archivo y pertenece a una colección en particular
Select distinct
v_R_System.Netbios_Name0 as [Servidor sin ARCHIVO.TXT],
v_R_System.Operating_System_Name_and0 as [Sistema Operativo]
FROM v_R_System
inner join v_FullCollectionMembership ON v_FullCollectionMembership.ResourceID = v_R_System.ResourceID
inner join v_Collection ON v_Collection.CollectionID = v_FullCollectionMembership.CollectionID
WHERE
v_R_System.Netbios_Name0 not in
(
select v_r_system.Netbios_Name0
from
v_GS_SoftwareFile inner join v_r_system on v_r_system.resourceid=v_GS_SoftwareFile.resourceid
where
v_GS_SoftwareFile.filename like 'ARCHIVO.TXT'
)
AND
v_Collection.Name like 'Servidores que deben tener el Archivo.txt'
order by v_R_System.Netbios_Name0
No duden en consultarme por algún otro ejemplo u otro tema!
Gastón!
Etiquetas:
hardware inventory,
Reporte,
SCCM,
software inventory
viernes, 16 de diciembre de 2011
Herramientas imprescindibles para administrar SCCM
Hola nuevamente.
En estas últimas entradas les acerqué varias herramientas de utilidad para cualquiera que administre una plataforma de SCCM.
En este les incluyo 2 herramientas excelentes, infaltables!
SMS Client Control Tool http://sourceforge.net/projects/smsclictr/
Ideal para contralar los agentes de SMS/SCCM, incluye funciones como forzar inventarios, controlar despliegues de aplicaciones, ver ventanas de mantenimiento, reparar el agente, resetear políticas de agente, etc etc...
SCCM Right Click Tools
http://myitforum.com/cs2/blogs/rhouchins/archive/2008/04/09/sccm-right-click-tools.aspx
Hace mas de un año que no se acutaliza pero contiene gran cantidad de funciones para administrar SCCM. Una vez instalada la aplicación se modifica las opciones que se tienen al utilizar el botón derecho del mouse agregando gran cantidad de acciones muy útiles.
Como esta aplicación modifica la consola de SCCM, recomiendo no instalarla en el servidor de SCCM.
A probarlas y comentarme que les han parecido!
Gaston!
En estas últimas entradas les acerqué varias herramientas de utilidad para cualquiera que administre una plataforma de SCCM.
En este les incluyo 2 herramientas excelentes, infaltables!
SMS Client Control Tool http://sourceforge.net/projects/smsclictr/
Ideal para contralar los agentes de SMS/SCCM, incluye funciones como forzar inventarios, controlar despliegues de aplicaciones, ver ventanas de mantenimiento, reparar el agente, resetear políticas de agente, etc etc...
SCCM Right Click Tools
http://myitforum.com/cs2/blogs/rhouchins/archive/2008/04/09/sccm-right-click-tools.aspx
Hace mas de un año que no se acutaliza pero contiene gran cantidad de funciones para administrar SCCM. Una vez instalada la aplicación se modifica las opciones que se tienen al utilizar el botón derecho del mouse agregando gran cantidad de acciones muy útiles.
Como esta aplicación modifica la consola de SCCM, recomiendo no instalarla en el servidor de SCCM.
A probarlas y comentarme que les han parecido!
Gaston!
Etiquetas:
administracion,
herramientas,
SCCM
jueves, 15 de diciembre de 2011
Modificar inventario en SCCM - sms_def.mof y configuration.mof
Hola!
Muchas veces nos hemos preguntado si estamos modificando correctamente los ficheros sms_def.mof y configuration.mof.
Ciertas veces hasta se nos olvida que una aplicacion puede ser también de 64 bits y no terminamos obteniendo los resultados que esperábamos.
Esta utilidad RegKeyToMOFv3.zip nos permite realizar automaticamente la modificación que necesitamos realizar en los ficheros sms_def.mof y configuration.mof.
http://dl.dropbox.com/u/45821515/RegKeyToMOFv3.zip
Muchas veces nos hemos preguntado si estamos modificando correctamente los ficheros sms_def.mof y configuration.mof.
Ciertas veces hasta se nos olvida que una aplicacion puede ser también de 64 bits y no terminamos obteniendo los resultados que esperábamos.
Esta utilidad RegKeyToMOFv3.zip nos permite realizar automaticamente la modificación que necesitamos realizar en los ficheros sms_def.mof y configuration.mof.
http://dl.dropbox.com/u/45821515/RegKeyToMOFv3.zip
Con solo seleccionar la llave de registro de la cual deseamos obtener información, la aplicación generará la consulta que debemos agregar al final de los ficheros.
Como podrán ver pueden seleccionar la opción "Enable 64bits (for Regkeys not written in Wow6432Node)" para capturar también correctamente aplicaciones de 32 bits en Windows de 64bits
Espero que les sea de mucha utilidad.
Gastón Gardonio
Etiquetas:
configuration.mof,
SCCM,
smsdef.mof,
software inventory
miércoles, 7 de diciembre de 2011
Controlar agentes de SCCM - ClientHealthCollection
Hola!
Siempre estamos preguntandonos que equipos no reportan inventario hace una semana, cuales no tienen el agente funcionando correctamente, a cuales les falla el WMI, etc, etc..
Les acerco esta herramienta la cual crea una serie de colecciones jerarquizadas en SCCM para poder tomar acciones correctivas directamente.
Esta 100% probada y es la herramienta perfecta para utilizar con las RightClickTools
http://dl.dropbox.com/u/45821515/ClientHealthCollection.rar
Saludos!
Gaston Gardonio
Siempre estamos preguntandonos que equipos no reportan inventario hace una semana, cuales no tienen el agente funcionando correctamente, a cuales les falla el WMI, etc, etc..
Les acerco esta herramienta la cual crea una serie de colecciones jerarquizadas en SCCM para poder tomar acciones correctivas directamente.
Esta 100% probada y es la herramienta perfecta para utilizar con las RightClickTools
http://dl.dropbox.com/u/45821515/ClientHealthCollection.rar
Saludos!
Gaston Gardonio
Etiquetas:
administracion,
ClientHealthCollection,
SCCM
jueves, 1 de diciembre de 2011
Forzar inventario de Hardware y Software
Hola!!
Bueno, post rapido. Recién tuve que forzar el inventario de varios equipos y me topé con estos scripts que tenia guardado.
Ejecutar con credenciales de administrador.
Script: Full software inventory scan
'Reset SMS Software Inventory Action to force a full HW Inventory Action
sInventoryActionID = "{00000000-0000-0000-0000-000000000002}"
' Get a connection to the "root\ccm\invagt" namespace (where the Inventory agent lives)
Dim oLocator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Dim oServices
Set oServices = oLocator.ConnectServer( , "root\ccm\invagt")
' Delete the specified InventoryActionStatus instance
oServices.Delete "InventoryActionStatus.InventoryActionID=""" & sInventoryActionID & """"
'Pause 3 seconds to allow the action to complete.
wscript.sleep 3000
'######################################
'Run a SMS Software Inventory
Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")
Set actions = cpApplet.GetClientActions
For Each action In actions
If Instr(action.Name,"Hardware Inventory") > 0
Then action.PerformAction
End if
Next
Script: Full hardware inventory scan
'Reset SMS Hardware Inventory Action to force a full HW Inventory Action
sInventoryActionID = "{00000000-0000-0000-0000-000000000001}"
' Get a connection to the "root\ccm\invagt" namespace (where the Inventory agent lives)
Dim oLocator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Dim oServices
Set oServices = oLocator.ConnectServer( , "root\ccm\invagt")
' Delete the specified InventoryActionStatus instance
oServices.Delete "InventoryActionStatus.InventoryActionID=""" & sInventoryActionID & """"
'Pause 3 seconds to allow the action to complete. wscript.sleep 3000
'######################################
'Run a SMS Hardware Inventory
Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")
Set actions = cpApplet.GetClientActions
For Each action In actions
If Instr(action.Name,"Hardware Inventory") > 0 Then
action.PerformAction
End if
Next
Saludos!
Bueno, post rapido. Recién tuve que forzar el inventario de varios equipos y me topé con estos scripts que tenia guardado.
Ejecutar con credenciales de administrador.
Script: Full software inventory scan
'Reset SMS Software Inventory Action to force a full HW Inventory Action
sInventoryActionID = "{00000000-0000-0000-0000-000000000002}"
' Get a connection to the "root\ccm\invagt" namespace (where the Inventory agent lives)
Dim oLocator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Dim oServices
Set oServices = oLocator.ConnectServer( , "root\ccm\invagt")
' Delete the specified InventoryActionStatus instance
oServices.Delete "InventoryActionStatus.InventoryActionID=""" & sInventoryActionID & """"
'Pause 3 seconds to allow the action to complete.
wscript.sleep 3000
'######################################
'Run a SMS Software Inventory
Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")
Set actions = cpApplet.GetClientActions
For Each action In actions
If Instr(action.Name,"Hardware Inventory") > 0
Then action.PerformAction
End if
Next
Script: Full hardware inventory scan
'Reset SMS Hardware Inventory Action to force a full HW Inventory Action
sInventoryActionID = "{00000000-0000-0000-0000-000000000001}"
' Get a connection to the "root\ccm\invagt" namespace (where the Inventory agent lives)
Dim oLocator
Set oLocator = CreateObject("WbemScripting.SWbemLocator")
Dim oServices
Set oServices = oLocator.ConnectServer( , "root\ccm\invagt")
' Delete the specified InventoryActionStatus instance
oServices.Delete "InventoryActionStatus.InventoryActionID=""" & sInventoryActionID & """"
'Pause 3 seconds to allow the action to complete. wscript.sleep 3000
'######################################
'Run a SMS Hardware Inventory
Set cpApplet = CreateObject("CPAPPLET.CPAppletMgr")
Set actions = cpApplet.GetClientActions
For Each action In actions
If Instr(action.Name,"Hardware Inventory") > 0 Then
action.PerformAction
End if
Next
Saludos!
Etiquetas:
hardware inventory,
SCCM,
software inventory
martes, 29 de noviembre de 2011
Obtener información de un archivo .ini con SCCM
Hola
En ciertas ocasiones nos solicitan obtener información de un archivo utilizando SCCM.
Al principio seguramente pensaríamos que podríamos utilizar "File Collection" podría ser la solución. Lamentablemente no es tan fácil, File Collection solo copia los archivos pero no podemos ver el contenido dinamicamente con SCCM. (No podríamos crear un reporte con el contenido del fichero)
Para ello es necesario enviar la información del fichero al WMI en cada equipo y modificar el smsdef.mof para obtener esta información con SCCM.
Debemos crear un paquete para que ejecute un VBS, este VBS enviará la información al WMI.
Si sabemos que solo unas máquinas tienen el fichero podemos publicarlo solo a esas máquinas (podríamos utilizar el software inventory para saber si la máquina tiene el fichero).
También podemos tener en cuenta cada cuanto se modifica el fichero para modificar el advertisiment y ejecutarlo cada cierto tiempo que creemos que se modifica el fichero.
Como hacerlo?
Crear un paquete que solo tenga el VBS que detalla abajo y publicar el advertisiment como cscript.exe WhateverYouCalledIt.vbs
Cambiar el TheIniFile= por el nombre del fichero INI del cual que queremos obtener información
En este ejemplo se obtiene el campo "Release" y "Description"
on error resume next'Lee el contenido del archivo .ini
'Vuelca el contenido a WMI
Set fso = CreateObject("Scripting.FileSystemObject")
TheIniFile = "c:\temp\someinifile.ini"
Dim wbemCimtypeString
wbemCimtypeString = 8
' Remueve la clases
Set oLocation = CreateObject("WbemScripting.SWbemLocator")
Set oServices = oLocation.ConnectServer(,"root\cimv2")
set oNewObject = oServices.Get("CM_INIBuildInfo")
oNewObject.Delete_
'=================
'Lee el archivo y obtiene la informacion
'=================
Dim str1(1)
Set objfile = fso.OpenTextFile(TheIniFile,1,False)
Do Until objFile.AtEndOfStream
strstring = objfile.ReadLine
If InStr(strstring,"=") > 0 then
str2 = Split(strstring, "=", -1, 1)
If lcase(str2(0)) = "release" Then
str1(0) = str2(1)
End If
If LCase(str2(0)) = "description" Then
str1(1) = str2(1)
End If
End If
Loop
objfile.close
'==================
'Copia la informacion a un Namespace de WMI
'==================
' Se crea la estructura para copiarla a WMI
' Nota=no usar la palabra release, esta reservada internamente
Set oDataObject = oServices.Get
oDataObject.Path_.Class = "CM_INIBuildInfo"
oDataObject.Properties_.add "Rel" , wbemCimtypeString
oDataObject.Properties_("Rel").Qualifiers_.add "key" , True
oDataObject.Properties_.add "Description" , wbemCimtypeString
oDataObject.Put_
Set oNewObject = oServices.Get("CM_INIBuildInfo" ).SpawnInstance_
oNewObject.Rel = cstr(str1(0))
oNewObject.Description = str1(1)
oNewObject.Put_
wscript.quit
'================
Como les había comentado debemos modificar el fichero sms_def.mof file en inboxes\clifiles.src\hinv para que SCCM pueda obtener la información. Siempre pegarlo al final del contenido.
//============Info de fichero INI===========
//Pre-requisito: Ejecutar el programa que copia la informacion a WMI
//==================================
[ SMS_Report (TRUE),
SMS_Group_Name ("INIBuildInfo"),
SMS_Class_ID ("CUSTOM|INIBuildInfo|1.0") ]
class CM_INIBuildInfo : SMS_Class_Template
{
[SMS_Report (TRUE), key ] string rel;
[SMS_Report (TRUE) ] string Description;
};
Espero que les sea de utilidad.
Saludos
Gastón Gardonio
En ciertas ocasiones nos solicitan obtener información de un archivo utilizando SCCM.
Al principio seguramente pensaríamos que podríamos utilizar "File Collection" podría ser la solución. Lamentablemente no es tan fácil, File Collection solo copia los archivos pero no podemos ver el contenido dinamicamente con SCCM. (No podríamos crear un reporte con el contenido del fichero)
Para ello es necesario enviar la información del fichero al WMI en cada equipo y modificar el smsdef.mof para obtener esta información con SCCM.
Debemos crear un paquete para que ejecute un VBS, este VBS enviará la información al WMI.
Si sabemos que solo unas máquinas tienen el fichero podemos publicarlo solo a esas máquinas (podríamos utilizar el software inventory para saber si la máquina tiene el fichero).
También podemos tener en cuenta cada cuanto se modifica el fichero para modificar el advertisiment y ejecutarlo cada cierto tiempo que creemos que se modifica el fichero.
Como hacerlo?
Crear un paquete que solo tenga el VBS que detalla abajo y publicar el advertisiment como cscript.exe WhateverYouCalledIt.vbs
Cambiar el TheIniFile= por el nombre del fichero INI del cual que queremos obtener información
En este ejemplo se obtiene el campo "Release" y "Description"
on error resume next'Lee el contenido del archivo .ini
'Vuelca el contenido a WMI
Set fso = CreateObject("Scripting.FileSystemObject")
TheIniFile = "c:\temp\someinifile.ini"
Dim wbemCimtypeString
wbemCimtypeString = 8
' Remueve la clases
Set oLocation = CreateObject("WbemScripting.SWbemLocator")
Set oServices = oLocation.ConnectServer(,"root\cimv2")
set oNewObject = oServices.Get("CM_INIBuildInfo")
oNewObject.Delete_
'=================
'Lee el archivo y obtiene la informacion
'=================
Dim str1(1)
Set objfile = fso.OpenTextFile(TheIniFile,1,False)
Do Until objFile.AtEndOfStream
strstring = objfile.ReadLine
If InStr(strstring,"=") > 0 then
str2 = Split(strstring, "=", -1, 1)
If lcase(str2(0)) = "release" Then
str1(0) = str2(1)
End If
If LCase(str2(0)) = "description" Then
str1(1) = str2(1)
End If
End If
Loop
objfile.close
'==================
'Copia la informacion a un Namespace de WMI
'==================
' Se crea la estructura para copiarla a WMI
' Nota=no usar la palabra release, esta reservada internamente
Set oDataObject = oServices.Get
oDataObject.Path_.Class = "CM_INIBuildInfo"
oDataObject.Properties_.add "Rel" , wbemCimtypeString
oDataObject.Properties_("Rel").Qualifiers_.add "key" , True
oDataObject.Properties_.add "Description" , wbemCimtypeString
oDataObject.Put_
Set oNewObject = oServices.Get("CM_INIBuildInfo" ).SpawnInstance_
oNewObject.Rel = cstr(str1(0))
oNewObject.Description = str1(1)
oNewObject.Put_
wscript.quit
'================
Como les había comentado debemos modificar el fichero sms_def.mof file en inboxes\clifiles.src\hinv para que SCCM pueda obtener la información. Siempre pegarlo al final del contenido.
//============Info de fichero INI===========
//Pre-requisito: Ejecutar el programa que copia la informacion a WMI
//==================================
[ SMS_Report (TRUE),
SMS_Group_Name ("INIBuildInfo"),
SMS_Class_ID ("CUSTOM|INIBuildInfo|1.0") ]
class CM_INIBuildInfo : SMS_Class_Template
{
[SMS_Report (TRUE), key ] string rel;
[SMS_Report (TRUE) ] string Description;
};
Espero que les sea de utilidad.
Saludos
Gastón Gardonio
Etiquetas:
SCCM,
smsdef.mof,
software inventory
jueves, 27 de marzo de 2008
No se puede mover un recurso a un node del Cluster
Hola!
Este es mi primer entrada aca en mi blog, les voy a explicar el problema que trabajé.
Problema:
No se podia mover un recurso de un nodo a otro node de un cluster.
Al intentar mover el recurso obtuvia el siguiente mensaje de error:
Event Type: Error
Event Source: CRUZ
Event Category: (3)
Event ID: 17052
Date: 3/19/2008
Time: 12:16:30 PM
User: N/A
Computer: CAFE
Description:
[sqsrvres] StartResourceService: StartService (CRUZ) failed. Error: 41d
Entono:
Cluster de 3 nodos Activos
Windows 2003 Enterprise x64 SP1
SQL 2000 SP4
Troubleshoot y Resolucion del problema:
El error 0x41d (1053) significa que el servicio no inicio en el tiempo esperado.
Recientemente el cliente habia instalado el Service Pack 4 de SQL 2000.
Controlamos las versiones a traves del registro y se mostraba como SP$.
Controlamos los binarios de SQL en el servidor y encontramos que eran distintos al que tiene el servidor en donde la instancia esta funcionando.
C:\Program Files (x86)\Microsoft SQL Server\CRUZ\Binn
La mayoría son 200.80.194.0 (SQL sin service pack)
Servidor: CAFE
Program Files (x86)\Microsoft SQL Server\CAFE\Binn
Los archivos son 2000.80.2039.0 (Service Pack 4)
Controlamos los logs de la actualizacion del service pack y encontramos que se habian presentado problemas.
Archivo SQLSP.log:
CThreadPool::RunUntilCompleteHlpr WaitForMultipleObjects returned: 3010
CThreadPool::RunUntilCompleteHlpr signaled thread [0xe4]
Thread [0xe4] exit code: [0xbc2]
CRemoteProcess::RunUntilComplete [0xf0] exit code: -12
Remote process exit code was '-12' (CRUZ).
...
06:24:29 End Action : Run setup on cluster nodes
06:24:29 One or more errors occurred while running remote setup on the clustered machines. 06:25:30 Setup failed to perform required operations on the cluster nodes.
Dado que necesitamos actualizar solo los binarios procedimos a seguir la siguiente nota:
905286 FIX: You receive an error message when you run SQL Server Setup to install SQL Server 2000 Service Pack 4 in binary-only mode on a failover cluster
http://support.microsoft.com/default.aspx?scid=kb;EN-US;905286
Reemplazamos el Sqlsui.dll dentro de los archivos del Service Pack 4
Pera he aquí la parte importante.
Dado que solamente necesitamos actualizar los binarios de SQL debemos agregar la siguiente llave de registro.
Esta llave llamada Need_Sp_Key nos permite instalar localmente el Service Pack sin necesidad que se corra desde el nodo donde esta activa la instancia (esto lo realizamos solamente porque ya se habia corrido la instalacion y habia finalizado)
Nos dirigimos a HKLM\SOFTWARE\MICROSOFT\MICROSOFT SQL Server\80\
Creamos la llave: Need_Sp_Key
Value: AddNodeInfo
Data Type: REG_SZ
String:Virtual Server Name , Instance Name
Procedimos a instalar el Service Pack 4 y terminó exitosamente.
Controlamos los binarios y figuraban con la versión 2000.80.2039.0, lo cual es correcto.
Realizamos la prueba de mover el recurso y se movió correctamente. :)
Espero que les sea util,
Saludos !
Este es mi primer entrada aca en mi blog, les voy a explicar el problema que trabajé.
Problema:
No se podia mover un recurso de un nodo a otro node de un cluster.
Al intentar mover el recurso obtuvia el siguiente mensaje de error:
Event Type: Error
Event Source: CRUZ
Event Category: (3)
Event ID: 17052
Date: 3/19/2008
Time: 12:16:30 PM
User: N/A
Computer: CAFE
Description:
[sqsrvres] StartResourceService: StartService (CRUZ) failed. Error: 41d
Entono:
Cluster de 3 nodos Activos
Windows 2003 Enterprise x64 SP1
SQL 2000 SP4
Troubleshoot y Resolucion del problema:
El error 0x41d (1053) significa que el servicio no inicio en el tiempo esperado.
Recientemente el cliente habia instalado el Service Pack 4 de SQL 2000.
Controlamos las versiones a traves del registro y se mostraba como SP$.
Controlamos los binarios de SQL en el servidor y encontramos que eran distintos al que tiene el servidor en donde la instancia esta funcionando.
C:\Program Files (x86)\Microsoft SQL Server\CRUZ\Binn
La mayoría son 200.80.194.0 (SQL sin service pack)
Servidor: CAFE
Program Files (x86)\Microsoft SQL Server\CAFE\Binn
Los archivos son 2000.80.2039.0 (Service Pack 4)
Controlamos los logs de la actualizacion del service pack y encontramos que se habian presentado problemas.
Archivo SQLSP.log:
CThreadPool::RunUntilCompleteHlpr WaitForMultipleObjects returned: 3010
CThreadPool::RunUntilCompleteHlpr signaled thread [0xe4]
Thread [0xe4] exit code: [0xbc2]
CRemoteProcess::RunUntilComplete [0xf0] exit code: -12
Remote process exit code was '-12' (CRUZ).
...
06:24:29 End Action : Run setup on cluster nodes
06:24:29 One or more errors occurred while running remote setup on the clustered machines. 06:25:30 Setup failed to perform required operations on the cluster nodes.
Dado que necesitamos actualizar solo los binarios procedimos a seguir la siguiente nota:
905286 FIX: You receive an error message when you run SQL Server Setup to install SQL Server 2000 Service Pack 4 in binary-only mode on a failover cluster
http://support.microsoft.com/default.aspx?scid=kb;EN-US;905286
Reemplazamos el Sqlsui.dll dentro de los archivos del Service Pack 4
Pera he aquí la parte importante.
Dado que solamente necesitamos actualizar los binarios de SQL debemos agregar la siguiente llave de registro.
Esta llave llamada Need_Sp_Key nos permite instalar localmente el Service Pack sin necesidad que se corra desde el nodo donde esta activa la instancia (esto lo realizamos solamente porque ya se habia corrido la instalacion y habia finalizado)
Nos dirigimos a HKLM\SOFTWARE\MICROSOFT\MICROSOFT SQL Server\80\
Creamos la llave: Need_Sp_Key
Value: AddNodeInfo
Data Type: REG_SZ
String:
Procedimos a instalar el Service Pack 4 y terminó exitosamente.
Controlamos los binarios y figuraban con la versión 2000.80.2039.0, lo cual es correcto.
Realizamos la prueba de mover el recurso y se movió correctamente. :)
Espero que les sea util,
Saludos !
Suscribirse a:
Entradas (Atom)