Mes: mayo 2007
Video: Haciendo el gamberro en las oficinas de Intel.
Conan O’Brien visita las oficinas centrales de Intel y como siempre hace el gamberro todo lo que puede.
Material de la webcast sobre Scripting en Virtual Server
Todos los scripts y la DLL necesaria para usar powershell para automatizar Virtual Server estan en un fichero zip en el siguiente enlace.
http://geeks.ms/files/folders/14655/download.aspx
El script que permite crear maquinas virtuales con discos duros diferenciales a partir de una maquina virtual base por linea de comandos es el DEMO5_1.vbs.
La charla la podeis ver en:
Recursos mencionados durante la charla:
Programación en vbscript, funciones, objetos, etc: http://devguru.com/
Información sobre el Modelo de objetos de Virtual Server http://msdn2.microsoft.com/en-us/library/aa368876.aspx
Repositorio de scripts de ejemplo: http://www.microsoft.com/technet/scriptcenter/scripts/vs/default.mspx?mfr=true
Descarga PowerShell: http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspx
Recuerda que durante la instalación de Virtual Server se crea en el menu de programas un acceso directo a la «programmer’s guide donde podras encontrar tambien mucha información sobre el modelo de objetos de Virtual Server.
Cosas Interesantes 12/05/2007
Hoy en cosas interesantes: Viajando en el tiempo dentro del Directorio Activo con Longhorn, iFilter 64bits PDF, Scripta tus datos, Arquitectura de Exchange 2007, PowerShell en Linux, Libro gratuito sobre PowerShell.
Viajando en el tiempo dentro del Directorio Activo con Longhorn.
Con Longhorn es posible cargar instantáneas del AD y conectarnos a ellas para ver cómo estaba el directorio activo en un momento dado.
Es una funcionalidad increíble.
iFilter 64bits PDF.
Foxit PDF IFilter is designed to help users to index a large amount of PDF documents and then quickly find text within these documents. The PDF documents can be files, email attachments or database records.
Foxit PDF IFilter supports following Microsoft products: Windows Indexing Service, MSN Desktop Search, Internet Information Server, SharePoint Portal Server, Windows SharePoint Services (WSS), Site Server, Exchange Server, SQL Server and all other products based on Microsoft Search technology. Hereafter, we use term «search engine» to refer to these products.
Scripta tus datos.
Con este add-in para SQL Server podrás sacar un script de tus datos para ejecutarlos en otros servidores.
Arquitectura de Exchange 2007.
Por fin!!, un documento que estaba esperando.
PowerShell en Linux.
Resulta que alguien ha portado PowerShell a Linux (o eso dice él)
Libro gratuito sobre PowerShell.
Lentitud en MOSS 2007
Por defecto los application pools sobre los que corramos nuestros sites de Sharepoint se reciclan todos los días a la 1:00 de la madrugada.
Este reciclado es muy beneficioso para la salud de Sharepoint pero tiene un efecto secundario muy incomodo y es que debido a ese reciclado se pierde toda la cache de compilaciones que ya teníamos motivo por el cual cada vez que entremos en una página por primera vez notaremos una lentitud extrema.
En el siguiente enlace podéis encontrar un script que programado convenientemente para ejecutarse después del reciclado nos permitirá hacer un warmup de todas las páginas de los sites que indiquemos de forma que después de correr ya no tengamos que sufrir esta lentitud.
http://www.pptspaces.com/sharepointreporterblog/Lists/Posts/Post.aspx?ID=24
Además el script es muy útil en las demos.
Viridian, mas cambios.
Lo bueno:
Se confirma el soporte de Viridian (Windows Server Virtualization) para:
-Soportar NLB dentro de las maquinas virtuales y de un virtual switch.
-Soporte nativo para clustering, lo cual si es añadido a un buen hardware de almacenamiento y dependiendo de la RAM asignada a la maquina virtual, puede significar menos de 5 segundos para el fail-over de una VM.
-Hasta 32Gb de Ram por maquina.
-Soporte para geo-clustering.
-VSS para sacar instantáneas y backups con las maquinas virtuales arrancadas.
Lo malo:
-En la primera versión solo soportara 16 Cores.
-Tampoco estara la feature de live migration.
-La beta saldra con la RTM de longhorn :-(.
Datos sacados de: http://blogs.technet.com/windowsserver/archive/2007/05/10/viridian-features-update-beta-planned-for-longhorn-rtm.aspx
100 Dias despues de Vista.
Mucho se ha hablado sobre si vista es o no un éxito, ahí queda la anécdota de china o los vaivenes del indeciso Dell, al final el análisis de las ventas de Vista en los 100 días posteriores a su lanzamiento arrojan que solo en los 30 primeros días ya se vendieron 20 millones de copias lo cual supone el doble que las vendidas por XP en el mismo periodo.
Según una encuesta de IDC el 25% de las grandes empresas ya están migrando a Vista con mayor o menor fuerza y se prevé que evidentemente de la mano de las ventas de ordenadores nuevos con el sistema ya pre instalado el número de ordenadores con Windows Vista crezca hasta los 100 millones antes de fin de año.
Tal vez la adopción de Vista por parte de las empresas nos pueda parecer lenta, pero recuerdo que vimos algo parecido con XP, es normal que el sector tenga miedo al cambio, especialmente cuando la mayoría de las empresas quiere aprovechar Vista para realizar mejoras en su plataforma cliente, lo cual requiere de tiempo para analizar correctamente cada caso.
Hay gente que ha criticado vista por los Drivers, hay que decir que Visa es compatible con 1.9 millones de dispositivos y que según el análisis de los errores enviados por los usuarios a Microsoft solo hay problemas con 70.000 de los cuales 4.000 producen el 80% de los problemas, sin duda es el soporte más amplio de Hardware del mercado.
En mi opinión Vista es el mejor sistema operativo que hemos tenido nunca, como sabéis mis opiniones son solo referidas al terreno Empresarial, donde Vista me permite un despliegue fantástico, que los usuarios no sean administradores locales sin sacrificar un soporte a usuarios sostenible, entornos mucho mas gestionados, buen rendimiento y estupenda productividad y por si fuera poco decenas de funcionalidades que permiten que el resto de la infraestructura pueda evolucionar.
Datos extraídos de: http://www.windowsitpro.com/Articles/ArticleID/96022/96022.html?Ad=1
WebCast sobre Virtual Server Scripting este Jueves
Este jueves a las 17:30 dará comienzo una WebCast impartida por mi sobre Scripting con Virtual Server, la agenda sera:
• Beneficios del uso de scripting.
• ¿Qué necesito para hacer y correr scripts?
• La seguridad en los scripts.
• ¿Para qué pueden ser útiles los scripts de VS 2005?
• Un repaso a las técnicas básicas de scripting.
• Scripting en Virtual Server 2005 R2.
• Powershell.
• Scripting con MOM 2005 y 2007.
• El futuro del scripting en entornos virtuales.
La webcast tendrá varias demos y creo que será interesante para todos los niveles.
Os podéis apuntar en:
Espero veros a todos 😉
Nuevo Management Pack de Operations Manager 2007 para HP StorageWorks.
HP ya tiene un sistio web la versión final del Management Pack de OM 2007 para monitorizar dispositivos de almacenamiento, estan soportados los siguientes productos:
Desgraciadamente al igual que anteriores versiones es necesario instalar un producto gratuito de HP denominado WEBES que se encarga de recoger los eventos de los dispositivos e introducirlos en OM.
Un vistazo rápido a WSUS 3.0 y PowerShell
Soy un enamorado de PowerShell, me recuerda los viejos tiempos y me permite desarrollar mejores soluciones de automatización.
Yo soy un fiel defensor de la automatización, me parece una herramienta fundamental para evitar errores humanos, mejorar los tiempos de respuesta y gestionar los cambios.
Si vas a realizar un cambio y lo puedes meter en un script, correrlo en el entorno de pruebas, ver si funciona y finalmente ejecutar el mismo script en producción, te aseguraras de estar haciendo exactamente lo mismo y si el escenario de pruebas era una fiel reproducción del entorno de producción tendremos la seguridad de que irá bien.
Es más fácil de documentar pues basta con incluir el script en la gestión de cambios, además hoy en día es fácil contar con entornos de pruebas realistas gracias a las maquinas virtuales.
Desde hace un tiempo estoy realizando además las pruebas también por script, de forma parecida a como en desarrollo se hacen las pruebas unitarias y de integración pero en sistemas, esto me permite ahorrar mucho tiempo a la hora de probar los cambios y garantizar que se han realizado todas las pruebas que se tienen que realizar antes de dar un cambio como nuevo.
Como sabréis los scripts de powershell los podremos hacer con herramientas como el poweranalyzer o bien usar el bloc de notas, yo soy fan del bloc de notas también conocida como “la herramienta más poderosa jamás desarrollada”, a los scripts los tendremos que llamar con la extensión .PS1.
Para poder ejecutar un script tendremos que haber configurado el entorno de powershell con una política de ejecución de scripts, esto indicara a powershell si puede ejecutar scripts no firmados o si es obligatorio firmarlos (entre otras opciones), mirar la documentación de powershell para mas información o bien usar el comando “get-help set-executionpolicy –detailed” para leer la ayuda en pantalla.
Una vez que tengáis la política ya configurada podréis ejecutar los scripts.
Lo primero que tendremos que hacer en el script, será indicar a PowerShell que cargue el assembly con la API de WSUS 3.0.
[reflection.assembly]::LoadWithPartialName(«Microsoft.UpdateServices.Administration») | out-null
Después tendremos que crear un objeto que referencie al servidor wsus, en este caso lo haremos al servidor desde el que estamos corriendo el script.
$wsus=[Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
Para ver todos los métodos y propiedades que nos expone el servidor podemos usar el cmdlet get-member.
Por lo tanto el siguiente script:
[reflection.assembly]::LoadWithPartialName(«Microsoft.UpdateServices.Administration») | out-null
$wsus=[Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
$wsus | get-member
Nos devolverá esto:
PS C:Documents and SettingsAdministrator.ADROOT> ./wsus2.ps1
TypeName: Microsoft.UpdateServices.Internal.BaseApi.UpdateServer
Name MemberType Definition
—- ———- ———-
CancelAllDownloads Method System.Void CancelAllDownloads()
CreateComputerTargetGroup Method Microsoft.UpdateServices.Administration.IComputerTargetGroup CreateC.
CreateInstallApprovalRule Method Microsoft.UpdateServices.Administration.IAutomaticUpdateApprovalRule.
CreateObjRef Method System.Runtime.Remoting.ObjRef CreateObjRef(Type requestedType)
DeleteInstallApprovalRule Method System.Void DeleteInstallApprovalRule(Int32 ruleId)
DeleteUpdate Method System.Void DeleteUpdate(Guid updateId)
Equals Method System.Boolean Equals(Object obj)
ExportUpdates Method System.Void ExportUpdates(String packagePath, String logPath)
GetChildServers Method Microsoft.UpdateServices.Administration.DownstreamServerCollection G.
GetCleanupManager Method Microsoft.UpdateServices.Administration.ICleanupManager GetCleanupMa.
GetComponentsWithErrors Method System.Collections.Specialized.StringCollection GetComponentsWithErr.
GetComputersNotContactedSinceCount Method System.Int32 GetComputersNotContactedSinceCount(DateTime fromDate)
GetComputerStatus Method Microsoft.UpdateServices.Administration.UpdateServerStatus GetComput.
GetComputersWithRecentNameChange Method System.Collections.Specialized.StringCollection GetComputersWithRece.
GetComputerTarget Method Microsoft.UpdateServices.Administration.IComputerTarget GetComputerT.
GetComputerTargetByName Method Microsoft.UpdateServices.Administration.IComputerTarget GetComputerT.
GetComputerTargetCount Method System.Int32 GetComputerTargetCount(), System.Int32 GetComputerTarge.
GetComputerTargetGroup Method Microsoft.UpdateServices.Administration.IComputerTargetGroup GetComp.
GetComputerTargetGroups Method Microsoft.UpdateServices.Administration.ComputerTargetGroupCollectio.
GetComputerTargets Method Microsoft.UpdateServices.Administration.ComputerTargetCollection Get.
GetConfiguration Method Microsoft.UpdateServices.Administration.IUpdateServerConfiguration G.
GetContentDownloadProgress Method Microsoft.UpdateServices.Administration.ContentDownloadProgress GetC.
GetCurrentUserRole Method Microsoft.UpdateServices.Administration.UpdateServerUserRole GetCurr.
GetDatabaseConfiguration Method Microsoft.UpdateServices.Administration.IDatabaseConfiguration GetDa.
GetDownstreamServer Method Microsoft.UpdateServices.Administration.IDownstreamServer GetDownstr.
GetDownstreamServers Method Microsoft.UpdateServices.Administration.DownstreamServerCollection G.
GetEmailNotificationConfiguration Method Microsoft.UpdateServices.Administration.IEmailNotificationConfigurat.
GetFailedToDownloadUpdatesCount Method System.Int32 GetFailedToDownloadUpdatesCount()
GetFrontEndServers Method System.Collections.ObjectModel.ReadOnlyCollection`1[[Microsoft.Updat.
GetHashCode Method System.Int32 GetHashCode()
GetInstallApprovalRules Method Microsoft.UpdateServices.Administration.AutomaticUpdateApprovalRuleC.
GetLifetimeService Method System.Object GetLifetimeService()
GetPublisher Method Microsoft.UpdateServices.Administration.IPublisher GetPublisher(Stri.
GetReplicaStatus Method Microsoft.UpdateServices.Administration.UpdateServerStatus GetReplic.
GetRootUpdateCategories Method Microsoft.UpdateServices.Administration.UpdateCategoryCollection Get.
GetStatus Method Microsoft.UpdateServices.Administration.UpdateServerStatus GetStatus.
GetSubscription Method Microsoft.UpdateServices.Administration.ISubscription GetSubscription
GetSubscriptionEvent Method Microsoft.UpdateServices.Administration.ISubscriptionEvent GetSubscr.
GetSummariesPerComputerTarget Method Microsoft.UpdateServices.Administration.UpdateSummaryCollection GetS.
GetSummariesPerUpdate Method Microsoft.UpdateServices.Administration.UpdateSummaryCollection GetS.
GetSynchronizationInfo Method Microsoft.UpdateServices.Administration.ISynchronizationInfo GetSync.
GetType Method System.Type GetType()
GetUpdate Method Microsoft.UpdateServices.Administration.IUpdate GetUpdate(UpdateRevi.
GetUpdateApproval Method Microsoft.UpdateServices.Administration.IUpdateApproval GetUpdateApp.
GetUpdateApprovals Method Microsoft.UpdateServices.Administration.UpdateApprovalCollection Get.
GetUpdateCategories Method Microsoft.UpdateServices.Administration.UpdateCategoryCollection Get.
GetUpdateCategory Method Microsoft.UpdateServices.Administration.IUpdateCategory GetUpdateCat.
GetUpdateClassification Method Microsoft.UpdateServices.Administration.IUpdateClassification GetUpd.
GetUpdateClassifications Method Microsoft.UpdateServices.Administration.UpdateClassificationCollecti.
GetUpdateCount Method System.Int32 GetUpdateCount(), System.Int32 GetUpdateCount(UpdateSco.
GetUpdateEventHistory Method Microsoft.UpdateServices.Administration.UpdateEventCollection GetUpd.
GetUpdates Method Microsoft.UpdateServices.Administration.UpdateCollection GetUpdates(.
GetUpdatesAndApprovals Method Microsoft.UpdateServices.Internal.BaseApi.UpdatesAndApprovals GetUpd.
GetUpdateStatus Method Microsoft.UpdateServices.Administration.UpdateServerStatus GetUpdate.
get_BypassApiRemoting Method System.Boolean get_BypassApiRemoting()
get_IsConnectionSecureForApiRemoting Method System.Boolean get_IsConnectionSecureForApiRemoting()
get_IsServerLocal Method System.Boolean get_IsServerLocal()
get_Name Method System.String get_Name()
get_PortNumber Method System.Int32 get_PortNumber()
get_PreferredCulture Method System.String get_PreferredCulture()
get_ServerName Method System.String get_ServerName()
get_Version Method System.Version get_Version()
get_WebServiceUrl Method System.String get_WebServiceUrl()
HasApprovalsChanged Method System.Boolean HasApprovalsChanged(String cookie)
ImportUpdateFromCatalogSite Method System.Void ImportUpdateFromCatalogSite(String updateIdStr, String[].
ImportUpdates Method System.Void ImportUpdates(String packagePath, String logPath)
InitializeLifetimeService Method System.Object InitializeLifetimeService()
IsValidComputerTargetGroupName Method System.Boolean IsValidComputerTargetGroupName(String name)
LogMessage Method System.Void LogMessage(LogLevel logLevel, String message, Params Obj.
RegisterComputer Method Microsoft.UpdateServices.Administration.IComputerTarget RegisterComp.
ResetAndVerifyContentState Method System.Void ResetAndVerifyContentState()
ResumeAllDownloads Method System.Void ResumeAllDownloads()
RollupReportingData Method System.Void RollupReportingData()
SearchComputerTargets Method Microsoft.UpdateServices.Administration.ComputerTargetCollection Sea.
SearchUpdates Method Microsoft.UpdateServices.Administration.UpdateCollection SearchUpdat.
set_PreferredCulture Method System.Void set_PreferredCulture(String value)
ToString Method System.String ToString()
BypassApiRemoting Property System.Boolean BypassApiRemoting {get;}
IsConnectionSecureForApiRemoting Property System.Boolean IsConnectionSecureForApiRemoting {get;}
IsServerLocal Property System.Boolean IsServerLocal {get;}
Name Property System.String Name {get;}
PortNumber Property System.Int32 PortNumber {get;}
PreferredCulture Property System.String PreferredCulture {get;set;}
ServerName Property System.String ServerName {get;}
Version Property System.Version Version {get;}
WebServiceUrl Property System.String WebServiceUrl {get;}
A partir de esto y con un poco de maña y conocimientos de PowerShell podremos hacer verdaderas virguerías.
Una pista: el metodo GetComputerTargets() nos retornara una coleccion con todos los ordenadores administrados por el wsus al que estemos conectados, cada objeto de esa coleccion sera un ordenador y tendra sus propios metodos y propiedades que son:
CreateObjRef
Delete
Equals
GetComputerTargetGroups
GetHashCode
GetInventory
GetLifetimeService
GetParentServer
GetType
GetUpdateInstallationInfoPerUpdate
GetUpdateInstallationSummary
get_BiosInfo
get_ClientVersion
get_ComputerRole
get_ComputerTargetGroupIds
get_FullDomainName
get_Id
get_IPAddress
get_LastReportedInventoryTime
get_LastReportedStatusTime
get_LastSyncResult
get_LastSyncTime
get_Make
get_Model
get_OSArchitecture
get_OSDescription
get_OSInfo
get_ParentServerId
get_RequestedTargetGroupName
get_RequestedTargetGroupNames
get_SyncsFromDownstreamServer
get_UpdateServer
InitializeLifetimeService
PurgeAssociatedReportingEvents
set_BiosInfo
set_ClientVersion
set_FullDomainName
set_Id
set_IPAddress
set_LastReportedInventoryTime
set_LastReportedStatusTime
set_LastSyncResult
set_LastSyncTime
set_Make
set_Model
set_OSArchitecture
set_OSInfo
set_ParentServerId
set_RequestedTargetGroupName
ToString
BiosInfo
ClientVersion
ComputerRole
ComputerTargetGroupIds
FullDomainName
Id
IPAddress
LastReportedInventoryTime
LastReportedStatusTime
LastSyncResult
LastSyncTime
Make
Model
OSArchitecture
OSDescription
OSInfo
ParentServerId
RequestedTargetGroupName
RequestedTargetGroupNames
SyncsFromDownstreamServer
UpdateServer