DevAdmin Blog

Blog di Ermanno Goletto (Microsoft MVP Directory Services - MCITP - MCTS - MCSA - MCP)
posts - 977, comments - 549, trackbacks - 8

My Links

News

Avatar

Curriculum Vitae

Visualizza il profilo di Ermanno Goletto su LinkedIn

Follow ermannog on Twitter


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Server Infrastructure Days 2013 - Milano - 18 e 19 Giugno


Logo SysAdmin.it SysAdmin.it Staff


Logo TechNet Forum TechNet Italia @ForumTechNetIt Follow TechNet Forum on Twitter


Logo MVP

Article Categories

Archives

Post Categories

Blogs

Friends

Knowledge Base

MVP Sites

Resources

Friday, May 24, 2013

XP SP3: Security Essentials non rilevato dal Centro di sicurezza PC

Questo sembra essere un problema che capita spesso leggendo i vari forum su Internet, ed è successo anche a me di vederlo di tanto in tanto. In questo post cercherò di riportare i motivi e le possibili soluzioni a questo issue.

Risorse hardware insufficienti

Microsoft Security Essentials (MSE) ha requisiti decisamente bassi come si può vedere dal segunete Downloading and Installing Microsoft Security Essentials:

For Windows XP, a PC with a CPU clock speed of 500 MHz or higher, and 256 MB RAM or higher.

Per esperienza ho notato che il processo di MSE (MsMpEng.exe) all’avvio può occupare più memoria soprattutto se esegue il controllo della presenza di firme aggiornate da scaricare. Questo su sistemi con il minimo della memoria richiesta può causare uno swap che rallenta la comunicazione di MSE col Centro di sicurezza PC col risultato di vedere il messaggio che non è stato rilevato un antivirus.

Ovviamente poi occorre disinstallare eventuali altri software antivirus in quando oltre ad avere un degrado delle performance si corre anche il rischio che i software interferiscano tra loro col risultato di essere meno efficaci (a riguardo si veda Does Microsoft Security Essentials work with other antivirus software?).

Eliminazione della cartella %SystemRoot%\System32\wbem\Repository

L’eliminazione di questa cartella può essere un primo tentativo di risolvere il problema se si è corrotto il database delle meta-informazioni e delle definizioni delle classi WMI.

Per eseguire tale operazione conviene seguire la procedura illustrata nel post WMI: Rebuilding the WMI Repository dell’EPS Windows Server Performance Team che nel caso di Windows XP significa eseguire un un file batch contenete i seguenti comandi:

sc config winmgmt start= disabled
net stop winmgmt /y
%systemdrive%
cd %windir%\system32\wbem
for /f %%s in ('dir /b *.dll') do regsvr32 /s %%s
wmiprvse /regserver
winmgmt /regserver
sc config winmgmt start= auto
net start winmgmt
for /f %%s in ('dir /s /b *.mof *.mfl') do mofcomp %%s

(come riportato nel post WMI: Rebuilding the WMI Repository nel caso di sistemi operativi diversi da Windows XP occorre eseguire ancora altre operazioni)

Terminata l’esecuzione del file batch riavviare il computer un paio di volte.

Riesecuzione della registrazione delle DLL di MSE

Un’altro tentativo può essere quello di eseguire nuovamente la registrazione delle dll di MSE nel caso qualcosa si sia verificato qualche problema durante l’installazione tramite i comandi:

REGSVR32 WUPS2.DLL /S
REGSVR32 WUPS.DLL /S

Impostazione avvio ritardato del Security Center

Su Windows Vista è stato introdotta la possibilità di avviare i servizi solo quando il sistema è avviato impostando l’avvio come Automatic (Delayed). Sui sistemi precedenti a Windows Vista è possibile utilizzare l’approccio descritto nella KB193888: How to delay loading of specific services.

Impostare il servizio relativo al Centro di sicurezza PC con l’avvio ritardato può in certi casi risolvere il problema soprattutto su macchine con scarse risorse hardware.

posted @ Friday, May 24, 2013 5:17 PM | Feedback (0) | Filed Under [ Links Tips Security ]

Wednesday, May 22, 2013

DHCP evoluzione e problemi noti

DHCP Lease Process Overview

