Compartilhar via


about_Preference_Variables

Descrição curta

Variáveis que personalizam o comportamento do PowerShell.

Descrição longa

O PowerShell inclui um conjunto de variáveis que permitem personalizar seu comportamento. Essas variáveis de preferência funcionam como as opções em sistemas baseados em GUI.

As variáveis de preferência afetam o ambiente operacional do PowerShell e todos os comandos são executados no ambiente. Alguns cmdlets têm parâmetros que permitem substituir o comportamento de preferência por um comando específico.

A tabela a seguir lista as variáveis de preferência e seus valores padrão.

Variável Valor Padrão
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView ConciseView
$FormatEnumerationLimit 4
$InformationPreference SilentlyContinue
$LogCommandHealthEvent $false (não registrado)
$LogCommandLifecycleEvent $false (não registrado)
$LogEngineHealthEvent $true (registrado em log)
$LogEngineLifecycleEvent $true (registrado em log)
$LogProviderHealthEvent $true (registrado em log)
$LogProviderLifecycleEvent $true (registrado em log)
$MaximumHistoryCount 4096
$OFS Caractere de espaço (" ")
$OutputEncoding objeto UTF8Encoding
$ProgressPreference Continue
$PSDefaultParameterValues @{} (tabela de hash vazia)
$PSEmailServer $null (nenhum)
$PSModuleAutoLoadingPreference All
$PSNativeCommandArgumentPassing Windows no Windows, Standard em não Windows
$PSNativeCommandUseErrorActionPreference $false
$PSSessionApplicationName 'wsman'
$PSSessionConfigurationName 'http://schemas.microsoft.com/powershell/Microsoft.PowerShell'
$PSSessionOption objeto PSSessionOption
$PSStyle objeto PSStyle
$Transcript $null (nenhum)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference $false

O PowerShell inclui as variáveis de ambiente a seguir que armazenam as preferências do usuário. Para obter mais informações sobre essas variáveis de ambiente, consulte about_Environment_Variables.

  • $Env:PSExecutionPolicyPreference
  • $Env:PSModulePath

Nota

As alterações nas variáveis de preferência se aplicam somente no escopo que são feitas e nos escopos filho dela. Por exemplo, você pode limitar os efeitos de alterar uma variável de preferência para uma única função ou script. Para obter mais informações, consulte about_Scopes.

Trabalhando com variáveis de preferência

Este documento descreve cada uma das variáveis de preferência.

Para exibir o valor atual de uma variável de preferência específica, digite o nome da variável. Por exemplo, o comando a seguir exibe o valor da variável $ConfirmPreference.

 $ConfirmPreference
High

Para alterar o valor de uma variável, use uma instrução de atribuição. Por exemplo, a instrução a seguir altera o valor do parâmetro $ConfirmPreference para Média.

$ConfirmPreference = "Medium"

Os valores definidos são específicos para a sessão atual do PowerShell. Para tornar as variáveis eficazes em todas as sessões do PowerShell, adicione-as ao seu perfil do PowerShell. Para obter mais informações, consulte about_Profiles.

Trabalhando remotamente

Quando você executa comandos em um computador remoto, os comandos remotos só estão sujeitos às preferências definidas no cliente do PowerShell do computador remoto. Por exemplo, quando você executa um comando remoto, o valor da variável $DebugPreference do computador remoto determina como o PowerShell responde à depuração de mensagens.

Para obter mais informações sobre comandos remotos, consulte about_Remote.

$ConfirmPreference

Determina se o PowerShell solicita automaticamente a confirmação antes de executar um cmdlet ou função.

A variável $ConfirmPreference usa um dos valores de enumeração ConfirmImpact: High, Medium, Lowou None.

Cmdlets e funções são atribuídos a um risco de alta, médiaou baixa. Quando o valor da variável $ConfirmPreference é menor ou igual ao risco atribuído a um cmdlet ou função, o PowerShell solicita automaticamente a confirmação antes de executar o cmdlet ou a função. Para obter mais informações sobre como atribuir um risco a cmdlets ou funções, consulte about_Functions_CmdletBindingAttribute.

Se o valor da variável $ConfirmPreference for None, o PowerShell nunca solicitará automaticamente antes de executar um cmdlet ou função.

Para alterar o comportamento de confirmação para todos os cmdlets e funções na sessão, altere $ConfirmPreference valor da variável.

Para substituir o $ConfirmPreference para um único comando, use o parâmetro Confirm de um cmdlet ou função. Para solicitar confirmação, use -Confirm. Para suprimir a confirmação, use -Confirm:$false.

Valores válidos de $ConfirmPreference:

  • Nenhum: o PowerShell não é solicitado automaticamente. Para solicitar a confirmação de um comando específico, use o parâmetro Confirmar do cmdlet ou função.
  • Baixa: o PowerShell solicita confirmação antes de executar cmdlets ou funções com baixo, médio ou alto risco.
  • Médio: o PowerShell solicita confirmação antes de executar cmdlets ou funções com um risco médio ou alto.
  • Alto: o PowerShell solicita confirmação antes de executar cmdlets ou funções com alto risco.

Explicação detalhada

O PowerShell pode solicitar automaticamente a confirmação antes de executar uma ação. Por exemplo, quando o cmdlet ou função afeta significativamente o sistema para excluir dados ou usar uma quantidade significativa de recursos do 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"):

