ARGOMENTO about_Windows_PowerShell_2.0 DESCRIZIONE BREVE Descrive le nuove funzionalità incluse in Windows PowerShell 2.0. DESCRIZIONE DETTAGLIATA In Windows PowerShell 2.0 sono incluse diverse importanti funzionalità che ne estendono l'utilizzo, ne migliorano l'usabilità e consentono di controllare e gestire in modo più facile e completo gli ambienti basati su Windows. Windows PowerShell 2.0 garantisce la compatibilità con le versioni precedenti. Cmdlet, provider, snap-in, script, funzioni e profili progettati per Windows PowerShell 1.0 funzionano in Windows PowerShell 2.0 senza alcuna modifica. NUOVE FUNZIONALITÀ Windows PowerShell 2.0 include le nuove funzionalità seguenti. Comunicazione remota Windows PowerShell 2.0 consente di eseguire comandi in uno o più computer remoti con un solo comando di Windows PowerShell. È possibile eseguire comandi singoli o creare una connessione permanente (sessione) per eseguire una serie di comandi correlati. È inoltre possibile avviare una sessione con un computer remoto in modo che i comandi digitati vengano eseguiti direttamente nel computer remoto. Le funzionalità di comunicazione remota di Windows PowerShell sono compilate in Gestione remota Windows, l'implementazione Microsoft del protocollo WS-Management, un protocollo standard per le comunicazioni basato su SOAP e compatibile con i firewall. Nei computer remoti devono essere installati Windows PowerShell 2.0, Microsoft .NET Framework 2.0 e il servizio Gestione remota Windows. I comandi remoti sono supportati in tutti i sistemi operativi che supportano Windows PowerShell. L'utente corrente deve disporre delle autorizzazioni per eseguire comandi nei computer remoti. Per ulteriori informazioni, vedere about_Remote_Requirements. Per supportare la comunicazione remota, sono stati aggiunti i cmdlet Invoke-Command, Enter-PSSession ed Exit-PSSession, con altri cmdlet che contengono il sostantivo PSSession. Questi cmdlet consentono di creare e gestire connessioni permanenti. È inoltre stato aggiunto il parametro ComputerName a diversi cmdlet, tra cui Get-Process, Get-Service e Get-Eventlog. Questo parametro consente di ottenere informazioni sui computer remoti. Questi cmdlet utilizzano i metodi .NET Framework per ottenere i dati, pertanto non si basano sulla comunicazione remota di Windows PowerShell. Non richiedono alcun nuovo programma, né operazioni di configurazione. Per ulteriori informazioni, vedere l'argomento della Guida relativo a ciascun cmdlet. Per ulteriori informazioni sui comandi remoti, vedere about_Remote e about_Remote_FAQ. Per ulteriori informazioni sulle sessioni, vedere about_PSSessions. Windows PowerShell ISE Windows PowerShell 2.0 include Windows PowerShell Integrated Scripting Environment (ISE), un'applicazione host che consente di eseguire comandi e progettare, scrivere script, nonché eseguirne il test e il debug in un ambiente grafico, contraddistinto dal colore e basato su Unicode. Windows PowerShell ISE richiede Microsoft .NET Framework 3.0 o versioni successive. Windows PowerShell ISE include: - Un riquadro Comando che consente di eseguire comandi interattivi come se si utilizzasse la console di Windows PowerShell. È sufficiente digitare un comando, quindi premere INVIO. L'output viene visualizzato nel riquadro Output. - Un riquadro Script che consente di comporre, modificare ed eseguire funzioni e script, nonché eseguirne il debug. - Più schede, ciascuna con un riquadro Comando e un riquadro Script, che consentono di eseguire una o più attività in modo indipendente. Windows PowerShell ISE è destinato a utenti principianti ed esperti. Processi in background I processi in background sono comandi eseguiti in modo asincrono. Quando si esegue un processo in background, il prompt dei comandi viene immediatamente restituito, anche se il comando è ancora in esecuzione. È possibile utilizzare la funzionalità di processo in background per eseguire in background un comando complesso in modo da utilizzare la sessione per altre attività durante l'esecuzione del comando. È possibile eseguire un processo in background in un computer locale o remoto, quindi salvare i risultati nel computer locale o remoto. Per eseguire un processo in modalità remota, utilizzare il cmdlet Invoke-Command. Windows PowerShell include un set di cmdlet che contengono il sostantivo Job (cmdlet di processo). Utilizzare questi cmdlet per la creazione, l'avvio, la gestione e l'eliminazione di processi in background e per l'acquisizione dei risultati di un processo in background. Per ottenere un elenco dei cmdlet di processo (job), digitare il comando seguente: get-command *-job Per ulteriori informazioni sui processi in background, vedere about_Jobs. Script Debugger Windows PowerShell 2.0 include un debugger basato su cmdlet per script e funzioni. Il debugger è supportato da un'API pubblica completamente documentata che è possibile utilizzare per compilare un debugger personalizzato o per personalizzare o estendere il debugger. I cmdlet del debugger consentono di impostare punti di interruzione su righe, colonne, variabili e comandi. Questi cmdlet consentono di gestire i punti di interruzione e visualizzare lo stack di chiamate. È possibile creare punti di interruzione condizionali e specificare azioni personalizzate in corrispondenza di un punto di interruzione, ad esempio l'esecuzione di diagnostica e la registrazione di script. Quando si raggiunge un punto di interruzione, Windows PowerShell sospende l'esecuzione e avvia il debugger. Il debugger include un set di comandi personalizzati che consentono di eseguire il codice un'istruzione alla volta. È inoltre possibile eseguire comandi standard di Windows PowerShell per visualizzare i valori delle variabili e utilizzare i cmdlet per verificare i risultati. Per ulteriori informazioni sul debug, vedere about_Debuggers. Sezione Data Negli script progettati per Windows PowerShell 2.0 possono essere presenti una o più sezioni DATA che isolano i dati dalla logica dello script. I dati nella nuova sezione DATA sono limitati a un sottoinsieme specificato del linguaggio di scripting di Windows PowerShell. In Windows PowerShell 2.0 la sezione DATA viene utilizzata per supportare l'internazionalizzazione degli script. È possibile utilizzare la sezione DATA per isolare e identificare le stringhe dei messaggi utente che verranno tradotte in più lingue dell'interfaccia utente. Per ulteriori informazioni, vedere about_Data_Sections. Internazionalizzazione degli script Le funzionalità di internazionalizzazione degli script di Windows PowerShell 2.0 consentono di offrire una migliore esperienza agli utenti in tutto il mondo. Con l'internazionalizz azione degli script è possibile utilizzare script e funzioni per visualizzare messaggi e testo della Guida agli utenti in più lingue. Le funzionalità di internazionalizzazione degli script eseguono una query sulle impostazioni cultura ($PsUICulture) dell'interfaccia utente del sistema operativo durante l'esecuzione, quindi importano le stringhe di testo appropriate tradotte per consentirne la visualizzazione da parte dell'utente. Nella sezione Data è possibile archiviare stringhe di testo separate dal codice per poterle identificare con facilità. Un nuovo cmdlet, ConvertFrom-StringData, converte le stringhe di testo in tabelle hash di tipo dizionario per facilitare la traduzione. Per ulteriori informazioni, vedere about_Script_Internationaliza tion. Cmdlet WMI La funzionalità Strumentazione gestione Windows (WMI) di Windows PowerShell 2.0 è stata migliorata con l'aggiunta dei cmdlet seguenti: - Remove-WmiObject - Set-WmiInstance - Invoke-WmiMethod Sono stati aggiunti nuovi parametri al cmdlet Get-WmiObject. Tutti i cmdlet WMI supportano ora i seguenti parametri: - EnableAllPrivileges - Impersonation - Authentication - Authority Questi nuovi parametri offrono un controllo più preciso sulla configurazione di sicurezza delle operazioni WMI senza richiedere l'utilizzo diretto dei tipi della libreria di classi .NET Framework. Per un elenco dei cmdlet WMI, digitare il comando seguente: get-help *wmi* Per ottenere la Guida per ogni cmdlet, digitare get-help seguito dal nome del cmdlet. Cmdlet Get-WinEvent Il cmdlet Get-WinEvent ottiene eventi dai registri del Visualizzatore eventi e dai file del registro eventi di Traccia eventi per Windows nei computer locali e remoti. Consente di ottenere eventi dai registri eventi classici e dai registri eventi di Windows introdotti in Windows Vista. È possibile utilizzare Get-WinEvent per ottenere gli oggetti che rappresentano registri eventi, provider del registro eventi ed eventi nei registri. Get-WinEvent consente di combinare eventi di origini diverse in un solo comando. Supporta query avanzate in formato XPath (XML Path Language), XML e tabella hash. Get-WinEvent richiede Windows Vista o Windows Server 2008 e Microsoft .NET Framework 3.5. Cmdlet Out-Gridview Il cmdlet Out-GridView visualizza i risultati di altri comandi in una tabella interattiva nella quale è possibile cercare, ordinare, raggruppare e filtrare i risultati. Ad esempio, è possibile inviare a Out-GridView i risultati di un comando Get-Process, Get-WmiObject, Get-WinEvent o Get-Eventlog, quindi utilizzare le funzionalità di tabella per esaminare i dati. help out-gridview -full Cmdlet Add-Type Il cmdlet Add-Type consente di aggiungere tipi .NET Framework a Windows PowerShell dal codice sorgente di un altro linguaggio .NET Framework. Con Add-Type viene compilato il codice sorgente che crea i tipi e genera gli assembly che contengono i nuovi tipi .NET Framework. È quindi possibile utilizzare i tipi .NET Framework nei comandi di Windows PowerShell insieme ai tipi di oggetti standard forniti da .NET Framework. È inoltre possibile utilizzare Add-Type per caricare assembly nella sessione in modo da poter utilizzare i tipi negli assembly in Windows PowerShell. Add-Type consente di sviluppare nuovi tipi .NET Framework, di utilizzare tipi .NET Framework nelle librerie C# e di accedere alle API Win32. Per ulteriori informazioni, vedere Add-Type. Notifica degli eventi Windows PowerShell 2.0 include la nuova funzionalità di notifica degli eventi. Gli utenti possono registrare e sottoscrivere eventi, ad esempio eventi di Windows PowerShell, WMI o .NET Framework. Possono inoltre ascoltare, inoltrare ed eseguire operazioni sugli eventi di gestione e di sistema sia in modo sincrono sia in modo asincrono. Gli sviluppatori possono scrivere applicazioni che utilizzano l'architettura degli eventi per ricevere notifiche sulle modifiche dello stato. Gli utenti possono scrivere script che sottoscrivono vari eventi e interagiscono in base al contenuto. In Windows PowerShell sono disponibili cmdlet per creare nuovi eventi, ottenere eventi e sottoscrizioni di eventi, registrare e annullare la registrazione di eventi, attendere ed eliminare eventi. Per ulteriori informazioni su questi cmdlet, digitare il comando seguente: get-command *-event Moduli I moduli di Windows PowerShell consentono di dividere e organizzare gli script di Windows PowerShell in unità indipendenti, autosufficienti e riutilizzabili. Il codice di un modulo viene eseguito nel proprio contesto, pertanto non aggiunge, non crea conflitti, né sovrascrive variabili, funzioni, alias e altre risorse della sessione. È possibile scrivere, distribuire, combinare, condividere e riutilizzare moduli per compilare script semplici e applicazioni complesse. Windows PowerShell 2.0 include cmdlet che consentono di aggiungere, ottenere e rimuovere moduli ed esportare membri di modulo. Per ulteriori informazioni sui cmdlet correlati ai moduli, digitare il comando seguente: get-command *-module* Transazioni In Windows PowerShell 2.0 è previsto il supporto per le transazioni. Le transazioni consentono di annullare un'intera serie di operazioni. Sono disponibili solo per operazioni che supportano le transazioni e sono progettate per applicazioni che richiedono atomicità, coerenza, isolamento e recuperabilità, ad esempio database e accodamento di messaggi. I cmdlet e i provider che supportano le transazioni dispongono di un nuovo parametro UseTransaction. Per avviare un'operazione all'interno di una transazione, utilizzare il cmdlet Start-Transaction. Quando si utilizzano i cmdlet che eseguono l'operazione, utilizzare il parametro UseTransaction di ogni cmdlet se si desidera che il comando faccia parte di una transazione. Se un comando della transazione ha esito negativo in un punto qualsiasi, utilizzare il cmdlet Rollback-Transaction per annullare tutti i comandi nella transazione. Se tutti i comandi hanno esito positivo, utilizzare il cmdlet Commit-Transaction per rendere permanenti le azioni dei comandi. Windows PowerShell 2.0 include cmdlet che consentono di avviare e utilizzare le transazioni ed eseguirne il commit e il rollback. Per informazioni su questi cmdlet, digitare il comando seguente: get-command *transaction* Modifiche importanti rispetto a Windows PowerShell 1.0 -- Il valore della voce del Registro di sistema PowerShellVersion in HKLM\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine è stato modificato nella versione 2.0. -- Sono stati aggiunti nuovi cmdlet e nuove variabili. Queste aggiunte potrebbero essere in conflitto con variabili e funzioni nei profili e negli script. -- L'operatore -IEQ esegue un confronto sui caratteri senza distinzione tra maiuscole e minuscole. -- Il cmdlet Get-Command ottiene funzioni per impostazione predefinita, oltre ai cmdlet. -- Non è possibile reindirizzare al cmdlet Out-Host i comandi nativi che generano un'interfaccia utente. -- Le nuove parole chiave del linguaggio Begin, Process, End e Dynamic Param potrebbero essere in conflitto con parole simili utilizzate in script e funzioni. L'interpretazione di queste parole come parole chiave del linguaggio potrebbe generare errori di analisi. -- La risoluzione dei nomi dei cmdlet è stata modificata. In Windows PowerShell 1.0 viene generato un errore di runtime quando due snap-in di Windows PowerShell esportano cmdlet con lo stesso nome. In Windows PowerShell 2.0 l'ultimo cmdlet aggiunto alla sessione viene eseguito quando si digita il nome del comando. Per eseguire un comando che non viene eseguito per impostazione predefinita, qualificare il nome del cmdlet con il nome dello snap-in o del modulo nel quale è stato originato. -- Un nome di funzione seguito da "-?" consente di ottenere l'argomento della Guida per la funzione, se disponibile. -- La risoluzione dei parametri per i metodi di Microsoft .NET Framework è stata modificata. Se in Windows PowerShell 1.0 viene chiamato un metodo .NET di overload con più di una sintassi ottimale, non viene segnalato alcun errore. In Windows PowerShell 2.0 viene segnalato un'errore di ambiguità. Inoltre, in Windows PowerShell 2.0 l'algoritmo per la scelta del metodo ottimale è stato notevolmente modificato per ridurre il numero di ambiguità. -- Se si enumera una raccolta nella pipeline e si tenta di modificare la raccolta nella pipeline, in Windows PowerShell viene generata un'eccezione. Ad esempio, i comandi seguenti funzionerebbero in Windows PowerShell 1.0 ma avrebbero esito negativo dopo la prima iterazione della pipeline in Windows PowerShell 2.0. $h = @{Name="Hello"; Value="Test"} $h.keys | foreach-object {$h.remove($_)} Per evitare questo errore, creare una sottoespressione per l'enumeratore utilizzando i caratteri $(). Ad esempio: $($h.keys) | foreach-object {$h.remove($_)} Per ulteriori informazioni su Windows PowerShell 2.0, visitare i siti Web seguenti: -- Sito Web di Windows PowerShell https://go.microsoft.com/fwlink/?LinkID=106031 -- Blog del team di Windows PowerShell: https://go.microsoft.com/fwlink/?LinkId=143696 VEDERE ANCHE about_Data_Sections about_Debuggers about_Functions_Advanced about_Jobs about_Join about_PSSessions about_Remote about_Script_Internationalization about_Split