about_Preference_Variables
Breve descrizione
Variabili che personalizzano il comportamento di PowerShell.
Descrizione lunga
PowerShell include un set di variabili che consentono di personalizzarne il comportamento. Queste variabili di preferenza funzionano come le opzioni nei sistemi basati su GUI.
Le variabili di preferenza influiscono sull'ambiente operativo di PowerShell e tutti i comandi eseguiti nell'ambiente. Alcuni cmdlet dispongono di parametri che consentono di eseguire l'override del comportamento di preferenza per un comando specifico.
Nella tabella seguente sono elencate le variabili di preferenza e i relativi valori predefiniti.
PowerShell include le variabili di ambiente seguenti che archiviano le preferenze utente. Per altre informazioni su queste variabili di ambiente, vedere about_Environment_Variables.
env:PSExecutionPolicyPreference
$env:PSModulePath
Nota
Le modifiche apportate alla variabile di preferenza hanno effetto solo negli script e nelle funzioni se tali script o funzioni vengono definiti nello stesso ambito dell'ambito in cui è stata usata la preferenza. Per altre informazioni, vedere about_Scopes.
Uso delle variabili di preferenza
Questo documento descrive ognuna delle variabili di preferenza.
Per visualizzare il valore corrente di una variabile di preferenza specifica, digitare il nome della variabile. Ad esempio, il comando seguente visualizza il $ConfirmPreference
valore della variabile.
$ConfirmPreference
High
Per modificare il valore di una variabile, usare un'istruzione di assegnazione. Ad esempio, l'istruzione seguente modifica il $ConfirmPreference
valore del parametro su Medium.
$ConfirmPreference = "Medium"
I valori impostati sono specifici della sessione di PowerShell corrente. Per rendere effettive le variabili in tutte le sessioni di PowerShell, aggiungerle al profilo di PowerShell. Per altre informazioni, vedere about_Profiles.
Lavorare da remoto
Quando si eseguono comandi in un computer remoto, i comandi remoti sono soggetti solo alle preferenze impostate nel client Di PowerShell del computer remoto. Ad esempio, quando si esegue un comando remoto, il valore della variabile del $DebugPreference
computer remoto determina come PowerShell risponde ai messaggi di debug.
Per altre informazioni sui comandi remoti, vedere about_Remote.
$ConfirmPreference
Determina se PowerShell richiede automaticamente la conferma prima di eseguire un cmdlet o una funzione.
La $ConfirmPreference
variabile accetta uno dei valori di ConfirmImpact
enumerazione: High, Medium, Low o None.
I cmdlet e le funzioni vengono assegnati a un rischio elevato, medio o basso.
Quando il valore della variabile è minore o uguale al rischio assegnato a un cmdlet o a una funzione, PowerShell richiede automaticamente la conferma prima di $ConfirmPreference
eseguire il cmdlet o la funzione.
Se il valore della $ConfirmPreference
variabile è Nessuno, PowerShell non richiede mai automaticamente di eseguire un cmdlet o una funzione.
Per modificare il comportamento di conferma per tutti i cmdlet e le funzioni della sessione, modificare $ConfirmPreference
il valore della variabile.
Per eseguire l'override di per un singolo comando, usare il $ConfirmPreference
parametro Confirm di un cmdlet o della funzione. Per richiedere la conferma, usare -Confirm
. Per eliminare la conferma, usare -Confirm:$false
.
Valori validi di $ConfirmPreference
:
- Nessuno: PowerShell non richiede automaticamente. Per richiedere la conferma di un comando specifico, usare il parametro Confirm del cmdlet o della funzione.
- Basso: PowerShell richiede la conferma prima di eseguire cmdlet o funzioni con un rischio basso, medio o elevato.
- Medio: PowerShell richiede la conferma prima di eseguire cmdlet o funzioni con un rischio medio o elevato.
- Alto: PowerShell richiede la conferma prima di eseguire cmdlet o funzioni con un rischio elevato.
Spiegazione dettagliata
PowerShell può richiedere automaticamente la conferma prima di eseguire un'azione. Ad esempio, quando il cmdlet o la funzione influisce in modo significativo sul sistema per eliminare i dati o usare una quantità significativa di risorse di sistema.
Remove-Item -Path C:\file.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\file.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is "Y"):
La stima del rischio è un attributo del cmdlet o della funzione nota come ConfirmImpact. Gli utenti non possono modificare questa impostazione.
I cmdlet e le funzioni che potrebbero rappresentare un rischio per il sistema hanno un parametro Confirm che è possibile usare per richiedere o eliminare la conferma per un singolo comando.
Poiché la maggior parte dei cmdlet e delle funzioni usa il valore di rischio predefinito, ConfirmImpact, medium e il valore predefinito di $ConfirmPreference
è High, raramente si verifica la conferma automatica. È tuttavia possibile attivare la conferma automatica modificando il valore di $ConfirmPreference
su Medio o Basso.
Esempio
Questo esempio mostra l'effetto del $ConfirmPreference
valore predefinito della variabile, High. Il valore High conferma solo i cmdlet e le funzioni ad alto rischio. Poiché la maggior parte dei cmdlet e delle funzioni è a rischio medio, non vengono confermate automaticamente ed Remove-Item
eliminate il file. L'aggiunta -Confirm
al comando richiede all'utente la conferma.
$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt
Usare -Confirm
per richiedere la conferma.
Remove-Item -Path C:\temp2.txt -Confirm
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All
[?] Help (default is "Y"):
Nell'esempio seguente viene illustrato l'effetto della modifica del valore di $ConfirmPreference
su Medium. Poiché la maggior parte dei cmdlet e delle funzioni è rischio medio, vengono confermati automaticamente. Per eliminare il prompt di conferma per un singolo comando, usare il parametro Confirm con un valore di $false
.
$ConfirmPreference = "Medium"
Remove-Item -Path C:\temp2.txt
Confirm
Are you sure you want to perform this action?
Performing operation "Remove File" on Target "C:\temp2.txt".
[Y] Yes [A] Yes to All [N] No [L] No to All
[?] Help (default is "Y"):
Remove-Item -Path C:\temp3.txt -Confirm:$false
$DebugPreference
Determina il modo in cui PowerShell risponde al debug dei messaggi generati da uno script, da un cmdlet o da un provider o da un Write-Debug
comando nella riga di comando.
La $DebugPreference
variabile accetta uno dei valori di ActionPreference
enumerazione: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
Alcuni cmdlet visualizzano i messaggi di debug, che in genere sono messaggi tecnici progettati per i programmatori e i professionisti del supporto tecnico. Per impostazione predefinita, i messaggi di debug non vengono visualizzati, ma è possibile visualizzare i messaggi di debug modificando il valore di $DebugPreference
.
È possibile usare il parametro comune Debug di un cmdlet per visualizzare o nascondere i messaggi di debug per un comando specifico. Per altre informazioni, vedi about_CommonParameters.
I valori validi sono i seguenti:
- Interruzione : immettere il debugger quando si verifica un errore o quando viene generata un'eccezione.
- Stop: visualizza il messaggio di debug e arresta l'esecuzione. Scrive un errore nella console.
- Richiesta: visualizza il messaggio di debug e chiede se continuare.
- Continua: visualizza il messaggio di debug e continua con l'esecuzione.
- SilentlyContinue: (Impostazione predefinita) Nessun effetto. Il messaggio di debug non viene visualizzato e l'esecuzione continua senza interruzioni.
L'aggiunta del parametro comune Debug a un comando, quando il comando è configurato per generare un messaggio di debug, modifica il valore della $DebugPreference
variabile in Continua.
Esempio
Negli esempi seguenti viene illustrato l'effetto della modifica dei valori di quando viene immesso un Write-Debug
comando nella riga di $DebugPreference
comando.
La modifica influisce su tutti i messaggi di debug, inclusi i messaggi generati dai cmdlet e dagli script. Gli esempi mostrano il parametro Debug , che visualizza o nasconde i messaggi di debug correlati a un singolo comando.
Questo esempio mostra l'effetto del valore predefinito della $DebugPreference
variabile, SilentlyContinue. Per impostazione predefinita, il Write-Debug
messaggio di debug del cmdlet non viene visualizzato ed elaborato continua. Quando si usa il parametro Debug , esegue l'override della preferenza per un singolo comando. Viene visualizzato il messaggio di debug.
$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World
Questo esempio mostra l'effetto di $DebugPreference
con il valore Continue . Viene visualizzato il messaggio di debug e il comando continua a essere elaborato.
$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
In questo esempio viene utilizzato il parametro Debug con un valore di $false
per eliminare il messaggio per un singolo comando. Il messaggio di debug non viene visualizzato.
Write-Debug -Message "Hello, World" -Debug:$false
In questo esempio viene illustrato l'effetto dell'impostazione $DebugPreference
sul valore Stop . Viene visualizzato il messaggio di debug e il comando viene arrestato.
$DebugPreference = "Stop"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Write-Debug : The running command stopped because the preference variable
"DebugPreference" or common parameter is set to Stop: Hello, World
At line:1 char:1
+ Write-Debug -Message "Hello, World"
In questo esempio viene utilizzato il parametro Debug con un valore di $false
per eliminare il messaggio per un singolo comando. Il messaggio di debug non viene visualizzato e l'elaborazione non viene arrestata.
Write-Debug -Message "Hello, World" -Debug:$false
In questo esempio viene illustrato l'effetto dell'impostazione $DebugPreference
sul valore Di richiesta . Viene visualizzato il messaggio di debug e all'utente viene richiesta la conferma.
$DebugPreference = "Inquire"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
In questo esempio viene utilizzato il parametro Debug con un valore di $false
per eliminare il messaggio per un singolo comando. Il messaggio di debug non viene visualizzato e l'elaborazione continua.
Write-Debug -Message "Hello, World" -Debug:$false
$ErrorActionPreference
Determina la risposta di PowerShell a un errore non irreversibile, un errore che non interrompe l'elaborazione del cmdlet. Ad esempio, nella riga di comando o in uno script, un cmdlet o un provider, ad esempio gli errori generati dal Write-Error
cmdlet .
La $ErrorActionPreference
variabile accetta uno dei ActionPreference
valori di enumerazione: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
È possibile usare il parametro comune ErrorAction di un cmdlet per ignorare la preferenza per un comando specifico.
I valori validi sono i seguenti:
- Interruzione : immettere il debugger quando si verifica un errore o quando viene generata un'eccezione.
- Continua: (Impostazione predefinita) Visualizza il messaggio di errore e continua l'esecuzione.
- Ignora: elimina il messaggio di errore e continua a eseguire il comando. Il valore Ignore è destinato all'uso per comando, non per l'uso come preferenza salvata. Ignora non è un valore valido per la
$ErrorActionPreference
variabile. - Richiesta: visualizza il messaggio di errore e chiede se si desidera continuare.
- SilentlyContinue: nessun effetto. Il messaggio di errore non viene visualizzato e l'esecuzione continua senza interruzioni.
- Arresta: visualizza il messaggio di errore e arresta l'esecuzione. Oltre all'errore generato, il valore Stop genera un oggetto ActionPreferenceStopException nel flusso di errore.
- Sospensione: sospende automaticamente un processo del flusso di lavoro per consentire ulteriori indagini. Dopo l'analisi, il flusso di lavoro può essere ripreso. Il valore Suspend è destinato all'uso per comando, non per l'uso come preferenza salvata. Suspend non è un valore valido per la
$ErrorActionPreference
variabile.
$ErrorActionPreference
e il parametro ErrorAction non influiscono sul modo in cui PowerShell risponde agli errori irreversibili che interrompono l'elaborazione dei cmdlet. Per altre informazioni sul parametro comune ErrorAction , vedere about_CommonParameters.
Molti comandi nativi scrivono in stderr
come un flusso alternativo per informazioni aggiuntive. Questo comportamento può causare confusione quando si esaminano gli errori o le informazioni di output aggiuntive possono andare perse per l'utente se $ErrorActionPreference
è impostato su uno stato che disattiva l'output.
A partire da PowerShell 7.2, i record di errore reindirizzati dai comandi nativi, ad esempio quando si usano gli operatori di reindirizzamento (2>&1
), non vengono scritti nella $Error
variabile e la variabile di preferenza non influisce $ErrorActionPreference
sull'output reindirizzato.
PowerShell 7.3 ha aggiunto una funzionalità sperimentale che consente di controllare la modalità di gestione dei messaggi scritti in stderr
.
Per altre informazioni, vedere $PSNativeCommandUseErrorActionPreference.
Esempio
Questi esempi mostrano l'effetto dei diversi valori della $ErrorActionPreference
variabile. Il parametro ErrorAction viene usato per eseguire l'override del $ErrorActionPreference
valore.
Questo esempio mostra il $ErrorActionPreference
valore predefinito Continue. Viene generato un errore non irreversibile. Il messaggio viene visualizzato e l'elaborazione continua.
# Change the ErrorActionPreference to 'Continue'
$ErrorActionPreference = 'Continue'
# Generate a non-terminating error and continue processing the script.
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Write-Error: Test Error
Hello World
Questo esempio mostra il $ErrorActionPreference
valore predefinito , Inquire. Viene generato un errore e viene visualizzata una richiesta di azione.
# Change the ErrorActionPreference to 'Inquire'
$ErrorActionPreference = 'Inquire'
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
Confirm
Test Error
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
In questo esempio viene illustrato il $ErrorActionPreference
valore impostato su SilentlyContinue.
Il messaggio di errore viene eliminato.
# Change the ErrorActionPreference to 'SilentlyContinue'
$ErrorActionPreference = 'SilentlyContinue'
# Generate an error message
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Error message is suppressed and script continues processing
Hello World
In questo esempio viene illustrato il $ErrorActionPreference
valore impostato su Stop. Mostra anche l'oggetto aggiuntivo generato nella $Error
variabile .
# Change the ErrorActionPreference to 'Stop'
$ErrorActionPreference = 'Stop'
# Error message is generated and script stops processing
Write-Error -Message 'Test Error' ; Write-Host 'Hello World'
# Show the ActionPreferenceStopException and the error generated
$Error[0]
$Error[1]
Write-Error: Test Error
ErrorRecord : Test Error
WasThrownFromThrowStatement : False
TargetSite : System.Collections.ObjectModel.Collection`1[System.Management.Automation.PSObject]
Invoke(System.Collections.IEnumerable)
StackTrace : at System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable input)
at Microsoft.PowerShell.Executor.ExecuteCommandHelper(Pipeline tempPipeline,
Exception& exceptionThrown, ExecutionOptions options)
Message : The running command stopped because the preference variable "ErrorActionPreference" or
common parameter is set to Stop: Test Error
Data : {System.Management.Automation.Interpreter.InterpretedFrameInfo}
InnerException :
HelpLink :
Source : System.Management.Automation
HResult : -2146233087
Write-Error: Test Error
$ErrorView
Determina il formato di visualizzazione dei messaggi di errore in PowerShell.
La $ErrorView
variabile accetta uno dei ErrorView
valori di enumerazione: NormalView, CategoryView o ConciseView.
I valori validi sono i seguenti:
ConciseView: (impostazione predefinita) Fornisce un messaggio di errore conciso e una visualizzazione con refactoring per i generatori di moduli avanzati. A partire da PowerShell 7.2, se l'errore proviene dalla riga di comando o da un modulo script, l'output è un messaggio di errore a riga singola. In caso contrario, viene visualizzato un messaggio di errore su più righe contenente l'errore e un puntatore all'errore che mostra dove si verifica in tale riga. Se il terminale supporta il terminale virtuale, i codici colore ANSI vengono usati per fornire l'accento colore. Il colore principale può essere modificato in
$Host.PrivateData.ErrorAccentColor
. UsareGet-Error
il cmdlet per una visualizzazione dettagliata completa dell'errore completo, incluse le eccezioni interne.ConciseView è stato aggiunto in PowerShell 7.
NormalView: visualizzazione dettagliata progettata per la maggior parte degli utenti. È costituito da una descrizione dell'errore e dal nome dell'oggetto coinvolto nell'errore.
CategoryView: visualizzazione strutturata e concisa progettata per gli ambienti di produzione. Il formato è il seguente:
{Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
Per altre informazioni sui campi in CategoryView, vedere Classe ErrorCategoryInfo .
Esempio
Questo esempio mostra come viene visualizzato un errore quando il valore di $ErrorView
è il valore predefinito , ConciseView. Get-ChildItem
viene usato per trovare una directory inesistente.
Get-ChildItem -path 'C:\NoRealDirectory'
Get-ChildItem: Cannot find path 'C:\NoRealDirectory' because it does not exist.
Questo esempio mostra come viene visualizzato un errore quando il valore di $ErrorView
è il valore predefinito , ConciseView. Script.ps1
viene eseguito e genera un errore dall'istruzione Get-Item
.
./Script.ps1
Get-Item: C:\Script.ps1
Line |
11 | Get-Item -Path .\stuff
| ^ Cannot find path 'C:\demo\stuff' because it does not exist.
Questo esempio mostra come viene visualizzato un errore quando il valore di $ErrorView
viene modificato in NormalView. Get-ChildItem
viene usato per trovare un file inesistente.
Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt
Questo esempio mostra come viene visualizzato lo stesso errore quando il valore di $ErrorView
viene modificato in CategoryView.
$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException
In questo esempio viene illustrato che il valore di $ErrorView
influisce solo sulla visualizzazione degli errori. Non modifica la struttura dell'oggetto errore archiviato nella $Error
variabile automatica. Per informazioni sulla $Error
variabile automatica, vedere about_automatic_variables.
Il comando seguente accetta l'oggetto ErrorRecord associato all'errore più recente nella matrice di errori, l'elemento 0 e formatta le proprietà dell'oggetto in un elenco.
$Error[0] | Format-List -Property * -Force
PSMessageDetails :
Exception : System.Management.Automation.ItemNotFoundException:
Cannot find path 'C:\nofile.txt' because it does
not exist.
at System.Management.Automation.SessionStateInternal.
GetChildItems(String path, Boolean recurse, UInt32
depth, CmdletProviderContext context)
at System.Management.Automation.ChildItemCmdlet
ProviderIntrinsics.Get(String path, Boolean
recurse, UInt32 depth, CmdletProviderContext context)
at Microsoft.PowerShell.Commands.GetChildItemCommand.
ProcessRecord()
TargetObject : C:\nofile.txt
CategoryInfo : ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem],
ItemNotFoundException
FullyQualifiedErrorId : PathNotFound,
Microsoft.PowerShell.Commands.GetChildItemCommand
ErrorDetails :
InvocationInfo : System.Management.Automation.InvocationInfo
ScriptStackTrace : at <ScriptBlock>, <No file>: line 1
PipelineIterationInfo : {0, 1}
$FormatEnumerationLimit
Determina il numero di elementi enumerati inclusi in una visualizzazione. Questa variabile non influisce sugli oggetti sottostanti, ma solo sulla visualizzazione. Quando il valore di è inferiore al numero di elementi enumerati, PowerShell aggiunge i puntini di $FormatEnumerationLimit
sospensione (...
) per indicare gli elementi non visualizzati.
Valori validi: Numeri interi (Int32
)
Valore predefinito: 4
Esempio
In questo esempio viene illustrato come usare la $FormatEnumerationLimit
variabile per migliorare la visualizzazione degli elementi enumerati.
Il comando in questo esempio genera una tabella che elenca tutti i servizi in esecuzione nel computer in due gruppi: uno per i servizi in esecuzione e uno per i servizi arrestati . Usa un Get-Service
comando per ottenere tutti i servizi e quindi invia i risultati tramite la pipeline al Group-Object
cmdlet , che raggruppa i risultati in base allo stato del servizio.
Il risultato è una tabella che elenca lo stato nella colonna Nome e i processi nella colonna Gruppo . Per modificare le etichette di colonna, usare una tabella hash, vedere about_Hash_Tables. Per altre informazioni, vedere gli esempi in Format-Table.
Trovare il valore corrente di $FormatEnumerationLimit
.
$FormatEnumerationLimit
4
Elencare tutti i servizi raggruppati in base allo stato. Nella colonna Gruppo sono elencati al massimo quattro servizi per ogni stato perché $FormatEnumerationLimit
ha un valore pari a 4.
Get-Service | Group-Object -Property Status
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart...}
Per aumentare il numero di elementi elencati, aumentare il valore di $FormatEnumerationLimit
a 1000. Usare Get-Service
e Group-Object
per visualizzare i servizi.
$FormatEnumerationLimit = 1000
Get-Service | Group-Object -Property Status
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec...
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc...
Usare Format-Table
con il parametro Wrap per visualizzare l'elenco dei servizi.
Get-Service | Group-Object -Property Status | Format-Table -Wrap
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec,
Client for NFS, CryptSvc, DcomLaunch, Dhcp, dmserver,
Dnscache, ERSvc, Eventlog, EventSystem, FwcAgent, helpsvc,
HidServ, IISADMIN, InoRPC, InoRT, InoTask, lanmanserver,
lanmanworkstation, LmHosts, MDM, Netlogon, Netman, Nla,
NtLmSsp, PlugPlay, PolicyAgent, ProtectedStorage, RasMan,
RemoteRegistry, RpcSs, SamSs, Schedule, seclogon, SENS,
SharedAccess, ShellHWDetection, SMT PSVC, Spooler,
srservice, SSDPSRV, stisvc, TapiSrv, TermService, Themes,
TrkWks, UMWdf, W32Time, W3SVC, WebClient, winmgmt, wscsvc,
wuauserv, WZCSVC, zzInterix}
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc,
ClipSrv, clr_optimization_v2.0.50727_32, COMSysApp,
CronService, dmadmin, FastUserSwitchingCompatibility,
HTTPFilter, ImapiService, Mapsvc, Messenger, mnmsrvc,
MSDTC, MSIServer, msvsmon80, NetDDE, NetDDEdsdm, NtmsSvc,
NVSvc, ose, RasAuto, RDSessMgr, RemoteAccess, RpcLocator,
SCardSvr, SwPrv, SysmonLog, TlntSvr, upnphost, UPS, VSS,
WmdmPmSN, Wmi, WmiApSrv, xmlprov}
$InformationPreference
La $InformationPreference
variabile consente di impostare le preferenze del flusso di informazioni che si desidera visualizzare agli utenti. In particolare, i messaggi informativi aggiunti ai comandi o agli script aggiungendo il cmdlet Write-Information . Se viene utilizzato il parametro InformationAction , il relativo valore esegue l'override del valore della $InformationPreference
variabile.
Write-Information
è stato introdotto in PowerShell 5.0.
La $InformationPreference
variabile accetta uno dei ActionPreference
valori di enumerazione: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
I valori validi sono i seguenti:
- Interruzione : immettere il debugger quando si scrive nel flusso di informazioni.
- Stop: arresta un comando o uno script in corrispondenza di un'occorrenza del
Write-Information
comando. - Richiesta: visualizza il messaggio informativo specificato in un
Write-Information
comando, quindi chiede se si desidera continuare. - Continua: visualizza il messaggio informativo e continua l'esecuzione.
- SilentlyContinue: (Impostazione predefinita) Nessun effetto. I messaggi informativi non vengono visualizzati e lo script continua senza interruzioni.
$Log*Evento
Le variabili preferenza Log*Event determinano i tipi di eventi scritti nel registro eventi di PowerShell in Visualizzatore eventi. Per impostazione predefinita, vengono registrati solo gli eventi del motore e del provider. È tuttavia possibile usare le variabili di preferenza Log*Event per personalizzare il log, ad esempio la registrazione degli eventi relativi ai comandi.
Le variabili di preferenza Log*Event sono le seguenti:
$LogCommandHealthEvent
: registra errori ed eccezioni nell'inizializzazione e nell'elaborazione dei comandi. Il valore predefinito è$false
(non registrato).$LogCommandLifecycleEvent
: registra l'avvio e l'arresto dei comandi e delle pipeline di comando e delle eccezioni di sicurezza nell'individuazione dei comandi. Il valore predefinito è$false
(non registrato).$LogEngineHealthEvent
: registra gli errori e gli errori delle sessioni. Il valore predefinito è$true
(registrato).$LogEngineLifecycleEvent
: registra l'apertura e la chiusura delle sessioni. Il valore predefinito è$true
(registrato).$LogProviderHealthEvent
: registra errori del provider, ad esempio errori di lettura e scrittura, errori di ricerca ed errori di chiamata. Il valore predefinito è$true
(registrato).$LogProviderLifecycleEvent
: registra l'aggiunta e la rimozione dei provider di PowerShell. Il valore predefinito è$true
(registrato). Per informazioni sui provider di PowerShell, vedere about_Providers.
Per abilitare un evento Log*, digitare la variabile con un valore , $true
ad esempio:
$LogCommandLifeCycleEvent = $true
Per disabilitare un tipo di evento, digitare la variabile con un valore $false
, ad esempio:
$LogCommandLifeCycleEvent = $false
Gli eventi abilitati sono validi solo per la console di PowerShell corrente. Per applicare la configurazione a tutte le console, salvare le impostazioni delle variabili nel profilo di PowerShell. Per altre informazioni, vedere about_Profiles.
$MaximumHistoryCount
Determina il numero di comandi salvati nella cronologia dei comandi per la sessione corrente.
Valori validi: 1 - 32768 (Int32
)
Impostazione predefinita: 4096
Per determinare il numero di comandi correnti salvati nella cronologia dei comandi, digitare:
(Get-History).Count
Per visualizzare i comandi salvati nella cronologia delle sessioni, usare il Get-History
cmdlet . Per altre informazioni, vedere about_History.
$OFS
Il separatore dei campi di output (OFS) specifica il carattere che separa gli elementi di una matrice che viene convertita in una stringa.
Valori validi: qualsiasi stringa.
Impostazione predefinita: spazio
Per impostazione predefinita, la $OFS
variabile non esiste e il separatore del file di output è uno spazio, ma è possibile aggiungere questa variabile e impostarla su qualsiasi stringa. È possibile modificare il valore di $OFS
nella sessione digitando $OFS="<value>"
.
Nota
Se si prevede il valore predefinito di uno spazio (" "
) nello script, nel modulo o nell'output di configurazione, prestare attenzione che il $OFS
valore predefinito non sia stato modificato altrove nel codice.
Esempio
Questo esempio mostra che uno spazio viene usato per separare i valori quando una matrice viene convertita in una stringa. In questo caso, una matrice di numeri interi viene archiviata in una variabile e quindi viene eseguito il cast della variabile come stringa.
$array = 1,2,3,4
[string]$array
1 2 3 4
Per modificare il separatore, aggiungere la $OFS
variabile assegnando un valore.
La variabile deve essere denominata $OFS
.
$OFS = "+"
[string]$array
1+2+3+4
Per ripristinare il comportamento predefinito, è possibile assegnare uno spazio (" "
) al valore di $OFS
o eliminare la variabile. I comandi seguenti eliminano la variabile e quindi verificano che il separatore sia uno spazio.
Remove-Variable OFS
[string]$array
1 2 3 4
$OutputEncoding
Determina il metodo di codifica dei caratteri usato da PowerShell per l'inserimento di dati in applicazioni native.
Nota
Nella maggior parte degli scenari, il valore di $OutputEncoding
deve essere allineato al valore di [Console]::InputEncoding
.
I valori validi sono i seguenti: Oggetti derivati da una classe Encoding, ad esempio ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encoding e UnicodeEncoding.
Impostazione predefinita: oggetto UTF8Encoding .
Esempio
Il primo comando trova il valore di $OutputEncoding
. Poiché il valore è un oggetto di codifica, visualizzare solo la relativa proprietà EncodingName .
$OutputEncoding.EncodingName
Gli esempi rimanenti usano lo script di PowerShell seguente salvato come hexdump.ps1
per illustrare il comportamento di $OutputEncoding
.
$inputStream = [Console]::OpenStandardInput()
try {
$buffer = [byte[]]::new(1024)
$read = $inputStream.Read($buffer, 0, $buffer.Length)
Format-Hex -InputObject $buffer -Count $read
} finally {
$inputStream.Dispose()
}
Nell'esempio seguente viene illustrato come il valore café
stringa viene codificato in byte quando viene inviato tramite pipe in creato in hexdump.ps1
precedenza. Dimostra che il valore stringa viene codificato usando lo schema UTF8Encoding .
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <28873E25>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 63 61 66 C3 A9 0D 0A caf�
Nell'esempio seguente viene illustrato come cambiano i byte quando si modifica la codifica in UnicodeEncoding.
$OutputEncoding = [System.Text.Encoding]::Unicode
'café' | pwsh -File ./hexdump.ps1
Label: Byte[] (System.Byte[]) <515A7DC3>
Offset Bytes Ascii
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
------ ----------------------------------------------- -----
0000000000000000 FF FE 63 00 61 00 66 00 E9 00 0D 00 0A 00 ÿþc a f é � �
$ProgressPreference
Determina il modo in cui PowerShell risponde agli aggiornamenti dello stato generati da uno script, da un cmdlet o da un provider, ad esempio le barre di stato generate dal cmdlet Write-Progress . Il Write-Progress
cmdlet crea barre di stato che mostrano lo stato di un comando.
La $ProgressPreference
variabile accetta uno dei ActionPreference
valori di enumerazione: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
I valori validi sono i seguenti:
- Interruzione : immettere il debugger quando si scrive nel flusso Di stato.
- Arresta: non visualizza l'indicatore di stato. Visualizza invece un messaggio di errore e arresta l'esecuzione.
- Richiesta: non visualizza l'indicatore di stato. Richiede l'autorizzazione per continuare. Se si risponde con
Y
oA
, viene visualizzato l'indicatore di stato. - Continua: (impostazione predefinita) Visualizza l'indicatore di stato e continua con l'esecuzione.
- SilentlyContinue: esegue il comando , ma non visualizza la barra di stato.
$PSDefaultParameterValues
Specifica i valori predefiniti per i parametri dei cmdlet e delle funzioni avanzate.
Il valore di $PSDefaultParameterValues
è una tabella hash in cui la chiave è costituita dal nome del cmdlet e dal nome del parametro separati da due punti (:
). Il valore è un valore predefinito personalizzato specificato.
$PSDefaultParameterValues
è stato introdotto in PowerShell 3.0.
Per altre informazioni su questa variabile di preferenza, vedere about_Parameters_Default_Values.
$PSEmailServer
Specifica il server di posta elettronica predefinito utilizzato per inviare messaggi di posta elettronica. Questa variabile di preferenza viene usata dai cmdlet che inviano messaggi di posta elettronica, ad esempio il cmdlet Send-MailMessage .
$PSModuleAutoloadingPreference
Abilita e disabilita l'importazione automatica dei moduli nella sessione. La $PSModuleAutoloadingPreference
variabile non esiste per impostazione predefinita. Il comportamento predefinito quando la variabile non è definita è uguale a $PSModuleAutoloadingPreference = 'All'
.
Per importare automaticamente un modulo, ottenere o usare un comando contenuto nel modulo.
La $PSModuleAutoloadingPreference
variabile accetta uno dei valori di PSModuleAutoLoadingPreference
enumerazione:
All
: i moduli vengono importati automaticamente al primo utilizzo.ModuleQualified
: i moduli vengono importati automaticamente solo quando un utente usa il nome completo del modulo di un comando nel modulo. Ad esempio, se l'utente digitaMyModule\MyCommand
, PowerShell importa il modulo MyModule .None
: disabilita l'importazione automatica dei moduli. Per importare un modulo, usare ilImport-Module
cmdlet .
Per altre informazioni sull'importazione automatica dei moduli, vedere about_Modules.
$PSNativeCommandArgumentPassing
PowerShell 7.3 ha modificato il modo in cui analizza la riga di comando per i comandi nativi.
La nuova $PSNativeCommandArgumentPassing
variabile di preferenza controlla questo comportamento.
Attenzione
Il nuovo comportamento è una modifica che causa un'interruzione rispetto al comportamento precedente. Ciò può causare l'interruzione di script e l'automazione che consentono di risolvere i vari problemi durante la chiamata di applicazioni native.
La variabile $PSNativeCommandArgumentPassing
automatica consente di selezionare il comportamento in fase di esecuzione. I valori validi sono Legacy
, Standard
e Windows
. Legacy
è il comportamento storico.
La $PSNativeCommandArgumentPassing
variabile è definita per impostazione predefinita, ma il valore è specifico della piattaforma.
- In Windows la preferenza è impostata su
Windows
. - Nelle piattaforme non Windows la preferenza è impostata su
Standard
. - Se la
$PSNativeCommandArgumentPassing
variabile è stata rimossa, PowerShell usa ilStandard
comportamento.
Il comportamento di Windows
e Standard
la modalità sono uguali, ad eccezione del fatto che, in Windows
modalità, PowerShell usa il Legacy
comportamento di passaggio degli argomenti quando si eseguono i file seguenti.
cmd.exe
cscript.exe
find.exe
sqlcmd.exe
wscript.exe
- File che terminano con:
.bat
.cmd
.js
.vbs
.wsf
$PSNativeCommandArgumentPassing
Se è impostato su Legacy
o Standard
, il parser non verifica la presenza di questi file. Per esempi del nuovo comportamento, vedere about_Parsing.
PowerShell 7.3 ha anche aggiunto la possibilità di tracciare l'associazione di parametri per i comandi nativi. Per altre informazioni, vedere Trace-Command.
$PSNativeCommandUseErrorActionPreference
Questa variabile di preferenza è disponibile in PowerShell 7.3 e versioni successive con la PSNativeCommandErrorActionPreference
funzionalità abilitata.
Con questa funzionalità abilitata, i comandi nativi con codici di uscita diversi da zero generano errori in base a $ErrorActionPreference
quando $PSNativeCommandUseErrorActionPreference
è $true
.
Nota
PSNativeCommandUseErrorActionPreference
è una funzionalità sperimentale aggiunta in PowerShell 7.3. Per altre informazioni, vedere Uso di funzionalità sperimentali.
Alcuni comandi nativi, ad esempio robocopy , usano codici di uscita diversi da zero per rappresentare informazioni diverse da errori. In questi casi, è possibile disabilitare temporaneamente il comportamento e impedire l'emissione di errori da parte di codici di uscita diversi da zero.
& {
# Disable $PSNativeCommandUseErrorActionPreference for this scriptblock
$PSNativeCommandUseErrorActionPreference = $false
robocopy.exe D:\reports\operational "\\reporting\ops" CY2022Q4.md
if ($LASTEXITCODE -gt 8) {
throw "robocopy failed with exit code $LASTEXITCODE"
}
}
In questo esempio la $PSNativeCommandUseErrorActionPreference
variabile viene modificata all'interno di uno scriptblock. La modifica è locale per scriptblock. Quando lo scriptblock viene chiuso, la variabile ripristina il valore precedente.
$PSSessionApplicationName
Specifica il nome dell'applicazione predefinito per un comando remoto che usa la tecnologia Web Services for Management (WS-Management). Per altre informazioni, vedere Informazioni sulla gestione remota di Windows.
Il nome predefinito dell'applicazione di sistema è WSMAN
, ma è possibile usare questa variabile di preferenza per modificare l'impostazione predefinita.
Il nome dell'applicazione è l'ultimo nodo in un URI di connessione. Ad esempio, il nome dell'applicazione nell'URI di esempio seguente è WSMAN
.
http://Server01:8080/WSMAN
Il nome dell'applicazione predefinito viene usato quando il comando remoto non specifica un URI di connessione o un nome dell'applicazione.
Il servizio Gestione remota Windows usa il nome dell'applicazione per selezionare un listener per gestire la richiesta di connessione. Il valore del parametro deve corrispondere al valore della proprietà URLPrefix di un listener nel computer remoto.
Per eseguire l'override del valore predefinito del sistema e del valore di questa variabile e selezionare un nome di applicazione diverso per una determinata sessione, usare i parametri ConnectionURI o ApplicationName dei cmdlet New-PSSession, Enter-PSSession o Invoke-Command .
La $PSSessionApplicationName
variabile preferenza è impostata nel computer locale, ma specifica un listener nel computer remoto. Se il nome dell'applicazione specificato non esiste nel computer remoto, il comando per stabilire la sessione ha esito negativo.
$PSSessionConfigurationName
Specifica la configurazione di sessione predefinita utilizzata per creare nuove sessioni nella sessione corrente.
Questa variabile di preferenza è impostata nel computer locale, ma specifica una configurazione di sessione che si trova nel computer remoto.
Il valore della $PSSessionConfigurationName
variabile è un URI di risorsa completo.
Il valore http://schemas.microsoft.com/PowerShell/microsoft.PowerShell
predefinito indica la configurazione della sessione Microsoft.PowerShell nel computer remoto.
Se si specifica solo un nome di configurazione, viene anteporto l'URI dello schema seguente:
http://schemas.microsoft.com/PowerShell/
È possibile eseguire l'override dell'impostazione predefinita e selezionare una configurazione di sessione diversa per una determinata sessione usando il parametro ConfigurationName dei New-PSSession
cmdlet , Enter-PSSession
o Invoke-Command
.
È possibile modificare il valore di questa variabile in qualsiasi momento. In questo caso, tenere presente che la configurazione della sessione selezionata deve esistere nel computer remoto. In caso contrario, il comando per creare una sessione che usa la configurazione della sessione ha esito negativo.
Questa variabile di preferenza non determina le configurazioni di sessione locali usate quando gli utenti remoti creano una sessione che si connette al computer. Tuttavia, è possibile usare le autorizzazioni per le configurazioni della sessione locale per determinare quali utenti possono usarle.
$PSSessionOption
Stabilisce i valori predefiniti per le opzioni utente avanzate in una sessione remota. Queste preferenze di opzione sostituiscono i valori predefiniti del sistema per le opzioni di sessione.
La $PSSessionOption
variabile contiene un oggetto PSSessionOption . Per altre informazioni, vedere System.Management.Automation.Remoting.PSSessionOption.
Ogni proprietà dell'oggetto rappresenta un'opzione di sessione. Ad esempio, la proprietà NoCompression trasforma la compressione dei dati durante la sessione.
Per impostazione predefinita, la $PSSessionOption
variabile contiene un oggetto PSSessionOption con i valori predefiniti per tutte le opzioni, come illustrato di seguito.
MaximumConnectionRedirectionCount : 5
NoCompression : False
NoMachineProfile : False
ProxyAccessType : None
ProxyAuthentication : Negotiate
ProxyCredential :
SkipCACheck : False
SkipCNCheck : False
SkipRevocationCheck : False
OperationTimeout : 00:03:00
NoEncryption : False
UseUTF16 : False
IncludePortInSPN : False
OutputBufferingMode : None
Culture :
UICulture :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize : 209715200
ApplicationArguments :
OpenTimeout : 00:03:00
CancelTimeout : 00:01:00
IdleTimeout : -00:00:00.0010000
Per le descrizioni di queste opzioni e altre informazioni, vedere New-PSSessionOption. Per altre informazioni su comandi e sessioni remoti, vedere about_Remote e about_PSSessions.
Per modificare il valore della $PSSessionOption
variabile di preferenza, usare il New-PSSessionOption
cmdlet per creare un oggetto PSSessionOption con i valori di opzione che si preferisce. Salvare l'output in una variabile denominata $PSSessionOption
.
$PSSessionOption = New-PSSessionOption -NoCompression
Per usare la $PSSessionOption
variabile preferenza in ogni sessione di PowerShell, aggiungere un New-PSSessionOption
comando che crea la $PSSessionOption
variabile al profilo di PowerShell. Per altre informazioni, vedere about_Profiles.
È possibile impostare opzioni personalizzate per una sessione remota specifica. Le opzioni impostate hanno la precedenza sulle impostazioni predefinite di sistema e sul valore della $PSSessionOption
variabile di preferenza.
Per impostare le opzioni di sessione personalizzate, usare il New-PSSessionOption
cmdlet per creare un oggetto PSSessionOption . Usare quindi l'oggetto PSSessionOption come valore del parametro SessionOption nei cmdlet che creano una sessione, ad esempio New-PSSession
, Enter-PSSession
e Invoke-Command
.
$PSStyle
A partire da PowerShell 7.2 è ora possibile accedere alla $PSStyle
variabile automatica per visualizzare e modificare il rendering dell'output della stringa ANSI. $PSStyle
è un'istanza della classe PSStyle . I membri di questa classe definiscono stringhe contenenti sequenze di escape ANSI che controllano il rendering del testo nel terminale.
I membri di base restituiscono stringhe di sequenze di escape ANSI mappate ai relativi nomi. I valori sono impostabili per consentire la personalizzazione. I nomi delle proprietà semplificano la creazione di stringhe decorate usando il completamento tramite tabulazione. Ad esempio:
"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"
I membri Background e Foreground hanno anche un metodo per specificare il FromRgb()
colore a 24 bit.
Per altre informazioni su $PSStyle
, vedere about_ANSI_Terminals.
$Transcript
Utilizzato da Start-Transcript
per specificare il nome e il percorso del file di trascrizione. Se non si specifica un valore per il parametro Path , Start-Transcript
usa il percorso nel valore della $Transcript
variabile globale. Se questa variabile non è stata creata, Start-Transcript
archivia le trascrizioni nel percorso seguente usando il nome predefinito:
- In Windows:
$HOME\Documents
- In Linux o macOS:
$HOME
Il nome file predefinito è: PowerShell_transcript.<computername>.<random>.<timestamp>.txt
.
$VerbosePreference
Determina la modalità di risposta di PowerShell ai messaggi dettagliati generati da uno script, da un cmdlet o da un provider, ad esempio i messaggi generati dal cmdlet Write-Verbose . I messaggi dettagliati descrivono le azioni eseguite per eseguire un comando.
Per impostazione predefinita, i messaggi dettagliati non vengono visualizzati, ma è possibile modificare questo comportamento modificando il valore di $VerbosePreference
.
La $VerbosePreference
variabile accetta uno dei ActionPreference
valori di enumerazione: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
I valori validi sono i seguenti:
- Interruzione : immettere il debugger quando si scrive nel flusso Dettagliato.
- Stop: visualizza il messaggio dettagliato e un messaggio di errore e quindi arresta l'esecuzione.
- Richiesta: visualizza il messaggio dettagliato e quindi visualizza un prompt che chiede se continuare.
- Continua: visualizza il messaggio dettagliato e continua con l'esecuzione.
- SilentlyContinue: (impostazione predefinita) non visualizza il messaggio dettagliato. Continua l'esecuzione.
È possibile usare il parametro comune verbose di un cmdlet per visualizzare o nascondere i messaggi dettagliati per un comando specifico. Per altre informazioni, vedi about_CommonParameters.
Esempio
Questi esempi mostrano l'effetto dei diversi valori di $VerbosePreference
e del parametro Verbose per eseguire l'override del valore di preferenza.
Questo esempio mostra l'effetto del valore SilentlyContinue , ovvero il valore predefinito. Il comando usa il parametro Message , ma non scrive un messaggio nella console di PowerShell.
Write-Verbose -Message "Verbose message test."
Quando viene usato il parametro Verbose , il messaggio viene scritto.
Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.
Questo esempio mostra l'effetto del valore Continue . La $VerbosePreference
variabile è impostata su Continua e viene visualizzato il messaggio.
$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
In questo esempio viene usato il parametro Verbose con un valore di $false
che esegue l'override del valore Continue . Il messaggio non viene visualizzato.
Write-Verbose -Message "Verbose message test." -Verbose:$false
In questo esempio viene illustrato l'effetto del valore Stop . La $VerbosePreference
variabile è impostata su Arresta e viene visualizzato il messaggio. Il comando viene arrestato.
$VerbosePreference = "Stop"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Write-Verbose : The running command stopped because the preference variable
"VerbosePreference" or common parameter is set to Stop: Verbose message test.
At line:1 char:1
+ Write-Verbose -Message "Verbose message test."
In questo esempio viene usato il parametro Verbose con un valore di $false
che esegue l'override del valore Stop . Il messaggio non viene visualizzato.
Write-Verbose -Message "Verbose message test." -Verbose:$false
In questo esempio viene illustrato l'effetto del valore Di ricerca . La $VerbosePreference
variabile è impostata su Inquire. Il messaggio viene visualizzato e l'utente viene richiesto di confermare.
$VerbosePreference = "Inquire"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
In questo esempio viene usato il parametro Verbose con un valore di $false
che esegue l'override del valore Di ricerca . L'utente non viene richiesto e il messaggio non viene visualizzato.
Write-Verbose -Message "Verbose message test." -Verbose:$false
$WarningPreference
Determina il modo in cui PowerShell risponde ai messaggi di avviso generati da uno script, un cmdlet o un provider, ad esempio i messaggi generati dal cmdlet Write-Warning .
Per impostazione predefinita, vengono visualizzati e eseguiti messaggi di avviso, ma è possibile modificare questo comportamento modificando il valore di $WarningPreference
.
La $WarningPreference
variabile accetta uno dei valori di ActionPreference
enumerazione: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspend o Break.
I valori validi sono i seguenti:
- Interruzione : immettere il debugger quando viene scritto un messaggio di avviso.
- Stop: visualizza il messaggio di avviso e un messaggio di errore e quindi arresta l'esecuzione.
- Richiesta: visualizza il messaggio di avviso e quindi richiede l'autorizzazione per continuare.
- Continua: (Impostazione predefinita) Visualizza il messaggio di avviso e quindi continua l'esecuzione.
- SilentlyContinue: non visualizza il messaggio di avviso. Continua l'esecuzione.
È possibile usare il parametro comune WarningAction di un cmdlet per determinare il modo in cui PowerShell risponde agli avvisi da un comando specifico. Per altre informazioni, vedi about_CommonParameters.
Esempio
Questi esempi mostrano l'effetto dei diversi valori di $WarningPreference
.
Il parametro WarningAction esegue l'override del valore di preferenza.
Questo esempio mostra l'effetto del valore predefinito , Continua.
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
In questo esempio viene usato il parametro WarningAction con il valore SilentlyContinue per eliminare l'avviso. Il messaggio non viene visualizzato.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
In questo esempio la $WarningPreference
variabile viene modificata nel valore SilentlyContinue . Il messaggio non viene visualizzato.
$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m
In questo esempio viene usato il parametro WarningAction per arrestare quando viene generato un avviso.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Stop
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
"WarningPreference" or common parameter is set to Stop:
This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m -WarningAction Stop
In questo esempio la $WarningPreference
variabile viene modificata nel valore Di ricerca . L'utente viene richiesto di confermare.
$WarningPreference = "Inquire"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
In questo esempio viene usato il parametro WarningAction con il valore SilentlyContinue. Il comando continua a eseguire e non viene visualizzato alcun messaggio.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue
In questo esempio il $WarningPreference
valore viene modificato in Stop.
$WarningPreference = "Stop"
$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.
Write-Warning : The running command stopped because the preference variable
"WarningPreference" or common parameter is set to Stop:
This action can delete data.
At line:1 char:1
+ Write-Warning -Message $m
In questo esempio viene usato WarningAction con il valore Di indagine . L'utente viene richiesto quando si verifica un avviso.
$m = "This action can delete data."
Write-Warning -Message $m -WarningAction Inquire
WARNING: This action can delete data.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [?] Help (default is "Y"):
$WhatIfPreference
Determina se WhatIf è abilitato automaticamente per ogni comando che lo supporta. Quando WhatIf è abilitato, il cmdlet segnala l'effetto previsto del comando, ma non esegue il comando.
I valori validi sono i seguenti:
- False (0, non abilitato): (Impostazione predefinita) WhatIf non è abilitato automaticamente. Per abilitarlo manualmente, usare il parametro WhatIf del cmdlet.
- True (1, abilitato): WhatIf viene abilitato automaticamente in qualsiasi comando che lo supporti. Gli utenti possono usare il parametro WhatIf con un valore False per disabilitarlo manualmente, ad esempio
-WhatIf:$false
.
Esempio
Questi esempi mostrano l'effetto dei diversi valori di $WhatIfPreference
.
Illustrano come usare il parametro WhatIf per eseguire l'override del valore di preferenza per un comando specifico.
In questo esempio viene illustrato l'effetto $WhatIfPreference
della variabile impostata sul valore predefinito False. Usare Get-ChildItem
per verificare che il file esista.
Remove-Item
elimina il file. Dopo l'eliminazione del file, è possibile verificare l'eliminazione con Get-ChildItem
.
Get-ChildItem -Path .\test.txt
Remove-Item -Path ./test.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 9/13/2019 10:53 10 test.txt
Get-ChildItem -Path .\test.txt
Get-ChildItem : Cannot find path 'C:\Test\test.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -File test.txt
Questo esempio mostra l'effetto dell'uso del parametro WhatIf quando il valore di $WhatIfPreference
è False.
Verificare che il file esista.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
Usare il parametro WhatIf per determinare il risultato del tentativo di eliminare il file.
Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Verificare che il file non sia stato eliminato.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
In questo esempio viene illustrato l'effetto $WhatIfPreference
della variabile impostata sul valore True. Quando si usa Remove-Item
per eliminare un file, viene visualizzato il percorso del file, ma il file non viene eliminato.
Provare a eliminare un file. Viene visualizzato un messaggio relativo a ciò che accadrebbe se Remove-Item
fosse stato eseguito, ma il file non viene eliminato.
$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".
Usare Get-ChildItem
per verificare che il file non sia stato eliminato.
Get-ChildItem -Path .\test2.txt
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/28/2019 17:06 12 test2.txt
In questo esempio viene illustrato come eliminare un file quando il valore di $WhatIfPreference
è True. Usa il parametro WhatIf con un valore di $false
. Usare Get-ChildItem
per verificare che il file sia stato eliminato.
Remove-Item -Path .\test2.txt -WhatIf:$false
Get-ChildItem -Path .\test2.txt
Get-ChildItem : Cannot find path 'C:\Test\test2.txt' because it does not exist.
At line:1 char:1
+ Get-ChildItem -Path .\test2.txt
Di seguito sono riportati esempi del Get-Process
cmdlet che non supporta WhatIf e Stop-Process
che supporta WhatIf. Il $WhatIfPreference
valore della variabile è True.
Get-Process
non supporta WhatIf. Quando viene eseguito il comando, viene visualizzato il processo Winword .
Get-Process -Name Winword
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
130 119.84 173.38 8.39 15024 4 WINWORD
Stop-Process
supporta WhatIf. Il processo Winword non viene arrestato.
Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".
È possibile eseguire l'override del comportamento WhatIf usando il Stop-Process
parametro WhatIf con un valore di $false
. Il processo Winword viene arrestato.
Stop-Process -Name Winword -WhatIf:$false
Per verificare che il processo Winword sia stato arrestato, usare Get-Process
.
Get-Process -Name Winword
Get-Process : Cannot find a process with the name "Winword".
Verify the process name and call the cmdlet again.
At line:1 char:1
+ Get-Process -Name Winword