A estimativa do risco é um atributo do cmdlet ou função conhecida como ConfirmImpact. Os usuários não podem alterá-lo.

Cmdlets e funções que podem representar um risco para o sistema têm um parâmetro Confirme que você pode usar para solicitar ou suprimir a confirmação de um único comando.

A maioria dos cmdlets e funções mantém o valor padrão de Média para ConfirmImpact. $ConfirmPreference é definido como alto por padrão. Portanto, é raro que os comandos solicitem automaticamente a confirmação quando os usuários não especificam o parâmetro Confirmar. Para estender a solicitação de confirmação automática para mais cmdlets e funções, defina o valor de $ConfirmPreference como média ou baixa.

Exemplos

Este exemplo mostra o efeito do valor padrão da variável $ConfirmPreference, High. O valor Alto confirma apenas cmdlets e funções de alto risco. Como a maioria dos cmdlets e funções são de médio risco, eles não são confirmados automaticamente e Remove-Item exclui o arquivo. Adicionar -Confirm ao comando solicita confirmação ao usuário.

$ConfirmPreference
High
Remove-Item -Path C:\temp1.txt

Use -Confirm para solicitar a confirmação.

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"):

O exemplo a seguir mostra o efeito de alterar o valor de $ConfirmPreference para Média. Como a maioria dos cmdlets e da função são de risco médio, eles são confirmados automaticamente. Para suprimir o prompt de confirmação de um único comando, use o parâmetro Confirm com um valor de $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 como o PowerShell responde à depuração de mensagens geradas por um script, cmdlet ou provedor ou por um comando Write-Debug na linha de comando.

A variável $DebugPreference usa um dos valores de enumeração ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendou Break.

Alguns cmdlets exibem mensagens de depuração, que normalmente são mensagens técnicas projetadas para programadores e profissionais de suporte técnico. Por padrão, as mensagens de depuração não são exibidas, mas você pode exibir mensagens de depuração alterando o valor de $DebugPreference.

Você pode usar o parâmetro Depurar comum de um cmdlet para exibir ou ocultar as mensagens de depuração de um comando específico. Para obter mais informações, consulte about_CommonParameters.

Os valores válidos são os seguintes:

  • de interrupção – insira o depurador quando ocorrer um erro ou quando uma exceção for gerada.
  • Parar: exibe a mensagem de depuração e interrompe a execução. Grava um erro no console.
  • Inquire: exibe a mensagem de depuração e pergunta se deseja continuar.
  • Continuar: exibe a mensagem de depuração e continua com a execução.
  • silentlyContinue: (Padrão) Nenhum efeito. A mensagem de depuração não é exibida e a execução continua sem interrupção.

Adicionar o parâmetro Depurar comum a um comando, quando o comando é configurado para gerar uma mensagem de depuração, altera o valor da variável $DebugPreference para Continuar.

Exemplos

Os exemplos a seguir mostram o efeito de alterar os valores de $DebugPreference quando um comando Write-Debug é inserido na linha de comando. A alteração afeta todas as mensagens de depuração, incluindo mensagens geradas por cmdlets e scripts. Os exemplos mostram o parâmetro Depurar, que exibe ou oculta as mensagens de depuração relacionadas a um único comando.

Este exemplo mostra o efeito do valor padrão da variável $DebugPreference, SilentlyContinue . Por padrão, a mensagem de depuração do cmdlet Write-Debug não é exibida e o processamento continua. Quando o parâmetro Depurar é usado, ele substitui a preferência por um único comando. A mensagem de depuração é exibida.

$DebugPreference
SilentlyContinue
Write-Debug -Message "Hello, World"
Write-Debug -Message "Hello, World" -Debug
DEBUG: Hello, World

Este exemplo mostra o efeito de $DebugPreference com o valor Continuar. A mensagem de depuração é exibida e o comando continua a ser processado.

$DebugPreference = "Continue"
Write-Debug -Message "Hello, World"
DEBUG: Hello, World

Este exemplo usa o parâmetro Depurar com um valor de $false para suprimir a mensagem de um único comando. A mensagem de depuração não é exibida.

Write-Debug -Message "Hello, World" -Debug:$false

Este exemplo mostra o efeito de $DebugPreference sendo definido como o valor Parar. A mensagem de depuração é exibida e o comando é interrompido.

$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"

Este exemplo usa o parâmetro Depurar com um valor de $false para suprimir a mensagem de um único comando. A mensagem de depuração não é exibida e o processamento não é interrompido.

Write-Debug -Message "Hello, World" -Debug:$false

Este exemplo mostra o efeito de $DebugPreference sendo definido como o valor Inquire. A mensagem de depuração é exibida e o usuário é solicitado a confirmar.

$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"):

Este exemplo usa o parâmetro Depurar com um valor de $false para suprimir a mensagem de um único comando. A mensagem de depuração não é exibida e o processamento continua.

Write-Debug -Message "Hello, World" -Debug:$false

$ErrorActionPreference

Determina como o PowerShell responde a um erro de não encerramento, um erro que não interrompe o processamento do cmdlet. Por exemplo, na linha de comando ou em um script, cmdlet ou provedor, como os erros gerados pelo cmdlet Write-Error.

A variável $ErrorActionPreference usa um dos valores de enumeração ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendou Break.

Você pode usar o parâmetro ErrorAction de um cmdlet para substituir a preferência por um comando específico.

