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
    




Argomenti della Guida