Evoluzione del servizio DHCP

Il servizio DHCP ha subito nel corso degli anni varie evoluzioni che hanno portato una serie di nuove funzionalità estremante utili per un servizio chiave dell’infrastruttura aziendale. Infatti è fondamentale strutturare la gestione del DHCP in ottica di fault tollerance e scalabiltà futura ragionando sulla base della criticità e dell’evoluzione futura della propria rete aziendale.

Di seguito i link su cui trovare le nuove features introdotte dalle varie versioni del sistema operativo server:

Sistema Operativo Nuove funzionalità Link
Windows Server 2000
  • Enhanced performance monitoring and server reporting capabilities
  • Expanded support for multicast scopes and superscopes
  • Support for user-specific and vendor-specific DHCP options
  • Integration of DHCP with DNS
  • Rogue DHCP server detection
  • Dynamic support for BOOTP clients
  • Read-only console access to DHCP Manager

New Features

Windows Server 2003
  • DHCP client alternate configuration
  • DHCP database backup and restore

New features for DHCP

Windows Server 2008
  • Dynamic Host Configuration Protocol for IPv6 (DHCPv6) support
  • Network Access Protection enforcement support

New Networking Features in Windows Server 2008 and Windows Vista

 

Windows Server 2008 R2
  • MAC addressing filtering for DHCP leases
  • DHCP name protection
  • Supports prevention of exhaustion of IP addresses at scope level
  • DHCP logging enhancements
  • Supports migration of DHCP Server role using Windows Server Migration Tool (WSMT)
  • DHCP Server service is moved under Network Service account from Local Service account
  • Generate link layer address filtering lists from current leases
  • Create reservations from current leases
  • Create new DHCP options that apply only to reservations
  • Integration with NAP
  • DHCP Split Scope Wizard
  • Delayed DHCP Server Response Setting

New features in DHCP for Windows Server 2008 R2 / Windows 7

Windows Server 2008 R2 Improvements in DHCP (Part 1)

Windows Server 2012
  • DHCP failover
  • Policy based assignment
  • Windows PowerShell for DHCP Server

What's New in DHCP

 

Per ulteriori approfondimenti si vedano anche i seguenti:

Issues e problemi noti del servizio DHCP

Il servizio DCHP e il client DHCP dal momento che si interfacciano con vari aspetti dell’infrastruttura sono stati spesso oggetto di correzioni e KB, quindi risulta necessario assicurarsi che i server e client ricevano gli aggiornamenti critici e di sicurezza. Inoltre è possibile consultare le KB relative al servizio DHCP al seguente http://search.microsoft.com/en-us/supportresults.aspx?form=mssupport&q=DHCP.

Di seguito ho raccolto alcuni problemi noti che possono verificarsi con l’uso del DHCP raccolti sulla base di esperienze personali e delle domande più ricorrenti sui forum di Sysadmin.it.

Perdita delle impostazioni DNS sulle reservation in WS2008R2 o WS2012

La problematica è discussa nella KB2782558: DNS settings of a DHCP reservation revert to the settings at the scope level in Windows Server 2008 R2 and Windows Server 2012.

Per risolvere l’issue è disponibile un hotfix scaricabile dal link della KB.

Duplicazione dei lease durante la clonazione del Domain Controller virtuali in WS2012

La problematica è discussa nella KB2742836: Two DHCP leases are created for each domain controller when you use the VDC cloning feature.

Questo issue non è un problema, ma la consegueza del fatto che il DC viene installato e clonato in periodo di tempo inferiore alla durata del lease può accadere quanto segue:

  1. Quando il DC viene installato ottiene un lease DHCP
  2. Successivamente viene impostato un IP fisso per poter aggiungere il ruolo AD DS
  3. Se il DC viene usato per generare un DC clonato nella fase di inizializzazione richiede un lease DHCP e gli viene fornito lo stesso del DC sorgente nel caso no sia ancora scaduto

Per risolvere il problema basta rimuovere manualmente i lease relativi ai Domain Controller.

Mancato rinnovo del lease dopo Sleep o Hybernate in W7 Sp1 o WS2008R2 SP1

La problematica è discussa nella KB2393659: A DHCP client computer that has multiple network adapters and that is running Windows 7 or Windows Server 2008 R2 cannot renew a DHCP lease when the computer wakes