Os valores válidos são os seguintes:

  • de interrupção – insira o depurador quando ocorrer um erro ou quando uma exceção for gerada.
  • Continuar: (Padrão) Exibe a mensagem de erro e continua em execução.
  • Ignorar: suprime a mensagem de erro e continua a executar o comando. O valor Ignorar destina-se ao uso por comando, não para uso como preferência salva. Ignorar não é um valor válido para a variável $ErrorActionPreference.
  • Inquire: exibe a mensagem de erro e pergunta se deseja continuar.
  • SilentlyContinue: sem efeito. A mensagem de erro não é exibida e a execução continua sem interrupção.
  • Parar: exibe a mensagem de erro e interrompe a execução. Além do erro gerado, o valor Parar gera um objeto ActionPreferenceStopException para o fluxo de erros.
  • Suspender: suspende automaticamente um trabalho de fluxo de trabalho para permitir uma investigação mais aprofundada. Após a investigação, o fluxo de trabalho pode ser retomado. O valor Suspender destina-se ao uso por comando, não para uso como preferência salva. Suspender não é um valor válido para a variável $ErrorActionPreference.

$ErrorActionPreference e o parâmetro ErrorAction não afetam como o PowerShell responde a erros de encerramento que interrompem o processamento de cmdlet. Para obter mais informações sobre o parâmetro comum ErrorAction, consulte about_CommonParameters.

Muitos comandos nativos são gravados em stderr como um fluxo alternativo para obter informações adicionais. Esse comportamento pode causar confusão ao examinar erros ou as informações de saída adicionais poderão ser perdidas para o usuário se $ErrorActionPreference estiver definido como um estado que silencie a saída.

A partir do PowerShell 7.2, os registros de erro redirecionados de comandos nativos, como ao usar operadores de redirecionamento (2>&1), não são gravados na variável $Error e a variável de preferência $ErrorActionPreference não afeta a saída redirecionada.

O PowerShell 7.3 adicionou um recurso experimental que permite controlar como as mensagens gravadas em stderr são tratadas.

Para obter mais informações, consulte $PSNativeCommandUseErrorActionPreference.

Exemplos

Esses exemplos mostram o efeito dos diferentes valores da variável $ErrorActionPreference. O parâmetro ErrorAction é usado para substituir o valor $ErrorActionPreference.

Este exemplo mostra o valor padrão $ErrorActionPreference, Continuar. Um erro de não terminação é gerado. A mensagem é exibida e o processamento 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

Este exemplo mostra o valor padrão $ErrorActionPreference, Inquire. Um erro é gerado e um prompt de ação é mostrado.

# 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"):

Este exemplo mostra o $ErrorActionPreference definido como SilentlyContinue . A mensagem de erro é suprimida.

# 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

Este exemplo mostra a $ErrorActionPreference definida como Parar. Ele também mostra o objeto extra gerado para a variável $Error.

# 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 o formato de exibição de mensagens de erro no PowerShell.

A variável $ErrorView usa um dos valores de enumeração ErrorView: NormalView, CategoryView ou ConciseView.

Os valores válidos são os seguintes:

  • ConciseView: (Padrão) Fornece uma mensagem de erro concisa e uma exibição refatorada para construtores de módulos avançados. A partir do PowerShell 7.2, se o erro for da linha de comando ou de um módulo de script, a saída será uma única mensagem de erro de linha. Caso contrário, você receberá uma mensagem de erro de várias linhas que contém o erro e um ponteiro para o erro mostrando onde ele ocorre nessa linha. Se o terminal der suporte ao Terminal Virtual, os códigos de cor ANSI serão usados para fornecer acento de cor. A cor de Ênfase pode ser alterada em $Host.PrivateData.ErrorAccentColor. Use Get-Error cmdlet para uma exibição detalhada abrangente do erro totalmente qualificado, incluindo exceções internas.

    ConciseView foi adicionado ao PowerShell 7.

  • NormalView: uma exibição detalhada projetada para a maioria dos usuários. Consiste em uma descrição do erro e do nome do objeto envolvido no erro.

  • CategoryView: uma exibição sucinta e estruturada projetada para ambientes de produção. O formato é o seguinte:

    {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}

Para obter mais informações sobre os campos em CategoryView, consulte classe ErrorCategoryInfo.

Exemplos

Este exemplo mostra como um erro aparece quando o valor de $ErrorView é o padrão, ConciseView. Get-ChildItem é usado para localizar um diretório inexistente.

Get-ChildItem -Path 'C:\NoRealDirectory'
Get-ChildItem: Can't find path 'C:\NoRealDirectory' because it doesn't exist.

Este exemplo mostra como um erro aparece quando o valor de $ErrorView é o padrão, ConciseView. Script.ps1 é executado e lança um erro de Get-Item instrução.

./Script.ps1
Get-Item: C:\Script.ps1
Line |
  11 | Get-Item -Path .\stuff
     | ^ Can't find path 'C:\demo\stuff' because it doesn't exist.

Este exemplo mostra como um erro aparece quando o valor de $ErrorView é alterado para NormalView. Get-ChildItem é usado para localizar um arquivo inexistente.

Get-ChildItem -Path C:\nofile.txt
Get-ChildItem : Can't find path 'C:\nofile.txt' because it doesn't exist.
At line:1 char:1
+ Get-ChildItem -Path C:\nofile.txt

Este exemplo mostra como o mesmo erro aparece quando o valor de $ErrorView é alterado para CategoryView.

