Alessandro Del Sole's Blog

{ A programming space about Microsoft® .NET® }
posts - 1909, comments - 2047, trackbacks - 352

My Links

News

Your host

This is me! Questo spazio è dedicato a Microsoft® .NET®, di cui sono molto appassionato :-)

Cookie e Privacy

Microsoft MVP

My MVP Profile

Microsoft Certified Professional

Microsoft Specialist

Xamarin Certified Mobile Developer

Il mio libro su VB 2015!

Pre-ordina il mio libro su VB 2015 Pre-ordina il mio libro "Visual Basic 2015 Unleashed". Clicca sulla copertina per informazioni!

Il mio libro su WPF 4.5.1!

Clicca sulla copertina per informazioni! E' uscito il mio libro "Programmare con WPF 4.5.1". Clicca sulla copertina per informazioni!

These postings are provided 'AS IS' for entertainment purposes only with absolutely no warranty expressed or implied and confer no rights.
If you're not an Italian user, please visit my English blog

Le vostre visite

I'm a VB!

Guarda la mia intervista a Seattle

Follow me on Twitter!

Altri spazi

GitHub
I miei progetti open-source su GitHub

Article Categories

Archives

Post Categories

Image Galleries

Privacy Policy

Interagire da codice Visual Basic con Windows Server Update Services

Ieri mi è capitato di risolvere un problema inconsueto, sia perché mai affrontato prima sia perché riguardante una questione generalmente "out of scope" per quella che è la mia normale attività. All'interno dell'Amministrazione per la quale lavoro, che conta molte decine di migliaia di utenti, gli aggiornamenti per Windows vengono distribuiti tramite gli Windows Server Update Services installati, per l'appunto, su macchine server.

Uno degli amministratori di dominio aveva la necessità di innalzare il numero massimo di connessioni a WSUS da 30000 a 50000 ma con ricerche infruttuose dal suo punto di vista e così si è imbattuto in questa pagina della documentazione MSDN e quindi mi ha partecipato il problema.

Non sapendo assolutamente nulla di tutto ciò, dalla documentazione MSDN ho scoperto l'esistenza, lato server, di un assembly chiamato Microsoft.UpdateServices.Administration.dll che consente proprio l'interazione da codice .NET con WSUS. Tra le numerosissime classi che questo assembly offre, ce n'è una chiamata AdminProxy esposta dal namespace Microsoft.UpdateServices.Administration, la quale consente, fra l'altro, di ottenere un canale di comunicazione con il server WSUS per il tramite di alcuni overload del metodo GetUpdateServer. Tale metodo restituisce un tipo IUpdateServer che, a sua volta, mette a disposizione metodi e proprietà per ottenere (o impostare) informazioni sul server WSUS. In particolare ci serviva il metodo IUpdateServer.GetConfiguration che restituisce le impostazioni correnti sotto forma di tipo IUpdateServerConfiguration. Quest'ultimo tipo espone una proprietà chiamata MaximumAllowedComputers, di tipo Int32, che faceva al caso nostro. Il tutto richiede quindi l'aggiunta di un riferimento all'assembly Microsoft.UpdateServices.Administration.dll e, tradotto in termini di codice, è stato fatto così all'interno di una semplice Console Application:

Imports Microsoft.UpdateServices.Administration

Module Module1

    Sub Main()
        'Ottiene un riferimento al server WSUS corrente
        Dim serverInstance As IUpdateServer = AdminProxy.GetUpdateServer()
        'Ottiene le informazioni di configurazione
        Dim serverConfiguration As IUpdateServerConfiguration = serverInstance.GetConfiguration

        Try
            'Imposta la proprietà di interesse
            serverConfiguration.MaximumAllowedComputers = 50000
            'Salva le modifiche (fondamentale!)
            serverConfiguration.Save()
            Console.WriteLine("Fatto!")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        End Try
        Console.ReadLine()
    End Sub
End Module

Così facendo siamo riusciti ad interagire da codice col server WSUS (di produzione) e, soprattutto, abbiamo imparato una cosa nuova.

Alessandro

Print | posted on martedì 14 settembre 2010 12:43 | Filed Under [ Visual Basic ]

Powered by:
Powered By Subtext Powered By ASP.NET