La KB risolve un problema di mancato rinnovo del lease DHCP su computer con più schede di rete quando riprende la sua funzionalità dopo uno Sleep o un Hibernate

Rifiuto del lease DCHP in W7 SP1 o WS2008R2 SP1

La problematica è discussa nella KB 2824546: Incorrect DHCP packet is sent when DHCP client receives a DHCP offer on a Windows 7 SP1-based or Windows Server 2008 R2 SP1-based computer

Il problema causato dall'installazione della  KB 2393659 che potrebbe non essere compatibile con software di terze parti di gestione della rete con la conseguenza che il DHCP Client usa lo stesso buffer per inviare e ricevere pacchetti, il risultato è che il client rifiuta il pacchetto perché lo vede provenire da un server DHCP con IP 0.0.0.0 che considera come non autorizzato

Perdita del lease al riavvio in Windows Vista, WS2008, W7 o WS 2008 R2

La problematica è discussa nella KB 958336: A computer loses its DHCP IP address if a DHCP server is not available in Windows 7 or Windows Vista.

La perdita del lease si verifica quando il computer si avvia il DHCP server non è disponibile il lease DHCP non viene mantenuto e viene assegnato IP sul range APIPA (Automatic Private IP Addressing), per risolvere il problema è possibile eseguire una modifica sul registro del sistema:

  • Su Windows 7 / Windows Server 2008 R2 è possibile impostare a 1 la chiave DWORD
    HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\DontPingGateway
  • Su Windows Vista / Windows Server 2008 è possibile impostare a 1 la chiave DWORD
    HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<Adapter>\DontPingGateway

Per approfondimenti su questo problema si veda il post Client Windows Vista e Windows 7 potrebbero rimanere senza indirizzo IP se il DHCP server è indisponibile.

Mancata impostazione del default gateway

La problematica è discussa in questo post Windows server 2003 e 2008 - DHCP client possono non ottenere correttamente settings del default gateway.

Il problema si verifica negli scope con State pari a 3 ovvero in modalità Switched, i possibili stati di uno scope sono:

  • 0 - Deactivates the scope
  • 1 - Activates the scope (default)
  • 2 - Deactivates the scope and marks the scope as "Switched"
  • 3 - Activates the scope and marks the scope as "Switched"

Va però tenuto presente che by design, Windows non assegna nessun default gateway alle reti di tipo “Switched”, in quanto a livello teorico per tali reti è impossibile definire un default gateway univoco. A riguardo di veda anche Netsh commands for DHCP.

Memory leak nel caso in cui il DNS dynamic protocol sia abilitato su un WS2003 con il servzio DHCP attivo

La problematica è discussa nella KB 939928: A memory leak occurs if the DNS dynamic update protocol is enabled on a DHCP server that is running Windows Server 2003.

La soluzione può essere quella di schedulare un riavvio del servizio DHCP, per approfondimenti si vedano:

posted @ Wednesday, May 22, 2013 3:37 PM | Feedback (0) | Filed Under [ Links Tips Security IT Virtualization ]

Friday, May 17, 2013

Virtual Server 2005 R2 Sp1 errori 7022 e 7001 all’avvio

Se Virtual Server R2 2005 Sp1 non si avvia riportano i seguenti errori:

Tipo evento: Errore
Origine evento: Service Control Manager
Categoria evento: Nessuno
ID evento: 7022
Descrizione:
Servizio Servizio di assistenza macchina virtuale bloccato in partenza.

Tipo evento:    Errore
Origine evento:    Service Control Manager
Categoria evento:    Nessuno
ID evento:    7001
Descrizione:
Il servizio Virtual Server dipende dal servizio Servizio di assistenza macchina virtuale che non è stato avviato per il seguente errore:
Dopo l'avvio, il servizio si è sospeso in uno stato di attesa.

Il motivo può essere dovuto al cambio dell’indirizzo IP sulla scheda di rete che viene usata per Rete Esterna per risolvere è possibile eliminare e ricreare la Rete Esterna, operazione decisamente semplice tramite VMRCplus.

image