$ErrorView = "CategoryView"
Get-ChildItem -Path C:\nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException

Este exemplo demonstra que o valor de $ErrorView afeta apenas a exibição de erro. Ele não altera a estrutura do objeto de erro armazenado no $Error variável automática. Para obter informações sobre a variável automática $Error, consulte about_Automatic_Variables.

O comando a seguir usa o objeto ErrorRecord associado ao erro mais recente na matriz de erros, elemento 0e formata as propriedades do objeto em uma lista.

$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 quantos itens enumerados estão incluídos em uma exibição. Essa variável não afeta os objetos subjacentes, apenas a exibição. Quando o valor de $FormatEnumerationLimit é menor que o número de itens enumerados, o PowerShell adiciona uma reticências (...) para indicar itens não mostrados.

valores válidos: inteiros (Int32)

valor padrão: 4

Exemplos

Este exemplo mostra como usar a variável $FormatEnumerationLimit para melhorar a exibição de itens enumerados.

O comando neste exemplo gera uma tabela que lista todos os serviços em execução no computador em dois grupos: um para executando serviços e outro para parou serviços. Ele usa um comando Get-Service para obter todos os serviços e envia os resultados por meio do pipeline para o cmdlet Group-Object, que agrupa os resultados pelo status do serviço.

O resultado é uma tabela que lista o status na coluna Nome e os processos na coluna grupo. Para alterar os rótulos de coluna, use uma tabela de hash, consulte about_Hash_Tables. Para obter mais informações, consulte os exemplos em Format-Table.

Localize o valor atual de $FormatEnumerationLimit.

$FormatEnumerationLimit
4

Listar todos os serviços agrupados por Status. Há um máximo de quatro serviços listados na coluna Group para cada status porque $FormatEnumerationLimit tem um valor de 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...}

Para aumentar o número de itens listados, aumente o valor de $FormatEnumerationLimit para 1000. Use Get-Service e Group-Object para exibir os serviços.

$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...

Use Format-Table com o parâmetro Wrap para exibir a lista de serviços.

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

A variável $InformationPreference permite definir preferências de fluxo de informações que você deseja exibir aos usuários. Especificamente, as mensagens informativas que você adicionou a comandos ou scripts adicionando o cmdlet informações de gravação. Se o parâmetro InformationAction for usado, seu valor substituirá o valor da variável $InformationPreference. Write-Information foi introduzido no PowerShell 5.0.

A variável $InformationPreference usa um dos valores de enumeração ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendou Break.

Os valores válidos são os seguintes:

  • de interrupção – insira o depurador ao gravar no fluxo de informações.
  • Parar: interrompe um comando ou script em uma ocorrência do comando Write-Information.
  • Inquire: exibe a mensagem informativa especificada em um comando Write-Information e pergunta se deseja continuar.
  • Continuar: exibe a mensagem informativa e continua em execução.
  • silentlyContinue: (Padrão) Nenhum efeito. As mensagens informativas não são exibidas e o script continua sem interrupção.

$Log*Event

As variáveis de preferência Log*Event determinam quais tipos de eventos são gravados no log de eventos do PowerShell no Visualizador de Eventos. Por padrão, somente eventos de mecanismo e provedor são registrados em log. Porém, você pode usar as variáveis de preferência de Log*Event para personalizar seu log, como registrar eventos em log sobre comandos.

As variáveis de preferência de do Log*Event são as seguintes:

  • $LogCommandHealthEvent: registra erros e exceções na inicialização e processamento de comandos. O padrão é $false (não registrado).
  • $LogCommandLifecycleEvent: registra em log a inicialização e parada de comandos e pipelines de comando e exceções de segurança na descoberta de comandos. O padrão é $false (não registrado).
  • $LogEngineHealthEvent: registra erros e falhas de sessões. O padrão é $true (registrado).
  • $LogEngineLifecycleEvent: registra em log a abertura e o fechamento das sessões. O padrão é $true (registrado).
  • $LogProviderHealthEvent: registra erros do provedor, como erros de leitura e gravação, erros de pesquisa e invocação. O padrão é $true (registrado).
  • $LogProviderLifecycleEvent: logs adicionando e removendo provedores do PowerShell. O padrão é $true (registrado). Para obter informações sobre provedores do PowerShell, consulte about_Providers.

Para habilitar um Log*Event, digite a variável com um valor de $true, por exemplo:

$LogCommandLifecycleEvent = $true

Para desabilitar um tipo de evento, digite a variável com um valor de $false, por exemplo:

$LogCommandLifecycleEvent = $false

Os eventos habilitados são eficazes apenas para o console atual do PowerShell. Para aplicar a configuração a todos os consoles, salve as configurações de variável em seu perfil do PowerShell. Para obter mais informações, consulte about_Profiles.

$MaximumHistoryCount

Determina quantos comandos são salvos no histórico de comandos da sessão atual.

valores válidos: 1 a 32768 (Int32)

padrão: 4096

Para determinar o número de comandos salvos no histórico de comandos, digite:

(Get-History).Count

Para ver os comandos salvos no histórico de sessão, use o cmdlet Get-History. Para obter mais informações, consulte about_History.

$OFS

O SEPARADOR de Campo de Saída (OFS) especifica o caractere que separa os elementos de uma matriz convertida em uma cadeia de caracteres.

valores válidos: qualquer cadeia de caracteres.

Padrão: Espaço

