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