Per altre informazioni su errori che possono provare il mancato avvio o l’interruzione del servizio di Virtual Server 2005 R2 si veda anche la KB 941125: The Virtual Server service may stop responding when the service is starting if one or more of the virtual machines are configured to automatically start when the Virtual Server service starts.

posted @ Friday, May 17, 2013 11:06 AM | Feedback (0) | Filed Under [ Links Tips Virtualization ]

Wednesday, May 15, 2013

Windows 2003 e Microsoft Update in loop

Oggi ho dovuto installare un Windows Server 2003, terminata l’installazione come da manuale ho provveduto a scaricare gli aggiornamenti e per farlo ho usato come sempre Microsoft Update ovvero la versione aggiornata del sito di update di Microsoft.

Windows Server 2003 per default utilizza invece ancora Windows Update, per passare a Microsoft Update occorre selezionare l’opzione relativa dopo aver avviato Windows Update e installare l’ActiveX relativo (MUWebControl Class in Wuweb.dll).

Il problema è che però dopo l’attivazione di Microsoft Update invece di proporre come di consueto la selezione tra l’esecuzione dell’update in modalità Rapido o Personalizzato la pagina web continuava a riproporre la fase “Ricerca dell’ultima versione del software di aggiornamento per Windows nel computer in uso…”

image

Tornando invece tramite l’opzione Cambia impostazioni ad utilizzare Windows Update gli aggiornamenti venivano invece rilevati, scaricati e installati correttamente.

Quindi senza dubbio era andato storto qualcosa durante l’installazione dell’ActiveX di Microsoft Update.

Per risolvere ho avviato Internet Explorer in modalità senza componenti aggiuntivi tramite Start –> Tutti i programmi –> Accessori –> Utilità di sistema –> Internet Explorer (nessun componente aggiuntivo) (in alternativa è possibile eseguire il comando iexplore.exe –extoff).

Quindi ho selezionato l’opzione per controllare la disponibilità di aggiornamenti di Windows

image

A questo punto è stata riproposta l’opzione di scaricare nuovamente l’ActiveX di Microsoft Update

image

Terminata l’installazione dell’ActiveX Microsoft Update ha ripreso a funzionare correttamente.

Un metodo alternativo (che però non ho testato) potrebbe essere quello di scaricare l’ultimo Windows Update Agent dal seguente Information for network administrators about how to obtain the latest Windows Update Agent, l’ultima versione al momento disponibile dovrebbe essere la 7.4.7600.226 (a riguardo si veda How to get the latest version of the Windows Update Agent) e di reinstallarlo tramite il comando per sistemi operativi a 32 bit:

WindowsUpdateAgent30-x86.exe /wuforce

Oppure il seguente per sistemi operativi a 64 bit:

WindowsUpdateAgent30-x64.exe /wuforce

Per ulteriori informazioni si veda la seguente KB How do I reset Windows Update components? che illustra come resettare la funzionalità di aggiornamento di Windows e propone anche un tool per l’esecuzione automatica delle correzioni.

Inoltre per problemi legati agli aggiornamenti in generale si vedano anche i seguenti:

posted @ Wednesday, May 15, 2013 10:13 PM | Feedback (0) | Filed Under [ Links Tips IT ]

Tuesday, May 07, 2013

Skype: disabilitazione invio e ricezione file

In questi giorni si sta diffondendo tramite Skype un malware mediante lo scambio dei file o l’invio di file o di link che poi scaricano un malware.

Un malware che va per la maggiore è quello descritto nel post Virus Mal/DorkLnk-A di Mario Serra di seguito un altro paio di post a tema:

Se la fonte dell’infezione è un link la sicurezza viene demandata all’antivirus lato client e lato firewall, soprattutto quest’ultimo può intervenire bloccando il link perché appartenente a categoria vietate, perché proviene da un’origine segnalata come malevola o applicando l’analisi antimalware sul file richiesto.

Quello che si può fare lato skype se l’infezione viene propagata scambiando file è quello di bloccare il trasferimento file.

E’ possibile farlo usando le policies di Skype che non sono altro che impostazioni di registro nelle chiavi:

  • HKLM\Software\Policies\Skype\Phone per impostazioni a livello di computer
  • HKCU\Software\Policies\Skype\Phone per impostazioni a livello utente