Por padrão, a variável $OFS não existe e o separador de arquivo de saída é um espaço, mas você pode adicionar essa variável e defini-la para qualquer cadeia de caracteres. Você pode alterar o valor de $OFS em sua sessão digitando $OFS="<value>".

Nota

Se você estiver esperando o valor padrão de um espaço (" ") em seu script, módulo ou saída de configuração, tenha cuidado para que o valor padrão do $OFS não tenha sido alterado em outro lugar em seu código.

Exemplos

Este exemplo mostra que um espaço é usado para separar os valores quando uma matriz é convertida em uma cadeia de caracteres. Nesse caso, uma matriz de inteiros é armazenada em uma variável e, em seguida, a variável é convertida como uma cadeia de caracteres.

$array = 1,2,3,4
[string]$array
1 2 3 4

Para alterar o separador, adicione a variável $OFS atribuindo um valor a ela. A variável deve ser nomeada $OFS.

$OFS = "+"
[string]$array
1+2+3+4

Para restaurar o comportamento padrão, você pode atribuir um espaço (" ") ao valor de $OFS ou excluir a variável. Os comandos a seguir excluem a variável e, em seguida, verificam se o separador é um espaço.

Remove-Variable OFS
[string]$array
1 2 3 4

$OutputEncoding

Determina o método de codificação de caracteres que o PowerShell usa ao canalizar dados para aplicativos nativos.

Nota

Na maioria dos cenários, o valor para $OutputEncoding deve se alinhar ao valor de [Console]::InputEncoding.

Os valores válidos são os seguintes: objetos derivados de uma classe de codificação, como ASCIIEncoding, UTF7Encoding, UTF8Encoding, UTF32Encodinge UnicodeEncoding.

Padrão: objeto UTF8Encoding.

Exemplos

O primeiro comando localiza o valor de $OutputEncoding. Como o valor é um objeto de codificação, exiba apenas sua propriedade EncodingName.

$OutputEncoding.EncodingName

Os exemplos restantes usam o seguinte script do PowerShell salvo como hexdump.ps1 para ilustrar o comportamento de $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()
}

O exemplo a seguir mostra como o valor da cadeia de caracteres café é codificado em bytes quando canalizado para hexdump.ps1 criados acima. Ele demonstra que o valor da cadeia de caracteres é codificado usando o esquema 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�

O exemplo a seguir mostra como os bytes mudam ao alterar a codificação para 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 como o PowerShell responde às atualizações de progresso geradas por um script, cmdlet ou provedor, como as barras de progresso geradas pelo cmdlet Write-Progress. O cmdlet Write-Progress cria barras de progresso que mostram o status de um comando.

A variável $ProgressPreference usa um dos valores de enumeração ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendou Break.

Os valores válidos são os seguintes:

  • de interrupção – insira o depurador ao gravar no fluxo Progresso.
  • Parar: não exibe a barra de progresso. Em vez disso, ele exibe uma mensagem de erro e interrompe a execução.
  • inquire: não exibe a barra de progresso. Solicita permissão para continuar. Se você responder com Y ou A, ele exibirá a barra de progresso.
  • Continuar: (Padrão) Exibe a barra de progresso e continua com a execução.
  • SilentlyContinue: executa o comando, mas não exibe a barra de progresso.

$PSDefaultParameterValues

Especifica valores padrão para os parâmetros de cmdlets e funções avançadas. O valor de $PSDefaultParameterValues é uma tabela de hash em que a chave consiste no nome do cmdlet e no nome do parâmetro separados por dois-pontos (:). O valor é um valor padrão personalizado que você especifica.

$PSDefaultParameterValues foi introduzido no PowerShell 3.0.

Para obter mais informações sobre essa variável de preferência, consulte about_Parameters_Default_Values.

$PSEmailServer

Especifica o servidor de email padrão usado para enviar mensagens de email. Essa variável de preferência é usada por cmdlets que enviam email, como o cmdlet Send-MailMessage.

$PSModuleAutoLoadingPreference

Habilita e desabilita a importação automática de módulos na sessão. A variável $PSModuleAutoLoadingPreference não existe por padrão. O comportamento padrão quando a variável não é definida é o mesmo que $PSModuleAutoLoadingPreference = 'All'.

Para importar automaticamente um módulo, obtenha ou use um comando contido no módulo.

A variável $PSModuleAutoLoadingPreference usa um dos valores de enumeração PSModuleAutoLoadingPreference:

  • All: os módulos são importados automaticamente no primeiro uso.
  • ModuleQualified: os módulos são importados automaticamente somente quando um usuário usa o nome qualificado por módulo de um comando no módulo. Por exemplo, se os tipos de usuário MyModule\MyCommand, o PowerShell importará o módulo MyModule.
  • None: desabilita a importação automática de módulos. Para importar um módulo, use o cmdlet Import-Module.

Para obter mais informações sobre a importação automática de módulos, consulte about_Modules.

$PSNativeCommandArgumentPassing

O PowerShell 7.3 alterou a maneira como analisa a linha de comando para comandos nativos. A nova variável de preferência $PSNativeCommandArgumentPassing controla esse comportamento.

Cuidado

O novo comportamento é um alteração significativa do comportamento anterior. Isso pode interromper scripts e automação que solucionam os vários problemas ao invocar aplicativos nativos.

A variável automática $PSNativeCommandArgumentPassing permite selecionar o comportamento em runtime. Os valores válidos são Legacy, Standarde Windows. Legacy é o comportamento histórico.

