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:


http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?culture=es-AR&EventID=1032327773&CountryCode=AR


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.




Mas información


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.


Mas información


Scripta tus datos.


Con este add-in para SQL Server podrás sacar un script de tus datos para ejecutarlos en otros servidores.




Mas información


Arquitectura de Exchange 2007.


Por fin!!, un documento que estaba esperando.


http://www.microsoft.com/downloads/details.aspx?FamilyID=b34fa7cc-8f13-4e21-ae87-eb824728ddd1&DisplayLang=en


PowerShell en Linux.


Resulta que alguien ha portado PowerShell a Linux (o eso dice él)


Mas información


Libro gratuito sobre PowerShell.


http://thepowershellguy.com/blogs/posh/archive/2007/05/10/free-english-version-of-windows-powershell-book-available-for-download.aspx


 

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:


http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032327772&EventCategory=4&culture=es-ES&CountryCode=ES


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:


  • HP StorageWorks Modular Storage Array 1000
  • HP StorageWorks Modular Storage Array 1500
  • HP StorageWorks Virtual Array 7110 and 7410
  • HP StorageWorks Modular Array and Enterprise Modular Array
  • HP StorageWorks 3000 and 5000 Enterprise Virtual Array
  • HP StorageWorks 4000, 6000 and 8000 Enterprise Virtual Array
  • HP StorageWorks XP 12000, 1024 and 128 Arrays
  • HP StorageWorks XP 10000, 512, and 64 Arrays
  • HP StorageWorks ESL E-Series Tape Libraries
  • HP StorageWorks EML E-Series Tape Libraries
  • HP StorageWorks ESL 9000 Series Tape Libraries

  • ESL 9000 Series Tape Libraries may require ETLA upgrade components for support)

  • 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.


    http://h18006.www1.hp.com/storage/SCOM_managementpack.html

    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