Le policies sono descritte nella IT Administrators Guide in particolare per disabilitare il Trasferimento file a livello di computer è possibile impostare a 1 la chiave REG_DWORD

HKLM\Software\Policies\Skype\Phone\DisableFileTransferPolicy

Volendo è disponibile un file adm per gestire le impostazioni tramite GPO che può essere scaricato al seguente http://download.skype.com/share/security/Skype-v1.7.adm

Leggendo questi post pare non sia mai stato rilasciato un adm più recente dell’1.7:

In alternativa è possibile anche gestire l’impostazione tramite uno script di Avvio Computer sempre configurato tramite GPO che esegua il seguente comando:

REM Aggiunta registry Key per disabilitazione File Transfert con Skype
reg query "HKLM\Software\Policies\Skype\Phone" /v DisableFileTransfer
IF ERRORLEVEL 1 reg add "HKLM\Software\Policies\Skype\Phone" /v DisableFileTransfer /t REG_DWORD /d 1

Ho testato questa seconda soluzione su macchine XP SP3 32 bit e Windows 7 Sp1 a 64 Bit.

Volendo è anche possibile distribuire tale impostazione mediante le Group Policies Preferences.

posted @ Tuesday, May 07, 2013 2:55 PM | Feedback (0) | Filed Under [ Tips Security IT ]

Thursday, May 02, 2013

Windows Server 2012: errore durante l’installazione del .NET Framework 3.5

Tra le funzionalità di Windows Server 2012 vi è la possibilità di installare il .NET Framework 3.5, ma va precisato che tale funzionalità non viene integrata nel sistema durante l’installazione (al contrario ad esempio del .NET Framework 4.5).

Infatti se tentiamo l’installazione  e il computer non ha una connessione a Internet questa fallirà e nei registri relativi al Setup verrà registrato l’evento d’informazione:

Log Name:      Setup
Event ID:      11
Task Category: (1)
Level:         Information
Description:
Update NetFx3 of package Microsoft .NET Framework 3.0 failed to be turned on. Status: 0x800f0906.

In sostanza con Windows 8 e Windows 2012 è stato introdotto il concetto di Features on Demand per risparmiare spazio su disco, in sostanza alcune features tra cui il .NET Framework 3.5 richiedono di essere scaricate da Internet o di avere il media d’installazione per essere installate.

Dal seguente Configure Features on Demand in Windows Server:

Features on Demand is a new feature in Windows® 8 and Windows Server 2012 that allows you to remove role and feature files (sometimes called feature payload) from the operating system to conserve disk space, and install roles and features from remote locations or installation media instead of from local computers. You can remove feature files from running physical or virtual computers. You can also add feature files to or remove feature files from Windows image (WIM) files or offline virtual hard disks (VHDs) to create a reproducible copy of Windows 8 and Windows Server 2012 Features on Demand configurations.

In a Features on Demand configuration, when feature files are not available on a computer, if an installation requires those feature files, Windows Server 2012 can be directed to get the files from a side-by-side feature store (a shared folder that contains feature files, and is available to the computer on the network), from Windows Update, or from installation media. By default, when feature files are not available on the target server, Features on Demand searches for missing feature files by performing the following tasks, in the order shown.

  1. Searching in a location that has been specified by users of the Add Roles and Features Wizard or DISM installation commands
  2. Evaluating the configuration of the Group Policy setting, Computer Configuration\Administrative Templates\System\Specify settings for optional component installation and component repair
  3. Searching Windows Update

In ogni caso come detto è possibile specificare una sorgente per i file d’installazione (come indicato nel tooltip giallo) selezionando la voce Specify an alternate source path.

image

Se si desidera utilizzare il media d’installazione è possibile specificare il path <DVD drive>:\sources\sxs

image

Per ulteriori informazioni si vedano:

posted @ Thursday, May 02, 2013 12:40 AM | Feedback (0) | Filed Under [ Links Tips IT .NET ]

Wednesday, May 01, 2013

Windows Server 2012: Hyper-V e Ibernazione