A variável $PSNativeCommandArgumentPassing é definida por padrão, mas o valor é específico da plataforma.

  • No Windows, a preferência é definida como Windows.
  • Em plataformas não Windows, a preferência é definida como Standard.
  • Se você tiver removido a variável $PSNativeCommandArgumentPassing, o PowerShell usará o comportamento Standard.

O comportamento de Windows e do modo Standard são os mesmos, exceto que, no modo Windows, o PowerShell usa o comportamento Legacy do argumento que passa quando você executa os arquivos a seguir.

  • cmd.exe
  • cscript.exe
  • find.exe
  • sqlcmd.exe
  • wscript.exe
  • Arquivos que terminam com:
    • .bat
    • .cmd
    • .js
    • .vbs
    • .wsf

Se o $PSNativeCommandArgumentPassing estiver definido como Legacy ou Standard, o analisador não verificará esses arquivos. Para obter exemplos do novo comportamento, consulte about_Parsing.

O PowerShell 7.3 também adicionou a capacidade de rastrear a associação de parâmetros para comandos nativos. Para obter mais informações, consulte trace-command.

$PSNativeCommandUseErrorActionPreference

Quando $PSNativeCommandUseErrorActionPreference é $true, comandos nativos com códigos de saída não zero emitem erros de acordo com $ErrorActionPreference.

Alguns comandos nativos, como robocopy usam códigos de saída diferentes de zero para representar informações diferentes de erros. Nesses casos, você pode desabilitar temporariamente o comportamento e impedir que códigos de saída diferentes de zero emitissem erros.

& {
    # 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"
    }
}

Neste exemplo, a variável $PSNativeCommandUseErrorActionPreference é alterada dentro de um scriptblock. A alteração é local para o scriptblock. Quando o scriptblock é encerrado, a variável é revertida para seu valor anterior.

$PSSessionApplicationName

Especifica o nome do aplicativo padrão para um comando remoto que usa a tecnologia Serviços Web para Gerenciamento (WS-Management). Para obter mais informações, consulte Sobre ode Gerenciamento Remoto do Windows.

O nome do aplicativo padrão do sistema é WSMAN, mas você pode usar essa variável de preferência para alterar o padrão.

O nome do aplicativo é o último nó em um URI de conexão. Por exemplo, o nome do aplicativo no URI de exemplo a seguir é WSMAN.

http://Server01:8080/WSMAN

O nome do aplicativo padrão é usado quando o comando remoto não especifica um URI de conexão ou um nome de aplicativo.

O serviço WinRM usa o nome do aplicativo para selecionar um ouvinte para atender à solicitação de conexão. O valor do parâmetro deve corresponder ao valor da propriedade URLPrefix de um ouvinte no computador remoto.

Para substituir o padrão do sistema e o valor dessa variável e selecionar um nome de aplicativo diferente para uma sessão específica, use os parâmetros ConnectionURI ou ApplicationName dos parâmetros New-PSSession, Enter-PSSessionou Invoke-Command cmdlets.

A variável de preferência $PSSessionApplicationName é definida no computador local, mas especifica um ouvinte no computador remoto. Se o nome do aplicativo especificado não existir no computador remoto, o comando para estabelecer a sessão falhará.

$PSSessionConfigurationName

Especifica a configuração de sessão padrão usada para criar novas sessões na sessão atual.

Essa variável de preferência é definida no computador local, mas especifica uma configuração de sessão localizada no computador remoto.

O valor da variável $PSSessionConfigurationName é um URI de recurso totalmente qualificado.

O valor padrão http://schemas.microsoft.com/PowerShell/microsoft.PowerShell indica a configuração de sessão Microsoft.PowerShell no computador remoto.

Se você especificar apenas um nome de configuração, o seguinte URI de esquema será acrescentado:

http://schemas.microsoft.com/PowerShell/

Você pode substituir o padrão e selecionar uma configuração de sessão diferente para uma sessão específica usando o parâmetro ConfigurationName dos cmdlets New-PSSession, Enter-PSSessionou Invoke-Command.

Você pode alterar o valor dessa variável a qualquer momento. Quando você fizer isso, lembre-se de que a configuração de sessão selecionada deve existir no computador remoto. Caso contrário, o comando para criar uma sessão que usa a configuração da sessão falhará.

Essa variável de preferência não determina quais configurações de sessão local são usadas quando usuários remotos criam uma sessão que se conecta a este computador. No entanto, você pode usar as permissões para as configurações de sessão local para determinar quais usuários podem usá-las.

$PSSessionOption

Estabelece os valores padrão para opções de usuário avançadas em uma sessão remota. Essas preferências de opção substituem os valores padrão do sistema para opções de sessão.

A variável $PSSessionOption contém um objeto PSSessionOption. Para obter mais informações, consulte System.Management.Automation.Remoting.PSSessionOption. Cada propriedade do objeto representa uma opção de sessão. Por exemplo, a propriedade NoCompression turnos de compactação de dados durante a sessão.

Por padrão, a variável $PSSessionOption contém um objeto PSSessionOption com os valores padrão para todas as opções, conforme mostrado abaixo.

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

Para obter descrições dessas opções e mais informações, consulte New-PSSessionOption. Para obter mais informações sobre comandos e sessões remotas, consulte about_Remote e about_PSSessions.

