about_Preference_Variables
Aplica-se a: Windows PowerShell 2.0, Windows PowerShell 3.0
TÓPICO
Variáveis preferenciais
DESCRIÇÃO BREVE
Variáveis que personalizam o comportamento do Windows PowerShell
DESCRIÇÃO LONGA
O Windows PowerShell inclui um conjunto de variáveis que permitem personalizar seu comportamento. Essas "variáveis preferenciais" funcionam como as opções dos sistemas baseados em GUI.
As variáveis preferenciais afetam o ambiente operacional do Windows PowerShell e todos os comandos executados nele. Em muitos casos, os cmdlets têm parâmetros que podem ser usados para substituir o comportamento preferencial de um comando específico.
A tabela a seguir lista as variáveis preferenciais e seus valores padrão.
Variable Default Value
-------- -------------
$ConfirmPreference High
$DebugPreference SilentlyContinue
$ErrorActionPreference Continue
$ErrorView NormalView
$FormatEnumerationLimit 4
$LogCommandHealthEvent False (not logged)
$LogCommandLifecycleEvent False (not logged)
$LogEngineHealthEvent True (logged)
$LogEngineLifecycleEvent True (logged)
$LogProviderLifecycleEvent True (logged)
$LogProviderHealthEvent True (logged)
$MaximumAliasCount 4096
$MaximumDriveCount 4096
$MaximumErrorCount 256
$MaximumFunctionCount 4096
$MaximumHistoryCount 4096
$MaximumVariableCount 4096
$OFS (Space character (" "))
$OutputEncoding ASCIIEncoding object
$ProgressPreference Continue
$PSDefaultParameterValues (None - empty hash table)
$PSEmailServer (None)
$PSModuleAutoLoadingPreference All
$PSSessionApplicationName WSMAN
$PSSessionConfigurationName https://schemas.microsoft.com/PowerShell/microsoft.PowerShell
$PSSessionOption (See below)
$VerbosePreference SilentlyContinue
$WarningPreference Continue
$WhatIfPreference 0
O Windows PowerShell também inclui as seguintes variáveis de ambiente que armazenam as preferências do usuário. Para obter mais informações sobre essas variáveis de ambiente, consulte about_Environment_Variables.
Variable
--------
PSExecutionPolicyPreference
PSModulePath
COMO TRABALHAR COM VARIÁVEIS PREFERENCIAIS
Este documento descreve todas as variáveis preferenciais.
Para exibir o valor atual de uma variável preferencial específica, digite o nome da variável. Em resposta, o Windows PowerShell fornece o valor. Por exemplo, o comando a seguir exibe o valor da variável $ConfirmPreference.
PS> $ConfirmPreference
High
Para alterar o valor de uma variável, use uma instrução de atribuição. Por exemplo, a instrução a seguir atribui o valor "Medium" à variável $ConfirmPreference.
PS> $ConfirmPreference = "Medium"
Assim como todas as variáveis, os valores que você configura são específicos para a sessão atual do Windows PowerShell. Para fazer com que eles entrem em vigor em todas as sessões do Windows PowerShell, adicione-os a seu perfil do Windows PowerShell. Para obter mais informações, consulte about_Profiles.
COMO TRABALHAR REMOTAMENTE
Quando você executa comandos em um computador remoto, os comandos remotos são sujeitos apenas às preferências configuradas no cliente do Windows PowerShell ou no computador remoto. Por exemplo, quando você executa um comando remoto, o valor da variável $DebugPreference no computador remoto determina como o Windows PowerShell responderá às mensagens de depuração.
Para obter mais informações sobre comandos remotos, consulte about_remote.
$ConfirmPreference
------------------
Determina se o Windows PowerShell pedirá sua confirmação automaticamente antes de executar um cmdlet ou função.
Quando o valor da variável $ConfirmPreference (High, Medium, Low) for menor ou igual ao risco atribuído ao cmdlet ou função (High, Medium, Low), o Windows PowerShell solicitará automaticamente sua confirmação antes de executar o cmdlet ou função.
Se o valor da variável $ConfirmPreference for None, o Windows PowerShell nunca avisará você automaticamente antes de executar um cmdlet ou função.
Para alterar o comportamento de confirmação de todos os cmdlets e funções da sessão, altere o valor da variável $ConfirmPreference.
Para substituir a $ConfirmPreference por um só comando, use o parâmetro Confirm do cmdlet ou da função. Para solicitar a confirmação, use -Confirm. Para suprimir a confirmação, use -Confirm:$false
Valores válidos da $ConfirmPreference:
None: o Windows PowerShell não apresenta um aviso automaticamente. Para solicitar a confirmação de um comando específico, use o parâmetro Confirm do cmdlet ou da função.
Low: o Windows PowerShell solicita a confirmação antes de executar os cmdlets ou as funções com baixo, médio ou alto risco.
Medium: o Windows PowerShell solicita a confirmação antes de executar os cmdlets ou as funções com médio ou alto risco.
High: o Windows PowerShell solicita a confirmação antes de executar os cmdlets ou as funções com alto risco.
EXPLICAÇÃO DETALHADA
Quando as ações de um cmdlet ou função afetarem o sistema significativamente, como as que excluem dados ou usam uma quantidade significativa de recursos do sistema, o Windows PowerShell pode solicitar automaticamente sua confirmação antes de executar a ação.
Por exemplo,
PS> remove-item 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 [S] Suspend [?] Help (default is "Y"):
A estimativa do risco é um atributo do cmdlet ou da função conhecido como seu "ConfirmImpact". Os usuários não podem alterá-la.
Os cmdlets e funções que podem representar um risco para o sistema têm um parâmetro Confirm que podem ser usados para solicitar ou suprimir a confirmação de um só comando.
Já que a maioria dos cmdlets e funções usam o valor de risco padrão (ConfirmImpact) Medium, e o valor padrão da $ConfirmPreference é High, a confirmação automática raramente ocorre. No entanto, você pode ativar a confirmação automática alterando o valor da $ConfirmPreference para Medium ou Low.
EXEMPLOS
Este exemplo mostra o efeito do valor padrão da $ConfirmPreference. O valor High somente confirma os cmdlets e funções de alto risco. Já que a maioria dos cmdlets e funções tem risco médio, eles não são confirmados automaticamente.
PS> $confirmpreference #Get the current value of the
High variable
PS> remove-item temp1.txt #Delete a file
PS> #Deleted without confirmation
PS> remove-item temp2.txt -confirm #Use the Confirm parameter to
request confirmation
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 [S] Suspend [?] Help (default is "Y"):
O exemplo a seguir mostra o efeito da alteração do valor da $ConfirmPreference para Medium. Já que a maioria dos cmdlets e funções tem médio risco, eles são confirmados automaticamente. Para suprimir o prompt de confirmação de um só comando, use o parâmetro Confirm com um valor de $false
PS> $confirmpreference = "Medium" #Change the value of $ConfirmPreference
PS> remove-item temp2.txt #Deleting a file triggers confirmation
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 [S] Suspend [?] Help (default is "Y"):
PS> remove-item temp3.txt -confirm:$false #Use Confirm parameter
to suppress confirmation
PS>
$DebugPreference
------------------
Determina como o Windows PowerShell responde às mensagens de depuração geradas por um script, cmdlet ou provedor, ou por um comando Write-Debug na linha de comando.
Alguns cmdlets exibem mensagens de depuração que, geralmente, são mensagens muito 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 exibi-las alterando o valor da $DebugPreference.
Você também pode usar o parâmetro comum Debug de um cmdlet para exibir ou ocultar as mensagens de depuração de um comando específico. Para obter mais informações, digite: "get-help about_commonparameters".
Valores válidos:
Stop: 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 você deseja continuar. Observe que a adição do parâmetro comum Debug a um comando -- quando o comando é configurado para gerar uma mensagem de depuração — altera o valor da variável $DebugPreference para Inquire.
Continue: exibe a mensagem de depuração e continua a execução.
SilentlyContinue: (padrão) não tem efeito. A mensagem de depuração não é exibida e a execução continua sem interrupção.
EXEMPLOS
Os exemplos a seguir mostram o efeito de alterar os valores da $DebugPreference quando um comando Write-Debug é inserido na linha de comando. A alteração afeta todas as mensagens de depuração, inclusive as geradas pelos cmdlets e scripts. Os exemplos também mostram o uso do parâmetro comum Debug, que exibe ou oculta as mensagens de depuração relacionadas a um só comando.
Este exemplo mostra o efeito do valor padrão, "SilentlyContinue". A mensagem de depuração não é exibida e o processamento continua. O comando final usa o parâmetro Debug para substituir a preferência de um único comando.
PS> $debugpreference # Get the current value of
SilentlyContinue $DebugPreference
PS> write-debug "Hello, World"
PS> # The debug message is not
displayed.
PS> write-debug "Hello, World" -Debug # Use the Debug parameter
DEBUG: Hello, World # The debug message is
is requested. displayed and confirmation
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
Este exemplo mostra o efeito do valor "Continue". O comando final usa o parâmetro Debug com um valor de $false para suprimir a mensagem de um só comando.
PS> $debugpreference = "Continue" # Change the value to "Continue"
PS> write-debug "Hello, World"
DEBUG: Hello, World # The debug message is displayed
PS> and processing continues.
PS> write-debug "Hello, World" -Debug:$false
# Use the Debug parameter with
false.
PS> # The debug message is not
displayed.
Este exemplo mostra o efeito do valor "Stop". O comando final usa o parâmetro Debug com um valor de $false para suprimir a mensagem de um só comando.
PS> $debugpreference = "Stop" #Change the value to "Stop"
PS> write-debug "Hello, World"
DEBUG: Hello, World
Write-Debug : Command execution stopped because the shell variable "DebugPreference" is
set to Stop.
At line:1 char:12
+ write-debug <<<< "Hello, World"
PS> write-debug "Hello, World" -Debug:$false
# Use the Debug parameter with
$false
PS> # The debug message is not
displayed and processing is
not stopped.
Este exemplo mostra o efeito do valor "Inquire". O comando final usa o parâmetro Debug com um valor de $false para suprimir a mensagem de um só comando.
PS> $debugpreference = "Inquire"
PS> write-debug "Hello, World"
DEBUG: Hello, World
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
PS> write-debug "Hello, World" -Debug:$false
# Use the Debug parameter with
$false
PS> # The debug message is not
displayed and processing
continues without interruption.
$ErrorActionPreference
----------------------
Determina como o Windows PowerShell responde a um erro de não finalização (um erro que não interrompe o processamento do cmdlet) na linha de comando ou em um script, cmdlet ou provedor, como os erros gerados pelo cmdlet Write-Error.
Você também pode usar o parâmetro comum ErrorAction de um cmdlet para substituir a preferência de um comando específico.
Valores válidos:
Stop: exibe a mensagem de erro e interrompe a execução.
Inquire: exibe a mensagem de erro e pergunta se você deseja continuar.
Continue (padrão): exibe a mensagem de erro e continua a execução.
Suspend: suspende automaticamente uma tarefa de fluxo de trabalho para permitir mais investigações. Após a investigação, o fluxo de trabalho poderá ser retomado.
SilentlyContinue: não tem efeito. A mensagem de erro não é exibida e a execução continua sem interrupção.
OBSERVAÇÃO:
O valor Ignore do parâmetro comum ErrorAction não é um valor válido da variável $ErrorActionPreference. O valor Ignore destina-se ao uso por comando, e não para uso como uma preferência salva.
Nem a $ErrorActionPreference nem o parâmetro comum ErrorAction afetam o modo como o Windows PowerShell responde a erros de finalização (aqueles que interrompem o processamento do cmdlet).
Para obter mais informações, consulte o parâmetro comum ErrorAction, consulte about_CommonParameters (https://go.microsoft.com/fwlink/?LinkID=113216).
EXEMPLOS
Esses exemplos mostram o efeito dos diferentes valores de $ErrorActionPreference e o uso do parâmetro comum ErrorAction para substituir a preferência de um só comando. O parâmetro ErrorAction tem os mesmos valores válidos da variável $ErrorActionPreference.
Este exemplo mostra o efeito do valor Continue, que é o padrão.
PS> $erroractionpreference
Continue# Display the value of the preference.
PS> write-error "Hello, World"
# Generate a non-terminating error.
write-error "Hello, World" : Hello, World
# The error message is displayed and
execution continues.
PS> write-error "Hello, World" -ErrorAction:SilentlyContinue
# Use the ErrorAction parameter with a
value of "SilentlyContinue".
PS>
# The error message is not displayed and
execution continues.
Este exemplo mostra o efeito do valor SilentlyContinue.
PS> $ErrorActionPreference = "SilentlyContinue"
# Change the value of the preference.
PS> write-error "Hello, World"
# Generate an error message.
PS>
# Error message is suppressed.
PS> write-error "Hello, World" -erroraction:continue
# Use the ErrorAction parameter with a
value of "Continue".
write-error "Hello, World" -erroraction:continue : Hello, World
# The error message is displayed and
execution continues.
Este exemplo mostra o efeito de um erro real. Nesse caso, o comando obtém um arquivo inexistente, nofile.txt. O exemplo também usa o parâmetro comum ErrorAction para substituir a preferência.
PS> $erroractionpreference
SilentlyContinue # Display the value of the preference.
PS> get-childitem -path nofile.txt
PS> # Error message is suppressed.
PS> $ErrorActionPreference = "Continue"
# Change the value to Continue.
PS> get-childitem -path nofile.txt
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:4
+ get-childitem <<<< nofile.txt
PS> get-childitem -path nofile.txt -erroraction SilentlyContinue
# Use the ErrorAction parameter
PS>
# Error message is suppressed.
PS> $ErrorActionPreference = "Inquire"
# Change the value to Inquire.
PS> get-childitem -path nofile.txt
Confirm
Cannot find path 'C:\nofile.txt' because it does not exist.
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): y
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:4
+ get-childitem <<<< nofile.txt
PS> $ErrorActionPreference = "Continue"
# Change the value to Continue.
PS> Get-Childitem nofile.txt -erroraction "Inquire"
# Use the ErrorAction parameter to override
the preference value.
Confirm
Cannot find path 'C:\nofile.txt' because it does not exist.
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
$ErrorView
----------
Determina o formato de exibição das mensagens de erro no Windows PowerShell.
Valores válidos
NormalView (padrão): uma exibição detalhada desenvolvida para a maioria dos usuários. Consiste em uma descrição do erro, no nome do objeto envolvido no erro e nas setas (<<<<) que apontam para as palavras do comando que causaram o erro.
CategoryView: uma exibição sucinta e estruturada projetada para ambientes de produção. O formato é: {Category}: ({TargetName}:{TargetType}):[{Activity}], {Reason}
Para obter mais informações sobre os campos de CategoryView, consulte "ErrorCategoryInfo class" no SDK do Windows PowerShell.
EXEMPLOS
Esses exemplos mostram o efeito dos valores ErrorView.
Este exemplo mostra como um erro é exibido quando o valor de $ErrorView é NormalView. Nesse caso, o comando Get-ChildItem é usado para localizar um arquivo inexistente.
PS> $ErrorView # Verify the value.
NormalView
PS> get-childitem nofile.txt # Find a non-existent file.
Get-ChildItem : Cannot find path 'C:\nofile.txt' because it does not exist.
At line:1 char:14
+ get-childitem <<<< nofile.txt
Este exemplo mostra como o mesmo erro aparece quando o valor de $ErrorView é CategoryView.
PS> $ErrorView = "CategoryView" # Change the value to
CategoryView
PS> get-childitem nofile.txt
ObjectNotFound: (C:\nofile.txt:String) [Get-ChildItem], ItemNotFoundException
Este exemplo demonstra que o valor de ErrorView só afeta a exibição de erro; ele não altera a estrutura do objeto de erro que é armazenado na variável automática $error. Para obter informações sobre a variável automática $error, consulte about_automatic_variables.
Este comando usa o objeto ErrorRecord associado ao erro mais recente da matriz de erros (elemento 0) e formata todas as propriedades do objeto de erro em uma lista.
PS> $error[0] | format-list -property * -force
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, CmdletProviderContext context)
at System.Management.Automation.ChildItemCmdletProviderIntrinsics.Get(String path,
Boolean recurse, 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
$FormatEnumerationLimit
-----------------------
Determina quantos itens enumerados sã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 for menor que o número de itens enumerados, o Windows PowerShell adiciona um sinal de reticências (...) para indicar itens não exibidos.
Valid values: Integers (Int32)
Default value: 4
EXEMPLOS
Este exemplo mostra como usar a variável $FormatEnumerationLimit para melhorar a exibição de itens enumerados.
O comando deste exemplo gera uma tabela que lista todos os serviços em execução no computador em dois grupos; um para serviços em execução de serviços e um para serviços interrompidos. Ele usa um comando Get-Service para obter todos os serviços e, em seguida, enviar os resultados pelo pipeline para o cmdlet Group-Object, que agrupa os resultados pelo status do serviço.
A exibição resultante é uma tabela que lista o status na coluna Name e os processos com esse status na coluna Group. (Para alterar os rótulos das coluna, use uma tabela de hash. Para obter mais informações, consulte os exemplos em "get-help format-table -examples".)
Há um máximo de 4 serviços listados na coluna Group para cada status. Para aumentar o número de itens listados, aumente o valor de $FormatEnumerationLimit para 1000.
Na exibição resultante, a lista da coluna Group será limitada pelo comprimento da linha. No comando final do exemplo, use o parâmetro Wrap de Format-Table para exibir todos os processos em cada grupo de Status.
PS> $formatenumerationlimit # Find the current value
4
PS> get-service | group-object -property status
# List all services grouped by
status
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv...}
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart...}
# The list is truncated after
4 items.
PS> $formatenumerationlimit = 1000
# Increase the limit to 1000.
PS> get-service | group-object -property status
# Repeat the command.
Count Name Group
----- ---- -----
60 Running {AdtAgent, ALG, Ati HotKey Poller, AudioSrv, BITS, CcmExec...
41 Stopped {Alerter, AppMgmt, aspnet_state, ATI Smart, Browser, CiSvc...
PS> get-service | group-object -property status | format-table -wrap
# Add the Wrap parameter.
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}
$Log*Event
----------
As variáveis preferências Log*Event determinam quais tipos de eventos são gravados no log de eventos do Windows PowerShell no Visualizador de Eventos. Por padrão, apenas os eventos de mecanismo e provedor são registrados, mas você pode usar as variáveis preferenciais Log*Event para personalizar seu log, como o log de eventos sobre comandos.
As variáveis preferenciais Log*Event são as seguintes:
$LogCommandHealthEvent: Logs errors and exceptions in command initialization
and processing. Default = $false (not logged).
$LogCommandLifecycleEvent:
Logs the starting and stopping of commands and command pipelines
and security exceptions in command discovery. Default = $false (not logged).
$LogEngineHealthEvent: Logs errors and failures of sessions. Default = $true (logged).
$LogEngineLifecycleEvent: Logs the opening and closing of sessions.
Default = $true (logged).
$LogProviderHealthEvent: Logs provider errors, such as read and write errors,
lookup errors, and invocation errors. Default = $true (logged).
$LogProviderLifecycleEvent: Logs adding and removing of Windows PowerShell providers.
Default = $true (logged). (For information about Windows PowerShell providers, type:
"get-help about_provider".
Para habilitar um Log*Event, digite a variável com um valor de $true, por exemplo:
$LogCommandLifeCycleEvent
- or -
$LogCommandLifeCycleEvent = $true
Para desabilitar um tipo de evento, digite a variável com um valor de $false, por exemplo:
$LogCommandLifeCycleEvent = $false
Os eventos que você habilitar só entram em vigor no console atual do Windows PowerShell. Para aplicar a configuração a todos os consoles, salve as configurações de variável em seu perfil do Windows PowerShell.
$MaximumAliasCount
------------------
Determina quantos aliases são permitidos em uma sessão do Windows PowerShell. O valor padrão, 4096, deve ser suficiente para a maioria dos usos, mas você pode ajustá-lo para atender às suas necessidades.
Valid values: 1024 - 32768 (Int32)
Default: 4096
To count the aliases on your system, type:
(get-alias).count
$MaximumDriveCount
------------------
Determina quantas unidades do Windows PowerShell são permitidas em uma determinada sessão. Isso inclui as unidades de sistema de arquivos e os armazenamentos de dados que são expostos pelos provedores do Windows PowerShell e que aparecem como as unidades Alias: e HKLM:.
Valid values: 1024 - 32768 (Int32)
Default: 4096
To count the aliases on your system, type:
(get-psdrive).count
$MaximumErrorCount
------------------
Determina quantos erros são salvos no histórico de erro da sessão.
Valid values: 256 - 32768 (Int32)
Default: 256
Os objetos que representam cada erro retido são armazenados na variável automática $Error. Essa variável contém uma matriz de objetos de registro de erro, um para cada erro. O erro mais recente é o primeiro objeto da matriz ($Error[0]).
Para contar os erros em seu sistema, use a propriedade Count da matriz $Error. Digite:
$Error.count
Para exibir um erro específico, use a notação de matriz para exibir o erro. Por exemplo, para ver o erro mais recente, digite:
$Error[0]
Para exibir o erro retido mais antigo, digite:
$Error[($Error.Count -1]
Para exibir as propriedades do objeto ErrorRecord, digite:
$Error[0] | format-list -property * -force
Neste comando, o parâmetro Force substitui a formatação especial dos objetos ErrorRecord e os reverte para o formato convencional.
Para excluir todos os erros do histórico de erros, use o método Clear da matriz de erros.
PS> $Error.count
17
PS> $Error.clear()
PS>
PS> $Error.count
0
Para localizar todas as propriedades e métodos de uma matriz de erro, use o cmdlet Get-Member com seu parâmetro InputObject. Quando você redireciona uma coleção de objetos para Get-Member, Get-Member exibe as propriedades e métodos os objetos da coleção. Quando você usa o parâmetro InputObject de Get-Member, Get-Member exibe as propriedades e métodos da coleção.
$MaximumFunctionCount
------------------
Determina quantas funções são permitidas em uma determinada sessão.
Valid values: 1024 - 32768 (Int32)
Default: 4096
Para ver as funções de sua sessão, use a unidade Function: do Windows PowerShell que é exposta pelo provedor de Function do Windows PowerShell. (Para obter mais informações sobre o provedor de Function, digite "get-help function").
Para listar as funções da sessão atual, digite:
get-childitem function:
Para contar as funções da sessão atual, digite:
(get-childitem function:).count
$MaximumHistoryCount
------------------
Determina quantos comandos são salvos no histórico de comandos da sessão atual.
Valid values: 1 - 32768 (Int32)
Default: 4096
Para determinar o número de comandos atuais salvos no histórico de comandos, digite:
(get-history).count
Para ver o comando salvo em seu histórico de sessões, use o cmdlet Get-History. Para obter mais informações, consulte about_History (https://go.microsoft.com/fwlink/?LinkID=113233).
OBSERVAÇÃO: No Windows PowerShell 2.0, o valor padrão da variável $MaximumHistoryCount é 64.
$MaximumVariableCount
------------------
Determina quantas variáveis são permitidas em uma determinada sessão, incluindo as variáveis automáticas, variáveis preferenciais e as variáveis que você cria em comandos e scripts.
Valid values: 1024 - 32768 (Int32)
Default: 4096
Para ver as variáveis de sua sessão, use o cmdlet Get-Variable e os recursos da unidade Variable: do Windows PowerShell e do provedor de Variable do Windows PowerShell. Para obter mais informações sobre o provedor de Variable, digite "get-help variable".
Para localizar o número atual de variáveis do sistema, digite:
(get-variable).count
$OFS
----
Separador de campos de saída. Especifica o caractere que separa os elementos de uma matriz quando a matriz é convertida em uma cadeia de caracteres.
Valid values: Any string.
Default: Space
Por padrão, a variável $OFS não existe e o separador de arquivos de saída é um espaço, mas você pode adicionar essa variável e configurá-la como qualquer cadeia de caracteres.
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 números inteiros é armazenada em uma variável e, em seguida, a variável será convertida em uma cadeia de caracteres.
PS> $array = 1,2,3 # Store an array of integers.
PS> [string]$array # Cast the array to a string.
1 2 3 # Spaces separate the elements
Para alterar o separador, adicione a variável $OFS atribuindo um valor a ela. Para funcionar corretamente, a variável deve ser nomeada como $OFS.
PS> $OFS = "+" # Create $OFS and assign a "+"
PS> [string]$array # Repeat the command
1+2+3 # Plus signs separate the elements
Para restaurar o comportamento padrão, você pode atribuir um espaço (" ") para o valor de $OFS ou excluir a variável. Este comando exclui a variável e, em seguida, verifica se o separador é um espaço.
PS> Remove-Variable OFS # Delete $OFS
PS>
PS> [string]$array # Repeat the command
1 2 3 # Spaces separate the elements
$OutputEncoding
---------------
Determina o método de codificação de caracteres que o Windows PowerShell usa ao enviar texto para outros aplicativos.
Por exemplo, se um aplicativo retornar cadeias de caracteres Unicode para o Windows PowerShell, talvez seja necessário alterar o valor para UnicodeEncoding para enviar os caracteres corretamente.
Valid values: Objects derived from an Encoding class, such as
ASCIIEncoding, SBCSCodePageEncoding, UTF7Encoding,
UTF8Encoding, UTF32Encoding, and UnicodeEncoding.
Default: ASCIIEncoding object (System.Text.ASCIIEncoding)
EXEMPLOS
Este exemplo mostra como fazer com que o comando FINDSTR do Windows funcione no Windows PowerShell em um computador que esteja localizado para um idioma que usa caracteres Unicode, como o chinês. O primeiro comando localiza o valor de $OutputEncoding. Já que o valor é um objeto de codificação, ele exibirá apenas a propriedade EncodingName.
PS> $OutputEncoding.EncodingName # Find the current value
US-ASCII
Neste exemplo, um comando FINDSTR é usado para procurar dois caracteres chineses que estão presentes no arquivo Test.txt. Quando esse comando FINDSTR é executado no prompt de comando de Windows (Cmd.exe), o FINDSTR localiza os caracteres no arquivo de texto. No entanto, quando você executa o mesmo comando FINDSTR no Windows PowerShell, os caracteres não são encontrados porque o Windows PowerShell os envia ao FINDSTR em texto ASCII, e não em texto Unicode.
PS> findstr <Unicode-characters> # Use findstr to search.
PS> # None found.
Para fazer com que o comando funcione no Windows PowerShell, configure o valor de $OutputEncoding como o valor da propriedade OutputEncoding do console, que é baseado na localidade selecionada para o Windows. Já que o OutputEncoding é uma propriedade estática do console, use dois-pontos (::) no comando.
PS> $OutputEncoding = [console]::outputencoding
PS> # Set the value equal to the
OutputEncoding property of the
console.
PS> $OutputEncoding.EncodingName
OEM United States
# Find the resulting value.
Como resultado dessa alteração, o comando FINDSTR localiza os caracteres.
PS> findstr <Unicode-characters>
test.txt: <Unicode-characters>
# Use findstr to search. It find the
characters in the text file.
$ProgressPreference
-------------------
Determina como o Windows PowerShell responde às atualizações de andamento 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 indicam o status de um comando.
Valores válidos:
Stop: 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 exibe a barra de progresso.
Continue (padrão): exibe a barra de progresso e continua a execução.
SilentlyContinue: executa o comando, mas não exibe a barra de progresso.
$PSEmailServer
--------------
Especifica o servidor de email padrão que é usado para enviar mensagens de email. Essa variável preferencial é usada pelos cmdlets que enviam emails, como o cmdlet Send-MailMessage.
$PSDefaultParameterValues
-------------------------
Especifica valores padrão para os parâmetros dos cmdlets e funções avançadas. O valor de $PSDefaultParameterValues é uma tabela de hash na qual a chave consiste no nome do cmdlet e no nome do parâmetro separados por dois-pontos (:) e o valor é um valor padrão personalizado especificado por você.
Essa variável foi introduzida no Windows PowerShell 3.0
Para obter mais informações sobre essa variável preferencial, consulte about_Parameters_Default_Values.
$PSModuleAutoloadingPreference
------------------------------
Habilita e desabilita a importação automática dos módulos na sessão. "All" é o padrão. Independentemente do valor dessa variável, você pode usar o cmdlet Import-Module para importar um módulo.
Os valores válidos são:
Todos Os módulos são importados automaticamente no primeiro uso. Para importar um módulo, obtenha (Get-Command) ou use qualquer comando do módulo.
ModuleQualified
Os módulos somente são importados automaticamente quando um usuário utiliza o nome qualificado de módulo de um comando no módulo. Por exemplo, se o usuário digitar "MyModule\MyCommand", o Windows PowerShell importa o módulo MyModule.
None A importação automática dos módulos é desabilitada na sessão. Para importar um módulo, use o cmdlet Import-Module.
Para obter mais informações sobre a importação automática dos módulos, consulte about_Modules (https://go.microsoft.com/fwlink/?LinkID=144311).
$PSSessionApplicationName
---------------------------
Especifica o nome do aplicativo padrão para um comando remoto que usa a tecnologia WS-Management.
O nome do aplicativo padrão do sistema é WSMAN, mas você pode usar essa variável preferencial para alterar o padrão.
O nome do aplicativo é o último nó de um URI de conexão. Por exemplo, o nome do aplicativo no seguinte exemplo de URI é 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 desse 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 cmdlets New-PSSession, Enter-PSSession ou Invoke-Command.
Essa variável preferencial é configurada no computador local, mas especifica um ouvinte no computador remoto. Se o nome do aplicativo que você especificar não existir no computador remoto, o comando para estabelecer a sessão falhará.
$PSSessionConfigurationName
---------------------------
Especifica a configuração de sessão padrão que é usada para PSSessions criadas na sessão atual.
Essa variável preferencial é configurada 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:
https://schemas.microsoft.com/PowerShell/microsoft.PowerShell
indica a configuração de sessão Microsoft.PowerShell no computador remoto.
Se você especificar somente um nome de configuração, o URI de esquema a seguir será anexado:
https://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-PSSession ou Invoke-Command.
Você pode alterar o valor dessa variável a qualquer momento. Quando fizer isso, lembre-se de que a configuração da sessão que você selecionar deve existir no computador remoto. Se ela não existir, o comando para criar uma sessão que usa a configuração de sessão falhará.
Essa variável preferencial não determina quais configurações de sessão local são usadas quando os usuários remotos criam uma sessão que se conecta a esse computador. No entanto, você pode usar as permissões das configurações de sessão local para determinar quais usuários podem usá-las.
$PSSessionOption
----------------
Estabelece os valores padrão para opções avançadas de usuário 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 de PSSessionOption (System.Management.Automation.Remoting.PSSessionObject). Cada propriedade do objeto representa uma opção de sessão. Por exemplo, a propriedade NoCompression desabilita a 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 exibido a seguir.
MaximumConnectionRedirectionCo For descriptions of these options, see the help topic for the unt : 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, consulte o tópico de ajuda para o cmdlet New-PSSessionOption.
Para alterar o valor da variável preferencial $PSSessionOption, use o cmdlet New-PSSessionOption para criar um objeto PSSessionOption com os valores de opção que preferir. Salve a saída em uma variável chamada $PSSessionOption.
Por exemplo,
$PSSessionOption = New-PSSessionOption -NoCompression
Para usar a variável preferencial $PSSessionOption em cada sessão do Windows PowerShell, adicione um comando New-PSSessionOption que cria a variável $PSSessionOption para seu perfil do Windows PowerShell.
Você também pode configurar opções personalizadas para uma determinada sessão remota. As opções que você configurar têm precedência sobre os padrões do sistema e o valor da variável preferencial $PSSessionOption.
Para configurar 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 nos cmdlets que criam uma sessão, como Invoke-Command, Enter-PSSession e New-PSSession.
Para obter mais informações sobre o cmdlet New-PSSessionOption, consulte o tópico da ajuda para New-PSSessionOption. Para obter mais informações sobre sessões e comandos remotos, consulte about_Remote e about_PSSessions. Para obter mais informações sobre como usar um perfil, consulte about_Profiles.
$VerbosePreference
------------------
Determina como o Windows PowerShell responde às mensagens detalhadas geradas por um script, cmdlet ou provedor, como as mensagens geradas pelo cmdlet Write-Verbose. Normalmente, as mensagens detalhadas descrevem as ações realizadas para executar um comando.
Por padrão, as mensagens detalhadas não são exibidas, mas você pode alterar esse comportamento alterando o valor de $VerbosePreference.
Você também pode usar o parâmetro comum Verbose de um cmdlet para exibir ou ocultar as mensagens detalhadas de um comando específico. Para obter mais informações, digite: "get-help about_commonparameters".
Valores válidos:
Stop: exibe a mensagem detalhada e uma mensagem de erro e, em seguida, interrompe a execução.
Inquire: exibe a mensagem detalhada e, em seguida, exibe um prompt que pergunta se você deseja continuar.
Continue: exibe a mensagem detalhada e, em seguida, continua a execução.
SilentlyContinue (padrão): não exibe a mensagem detalhada. Continua a execução.
EXEMPLOS
Esses exemplos mostram o efeito dos diferentes valores de $VerbosePreference e o uso do parâmetro comum Verbose para substituir o valor preferencial.
Este exemplo mostra o efeito do valor SilentlyContinue, que é o padrão.
PS> $VerbosePreference # Find the current value.
SilentlyContinue
PS> Write-Verbose "Verbose message test."
PS> # Write a verbose message.
# Message is not displayed.
PS> Write-Verbose "Verbose message test." -verbose
VERBOSE: Verbose message test.
# Use the Verbose parameter.
Este exemplo mostra o efeito do valor Continue.
PS> $VerbosePreference = "Continue"
# Change the value to Continue.
PS> Write-Verbose "Verbose message test."
# Write a verbose message.
VERBOSE: Verbose message test.
# Message is displayed.
PS> Write-Verbose "Verbose message test." -verbose:$false
# Use the Verbose parameter with
a value of $false.
PS>
# Message is not displayed.
Este exemplo mostra o efeito do valor Stop.
PS> $VerbosePreference = "Stop"
# Change the value to Stop.
PS> Write-Verbose "Verbose message test."
# Write a verbose message.
VERBOSE: Verbose message test.
Write-Verbose : Command execution stopped because the shell variable "VerbosePreference"
is set to Stop.
At line:1 char:14
+ Write-Verbose <<<< "Verbose message test."
PS> Write-Verbose "Verbose message test." -verbose:$false
# Use the Verbose parameter with
a value of $false
PS>
# Message is not displayed.
Este exemplo mostra o efeito do valor Inquire.
PS> $VerbosePreference = "Inquire"
# Change the value to Inquire.
PS> Write-Verbose "Verbose message test."
VERBOSE: Verbose message test.
# Write a verbose message.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): y
PS>
PS> Write-Verbose "Verbose message test." -verbose:$false
# Use the Verbose parameter.
PS>
# Message is not displayed.
$WarningPreference
------------------
Determina como o Windows 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.
Você também pode usar o parâmetro comum WarningAction de um cmdlet para determinar como o Windows PowerShell responde a avisos de um determinado comando. Para obter mais informações, digite: "get-help about_commonparameters".
Valores válidos:
Stop: 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.
Continue (padrão): exibe a mensagem de aviso e, em seguida, continua a execução.
SilentlyContinue: não exibe a mensagem de aviso. Continua a execução.
EXEMPLOS
Esses exemplos mostram o efeito dos diferentes valores de $WarningPreference e o uso do parâmetro comum WarningAction para substituir o valor preferencial.
Este exemplo mostra o efeito do valor Continue, que é o padrão.
PS> $WarningPreference # Find the current value.
Continue
# Write a warning message.
PS> Write-Warning "This action can delete data."
WARNING: This action can delete data.
# Use the WarningAction parameter to
# suppress the warning for this command
PS> Write-Warning "This action can delete data." -warningaction silentlycontinue
Este exemplo mostra o efeito do valor SilentlyContinue.
PS> $WarningPreference = "SilentlyContinue"
# Change the value to SilentlyContinue.
PS> Write-Warning "This action can delete data."
PS> # Write a warning message.
PS> Write-Warning "This action can delete data." -warningaction stop
# Use the WarningAction parameter to stop
# processing when this command generates a
# warning.
WARNING: This action can delete data.
Write-Warning : Command execution stopped because the shell variable
"WarningPreference" is set to Stop.
At line:1 char:14
+ Write-Warning <<<< "This action can delete data." -warningaction stop
Este exemplo mostra o efeito do valor Inquire.
PS> $WarningPreference = "Inquire"
# Change the value to Inquire.
PS> Write-Warning "This action can delete data."
# Write a warning message.
WARNING: This action can delete data.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): y
PS>
PS> Write-Warning "This action can delete data." -warningaction silentlycontinue
PS> # Use the WarningAction parameter to change the
# response to a warning for the current command.
Este exemplo mostra o efeito do valor Stop.
PS> $WarningPreference = "Stop"
# Change the value to Stop.
PS> Write-Warning "This action can delete data."
# Write a warning message.
WARNING: This action can delete data.
Write-Warning : Command execution stopped because the shell variable
"WarningPreference" is set to Stop.
At line:1 char:14
+ Write-Warning <<<< "This action can delete data."
PS> Write-Warning "This action can delete data." -warningaction inquire
WARNING: This action can delete data.
Confirm
Continue with this operation?
[Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"):
# Use the WarningAction parameter to change the
# response to a warning for the current command.
$WhatIfPreference
------------------
Determina se o parâmetro WhatIf é habilitado automaticamente para cada comando que dá suporte a ele. Quando o WhatIf é habilitado, o cmdlet informa o efeito esperado do comando, mas não o executa.
Valores válidos:
0 (padrão): WhatIf não é habilitado automaticamente. Para habilitá-lo manualmente, use o parâmetro WhatIf do comando.
1: WhatIf é habilitado automaticamente em qualquer comando que dá suporte a ele. Os usuários podem usar o comando WhatIf com um valor False para desabilitá-lo manualmente (WhatIf:$false).
EXPLICAÇÃO DETALHADA
Quando um cmdlet dá suporte a WhatIf, o cmdlet informa o efeito esperado do comando, em vez de executá-lo. Por exemplo, em vez de excluir o arquivo test.txt em resposta a um comando Remove-Item, o Windows PowerShell informa o que ele excluiria. Um comando Get-Childitem subsequente confirma que o arquivo não foi excluído.
PS> remove-item test.txt
What if: Performing operation "Remove-Item" on Target "Item:
C:\test.txt
PS> get-childitem test.txt
Directory: Microsoft.PowerShell.Core\FileSystem::C:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 7/29/2006 7:15 PM 84 test.txt
EXEMPLOS
Esses exemplos mostram o efeito dos diferentes valores de $WhatIfPreference. Eles também mostram como usar o parâmetro de cmdlet WhatIf para substituir o valor preferencial de um comando específico.
Este exemplo mostra o efeito do valor 0 (não habilitado), que é o padrão.
PS> $whatifpreference
0 # Check the current value.
PS> get-childitem test.txt | format-list FullName
FullName : C:\test.txt
# Verify that the file exists.
PS> remove-item test.txt
PS> # Delete the file.
PS> get-childitem test.txt | format-list -property FullName
# Verify that the file is deleted.
Get-ChildItem : Cannot find path 'C:\test.txt' because it does not exist.
At line:1 char:14
+ get-childitem <<<< test.txt | format-list fullname
Este exemplo mostra o efeito de usar o parâmetro WhatIf quando o valor de $WhatIfPreference é 0.
PS> get-childitem test2.txt | format-list -property FullName
FullName : C:\test2.txt
# Verify that the file exists.
PS> remove-item test2.txt -whatif
What if: Performing operation "Remove File" on Target "C:\test2.txt".
# Use the WhatIf parameter
PS> get-childitem test2.txt | format-list -property FullName
FullName : C:\test2.txt
# Verify that the file was not deleted
Este exemplo mostra o efeito do valor 1 (WhatIf habilitado). Quando você usar Remove-Item para excluir um cmdlet, p Remove-Item exibe o caminho para o arquivo que seria excluído, mas não exclui o arquivo.
PS> $whatifpreference = 1
PS> $whatifpreference
1 # Change the value.
PS> remove-item test.txt
What if: Performing operation "Remove File" on Target "C:\test.txt".
# Try to delete a file.
PS> get-childitem test.txt | format-list FullName
FullName : C:\test.txt
# Verify that the file exists.
Este exemplo mostra como excluir um arquivo quando o valor de $WhatIfPreference é 1. Ele usa o parâmetro WhatIf com um valor de $false.
PS> remove-item test.txt -whatif:$false
# Use the WhatIf parameter with $false.
Este exemplo demonstra que alguns cmdlets dão suporte ao comportamento de WhatIf, enquanto outros não. Neste exemplo, no qual o valor de $WhatIfPreference é 1 (habilitado), um comando Get-Process, que não dá suporte a WhatIf, é executado, mas um comando Stop-Process executa o comportamento WhatIf. Você pode substituir o comportamento de WhatIf do comando Stop-Process usando o parâmetro WhatIf com um valor de $false.
PS> $whatifpreference = 1
# Change the value to 1.
PS> get-process winword
# A Get-Process command completes.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
234 8 6324 15060 154 0.36 2312 WINWORD
PS> stop-process -name winword
What if: Performing operation "Stop-Process" on Target "WINWORD (2312)".
# A Stop-Process command uses WhatIf.
PS> stop-process -name winword -whatif:$false
PS> # WhatIf:$false overrides the preference.
PS> get-process winword
Get-Process : Cannot find a process with the name 'winword'. Verify the process name
and call the cmdlet again.
At line:1 char:12
+ get-process <<<< winword
# Verify that the process is stopped.
CONSULTE TAMBÉM
about_Automatic_Variables
about_CommonParameters
about_Environment_Variables
about_Profiles
about_Remote about_Scopes