Con Windows 8 è stato introdotta la possibilità di usare Hyper-V anche su OS Client grazie alla funzionalità Client Hyper-V (a riguardo si veda il mio post Windows 8 e Client Hyper-V). Sebbene Client Hyper-V abbia qualche limitazione rispetto alla versione di Hyper-V contenuta in Windows Server 2012 ha però anche qualche feature in più come ad esempio la possibilità di usare le reti Wireless e l’integrazionei con le funzionlità di Standby e Ibernazione che possono tornare utili su un laptop.

Dal seguente Client Hyper-V:

“With Client Hyper-V, you can use Hyper-V virtualization with both wireless network adapters and sleep states on your desktop computer. For example, if you are running Client Hyper-V on a laptop and close the lid, the virtual machines that are running will be put into a saved state, and resumed when the machine wakes.”

Se però avete la necessità come me di avere Windows Server 2012 su un laptop potete ricorrere ad un workaroud che poteva già essere utilizzato con WS2008 per poter utilizzare Standby e Ibernazione e che è stato descritto in questo post Hibernate and Sleep with Hyper-V Role Enabled.

L’idea è quella di modificare l’avvio del servizio hvboot tramite la seguente procedura:

Aggiungere la chiave di registro HKLM\SYSTEM\CurrentControlSet\Services\hvboot

Quindi aggiungere il valore DWORD Start in HKLM\SYSTEM\CurrentControlSet\Services\hvboot e impostarlo al valore 3 (0=Boot, 1=System, 2=Auto, 3=Demand, 4=Disabled)

In alternativa è possibile eseguire il comando sc config hvboot start= demand

Riavviare il computer

Dopo aver impostato il servizio hvboot ad avviarsi su richiesta sarà possibile utilizzare Sleep e Ibernazione quando non sarà avviato, sarà poi possibile avviare se necessario il servizio per utilizzare Hyper-V tramite il comando net start hvboot. Ovviamente quando il servizio hvboot sarà in esecuzione Sleep e Ibernazione non saranno più disponibili.

Per abilitare l’ibernazione è possibile usare il comando powercfg.exe /hibernate on inoltre è possibile avviare l’ibernazione con il comando shutdown –h.

Per ulteriori informazioni si vedano:

posted @ Wednesday, May 01, 2013 11:35 PM | Feedback (0) | Filed Under [ Links Tips IT Virtualization ]

Sunday, April 21, 2013

Server Infrastructure Days 2013

Anche quest’anno il 18 e 19 Giugno presso il Microsoft Innovation Campus si terrà la Server Infrastructure Days 2013 l'evento gratuito organizzato dalla community WindowServer.it in collaborazione con Microsoft Italia, dedicato alle tecnologie server Microsoft.

Server Infrastructure Days 2013 - Leaderborad 728x90

Io e Mario Serra saremo presenti con due sessioni su Active Directory sui temi della migrazione e del Disaster Recovery, ma insieme a speaker di altissima qualità tecnica verranno analizzate le tecnologie Microsoft utilizzate nelle moderne infrastrutture informatiche. Infatti si parlerà di Exchange Server 2013, Lync Server 2013, SQL Server 2012, Sharepoint Server 2013, System Center 2012, Windows Azure, Windows Server 2012 (Active Directory, Security, Networking, PowerShell, Hyper-V, VDI).

In altre parole un’ottima occasione per approfondire tecnicamente le tecnologie, conoscersi e condividere le proprie esperienze confrontandosi con chi ha già adottato, installato, configurato i prodotti in scenari reali.

Qui trovate l’elenco degli speaker mentre per maggiori dettagli sugli argomenti delle sessioni vi rimando all’Agenda dell’evento.

Non vi rimane quindi che compilare il modulo d’iscrizione e ci si vede il 18 e 19 Giugno.

posted @ Sunday, April 21, 2013 2:16 PM | Feedback (0) | Filed Under [ Links Security Database IT SharePoint Exchange Virtualization ]

Friday, April 19, 2013

.NET Framework e i parametri opzionali

Con la versione 4.0 del .NET Framework anche C# in Visual Studio 2010 può utilizzare i parametri opzionali, a riguardo si veda Named and Optional Arguments (C# Programming Guide).

Questa novità di fatto rappresenta una convergenza verso VB.NET, infatti i parametri opzionali sono sempre stati presenti in VB.NET, a riguardo si veda Optional Parameters (Visual Basic).