Para alterar o valor da variável de preferência $PSSessionOption, use o cmdlet New-PSSessionOption para criar um objeto PSSessionOption com os valores de opção que você preferir. Salve a saída em uma variável chamada $PSSessionOption.

$PSSessionOption = New-PSSessionOption -NoCompression

Para usar a variável de preferência $PSSessionOption em cada sessão do PowerShell, adicione um comando New-PSSessionOption que cria a variável $PSSessionOption ao seu perfil do PowerShell. Para obter mais informações, consulte about_Profiles.

Você pode definir opções personalizadas para uma sessão remota específica. As opções definidas têm precedência sobre os padrões do sistema e o valor da variável de preferência $PSSessionOption.

Para definir opções de sessão personalizadas, use o cmdlet New-PSSessionOption para criar um objeto PSSessionOption. Em seguida, use o objeto PSSessionOption como o valor do parâmetro SessionOption em cmdlets que criam uma sessão, como New-PSSession, Enter-PSSessione Invoke-Command.

$PSStyle

A partir do PowerShell 7.2, agora você pode acessar a variável $PSStyle automática para exibir e alterar a renderização da saída da cadeia de caracteres ANSI. $PSStyle é uma instância da classe PSStyle. Os membros dessa classe definem cadeias de caracteres que contêm sequências de escape ANSI que controlam a renderização de texto no terminal.

Os membros base retornam cadeias de caracteres de sequências de escape ANSI mapeadas para seus nomes. Os valores são configuráveis para permitir a personalização. Os nomes de propriedade facilitam a criação de cadeias de caracteres decoradas usando a conclusão da guia. Por exemplo:

"$($PSStyle.Background.BrightCyan)Power$($PSStyle.Underline)$($PSStyle.Bold)Shell$($PSStyle.Reset)"

Os membros de Plano de Fundo e também têm um método FromRgb() para especificar a cor de 24 bits.

Para obter mais informações sobre $PSStyle, consulte about_ANSI_Terminals.

$Transcript

Usado por Start-Transcript para especificar o nome e o local do arquivo de transcrição. Se você não especificar um valor para o parâmetro caminho, Start-Transcript usará o caminho no valor da variável global $Transcript. Se você ainda não criou essa variável, Start-Transcript armazenará as transcrições no seguinte local usando o nome padrão:

  • No Windows: $HOME\Documents
  • No Linux ou macOS: $HOME

O nome de arquivo padrão é: PowerShell_transcript.<computername>.<random>.<timestamp>.txt.

$VerbosePreference

Determina como o PowerShell responde a mensagens detalhadas geradas por um script, cmdlet ou provedor, como as mensagens geradas pelo cmdlet Write-Verbose. Mensagens detalhadas descrevem as ações executadas para executar um comando.

Por padrão, mensagens detalhadas não são exibidas, mas você pode alterar esse comportamento alterando o valor de $VerbosePreference.

A variável $VerbosePreference usa um dos valores de enumeração ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendou Break.

Os valores válidos são os seguintes:

  • de interrupção – insira o depurador ao gravar no fluxo detalhado.
  • Parar: exibe a mensagem detalhada e uma mensagem de erro e, em seguida, interrompe a execução.
  • Inquire: exibe a mensagem detalhada e exibe um prompt que pergunta se você deseja continuar.
  • Continuar: exibe a mensagem detalhada e continua com a execução.
  • SilentlyContinue: (Padrão) não exibe a mensagem detalhada. Continua em execução.

Você pode usar o parâmetro Detalhado comum de um cmdlet para exibir ou ocultar as mensagens detalhadas de um comando específico. Para obter mais informações, consulte about_CommonParameters.

Exemplos

Esses exemplos mostram o efeito dos diferentes valores de $VerbosePreference e o parâmetro detalhado para substituir o valor de preferência.

Este exemplo mostra o efeito do valor de SilentlyContinue, esse é o padrão. O comando usa o parâmetro Message, mas não grava uma mensagem no console do PowerShell.

Write-Verbose -Message "Verbose message test."

Quando o parâmetro Verbose é usado, a mensagem é gravada.

Write-Verbose -Message "Verbose message test." -Verbose
VERBOSE: Verbose message test.

Este exemplo mostra o efeito do valor de Continuar. A variável $VerbosePreference é definida como Continuar e a mensagem é exibida.

$VerbosePreference = "Continue"
Write-Verbose -Message "Verbose message test."
VERBOSE: Verbose message test.

Este exemplo usa o parâmetro Verbose com um valor de $false que substitui o valor de Continuar. A mensagem não é exibida.

Write-Verbose -Message "Verbose message test." -Verbose:$false

Este exemplo mostra o efeito do valor Parar. A variável $VerbosePreference é definida como Parar e a mensagem é exibida. O comando é interrompido.

$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."

Este exemplo usa o parâmetro Verbose com um valor de $false que substitui o valor Parar. A mensagem não é exibida.

Write-Verbose -Message "Verbose message test." -Verbose:$false

Este exemplo mostra o efeito do valor Inquire. A variável $VerbosePreference é definida como inquire. A mensagem é exibida e o usuário é solicitado a confirmar.

$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"):

Este exemplo usa o parâmetro Verbose com um valor de $false que substitui o valor do Inquire. O usuário não é solicitado e a mensagem não é exibida.

Write-Verbose -Message "Verbose message test." -Verbose:$false

$WarningPreference

Determina como o PowerShell responde às mensagens de aviso geradas por um script, cmdlet ou provedor, como as mensagens geradas pelo cmdlet write-warning.

Por padrão, as mensagens de aviso são exibidas e a execução continua, mas você pode alterar esse comportamento alterando o valor de $WarningPreference.

A variável $WarningPreference usa um dos valores de enumeração ActionPreference: SilentlyContinue, Stop, Continue, Inquire, Ignore, Suspendou Break.

Os valores válidos são os seguintes:

  • Interromper - Insira o depurador quando uma mensagem de aviso for gravada.
  • Parar: exibe a mensagem de aviso e uma mensagem de erro e, em seguida, interrompe a execução.
  • inquire: exibe a mensagem de aviso e solicita permissão para continuar.
  • Continuar: (Padrão) exibe a mensagem de aviso e continua em execução.
  • SilentlyContinue: não exibe a mensagem de aviso. Continua em execução.

Você pode usar o WarningAction parâmetro comum de um cmdlet para determinar como o PowerShell responde a avisos de um comando específico. Para obter mais informações, consulte about_CommonParameters.

Exemplos

Estes exemplos mostram o efeito dos diferentes valores de $WarningPreference. O parâmetro WarningAction substitui o valor de preferência.

Este exemplo mostra o efeito do valor padrão, Continuar.

$m = "This action can delete data."
Write-Warning -Message $m
WARNING: This action can delete data.

Este exemplo usa o parâmetro WarningAction com o valor SilentlyContinue para suprimir o aviso. A mensagem não é exibida.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

Este exemplo altera a variável $WarningPreference para o valor SilentlyContinue. A mensagem não é exibida.

$WarningPreference = "SilentlyContinue"
$m = "This action can delete data."
Write-Warning -Message $m

Este exemplo usa o parâmetro WarningAction para parar quando um aviso é gerado.

$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

Este exemplo altera a variável $WarningPreference para o valor do Inquire. O usuário é solicitado a confirmar.

$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"):

Este exemplo usa o parâmetro WarningAction com o valor SilentlyContinue . O comando continua a ser executado e nenhuma mensagem é exibida.

$m = "This action can delete data."
Write-Warning -Message $m -WarningAction SilentlyContinue

Este exemplo altera o valor $WarningPreference para Parar.

$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

Este exemplo usa o WarningAction com o valor Inquire. O usuário é solicitado quando um aviso ocorre.

$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 é habilitado automaticamente para cada comando que dá suporte a ele. Quando WhatIf está habilitado, o cmdlet relata o efeito esperado do comando, mas não executa o comando.

Os valores válidos são os seguintes:

  • False (0, não habilitado): (Padrão) WhatIf não está habilitado automaticamente. Para habilitá-lo manualmente, use o parâmetro WhatIf do cmdlet.
  • True (1, habilitado): WhatIf é habilitado automaticamente em qualquer comando que dê suporte a ele. Os usuários podem usar o parâmetro WhatIf com um valor de false para desabilitá-lo manualmente, como -WhatIf:$false.

Exemplos

Estes exemplos mostram o efeito dos diferentes valores de $WhatIfPreference. Eles mostram como usar o parâmetro WhatIf para substituir o valor de preferência de um comando específico.

Este exemplo mostra o efeito da variável $WhatIfPreference definida como o valor padrão, False. Use Get-ChildItem para verificar se o arquivo existe. Remove-Item exclui o arquivo. Depois que o arquivo for excluído, você poderá verificar a exclusão com 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

Este exemplo mostra o efeito do uso do parâmetro WhatIf quando o valor de $WhatIfPreference é False.

Verifique se o arquivo existe.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Use o parâmetro WhatIf para determinar o resultado da tentativa de excluir o arquivo.

Remove-Item -Path .\test2.txt -WhatIf
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

Verifique se o arquivo não foi excluído.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Este exemplo mostra o efeito da variável $WhatIfPreference definida como o valor, True. Quando você usa Remove-Item para excluir um arquivo, o caminho do arquivo é exibido, mas o arquivo não é excluído.

Tente excluir um arquivo. Uma mensagem é exibida sobre o que aconteceria se Remove-Item fosse executado, mas o arquivo não é excluído.

$WhatIfPreference = "True"
Remove-Item -Path .\test2.txt
What if: Performing the operation "Remove File" on target "C:\Test\test2.txt".

Use Get-ChildItem para verificar se o arquivo não foi excluído.

Get-ChildItem -Path .\test2.txt
    Directory: C:\Test

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/28/2019    17:06             12 test2.txt

Este exemplo mostra como excluir um arquivo quando o valor de $WhatIfPreference é True. Ele usa o parâmetro WhatIf com um valor de $false. Use Get-ChildItem para verificar se o arquivo foi excluído.

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

Veja a seguir exemplos do cmdlet Get-Process que não dá suporte a WhatIf e Stop-Process que dá suporte a WhatIf. O valor da variável $WhatIfPreference é True.

Get-Process não dá suporte a WhatIf. Quando o comando é executado, ele exibe o processo de 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 dá suporte a WhatIf. O processo Winword não é interrompido.

Stop-Process -Name Winword
What if: Performing the operation "Stop-Process" on target "WINWORD (15024)".

Você pode substituir o comportamento Stop-ProcessWhatIf usando o parâmetro WhatIf com um valor de $false. O processo do Winword é interrompido.

Stop-Process -Name Winword -WhatIf:$false

Para verificar se o processo de do Winword foi interrompido, use 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

Consulte também