In realtà con la versione 4.0 del .NET Framework si è deciso di uniformare i due linguaggi C# e VB.NET per allineare le features. Quindi grazie alla cooperazione dei team di sviluppo dei due linguaggi VB.NET ha ora ad esempio l'auto implemented property e la collection initializer, mentre C# sono stati introdotti gli optional parameters.

A mio avviso questa funzionalità può risultare utile solo quando si deve scrivere codice che fa uso di COM e occorre utilizzare via interop componenti che utilizzano parametri opzionali come ad esempio le PIA di Office.

In tutti gli altri casi a mio avviso conviene utilizzare overloading dei metodi dal momento che i parametri opzionali possono nascondere alcune insidie dal momento che dietro le quindi il compilatore non fa altro che convertire un metodo con parametri opzionali in una invocazione dello stesso dove i parametri opzionali sono specificati passando il default value.

// Definizione metodo
public void DoSomething([Optional, DefaultParameterValue("")] string s)
{
}

// Invocazione metodo
DoSomething();

// Invocazione risultante nell’Assembly
DoSomething("");

Questo significa che se la definizione e l’invocazione stanno in due assemby diversi (una library e un application ad esempio) modificando il valore di default se non si compila anche l’applicazione quest’ultima continuerà ad utilizzare il valore di default precedente. Inoltre se nell’applicazione fosse invece necessario mantenere il vecchio valore di default come parametro da passare alla funzione occorrerebbe cercare ogni invocazione del metodo e specificare il parametro.

Questo genere di issue non si verifica invece quando viene implementato l’overloading dei metodi (questo issue è di fatto lo stesso  che che si può riscontrare con le costanti nei confronti dei membri statici).

Per maggiori info si vedano:

Gli optional parameters sono CLS Compliant, al contrario ad esempio del tipo UInteger. Il modo più rapido per verificare che il codice è CLS Compliant è applicare l’attributo <Assembly: CLSCompliant(True)> alla classe e verificare che non vengano riportati warning:

image

Ovviamente un parametro opzionale non sarà CLS Compliant se fa uso di un tipo non CLS Complinat come specificato in Type of optional value for optional parameter <parametername> is not CLS-compliant.

L’importanza di scrivere codice CLS Compliant sta nel fatto che questo può essere consumato da applicazioni e librerie scritte anche i linguaggi diversi, a riguardo si vedano:

Conclusioni

Per quanto mi riguarda i parametri opzionali, come detto prima, sono utili quando si è obbligati a invocare tramite COM metodi che hanno parametri opzionali (PIA di Office).

In tutti gli atri casi ovvero implementare nelle proprie librerie metodi con parametri opzionali è a mio avviso una brutta pratica di programmazione il cui fine può essere solo quello di scrivere meno codice rispetto a quello necessario per l’implementazione degli overloads, ma andando poi inevitabilmente a complicare il codice all’interno del metodo e a ridurre la leggibilità creando una struttura monolitica.

A riguardo si vedano anche:

posted @ Friday, April 19, 2013 3:53 PM | Feedback (0) | Filed Under [ Links Code, Snippets & Scripts .NET ]

PowerShell exe wapper

image Ormai tramite PowerShell è possibile creare script che possono risolvere un gran numero di problematiche amministrative o ripetitive che svolte tramite interfaccia grafica risulterebbero complesse o richiederebbero molto tempo.

In alcuni scenari poi potrebbe essere necessario dare la possibilità di eseguire lo script a utenti che si occupano di manutenere determinati asset dell’infrastruttura, ma che non hanno specifiche competenze IT o Dev, ovvero degli utenti Information Worker avanzati.

In questi scenari può tornare utile PS2EXE sviluppato da Ingo Karstein per informazioni sul tool oltre alle informazione sull’homepage del progetto su CodePlex si vedano i seguenti:

Per una descrizione dell’idea che sta alla base di PS2EXE con alcuni dettagli tecnici sull’implementazione si veda Learn About Two CodePlex Projects: PS2EXE and RoboPowerCopy.

posted @ Friday, April 19, 2013 9:28 AM | Feedback (0) | Filed Under [ Links Code, Snippets & Scripts Tips IT .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET