do PowerShell ' Variáveis Automáticas ” são essenciais para o gerenciamento do sistema, automação e atividades de script. Essas variáveis são incorporadas pelo tempo de execução do PowerShell e servem como espaços reservados para armazenar e fazer referência a informações específicas durante a execução de um script ou comando. Compreender e utilizar essas variáveis automáticas de forma eficaz pode aumentar muito a eficiência e a funcionalidade dos scripts do PowerShell.
Este artigo tem como objetivo explorar o conceito de “Variáveis automáticas” no PowerShell, seu significado e como elas podem ser aproveitadas em vários cenários.
O que são variáveis automáticas no PowerShell?
Para começar, vamos nos aprofundar na definição de “ Variáveis Automáticas ”. Essas variáveis são predefinidas e criadas automaticamente pelo PowerShell durante a execução do script. Eles servem a propósitos diferentes, incluindo fornecer informações sobre o sistema, argumentos de linha de comando, detalhes relacionados ao script e muito mais.
O PowerShell oferece várias “Variáveis automáticas” e cada uma delas serve a um propósito distinto na execução do script. Essas variáveis são as seguintes:
1. $PSVersionTable
Uma das variáveis automáticas fundamentais no PowerShell é “ $PSVersionTable ”. Essa variável permite que os desenvolvedores de script verifiquem a versão do PowerShell que está sendo utilizada, o que pode ser crucial ao considerar a compatibilidade e disponibilidade de determinados recursos e funcionalidades.
As seguintes propriedades estão associadas a esta variável:
PSVersão: Retorna o número da versão do PowerShell.
Edição PSE: Para PowerShell 4 e versões anteriores, bem como PowerShell 5.1 em versões do Windows com todos os recursos, essa propriedade tem o valor “Desktop”. Essa característica tem o valor do Core para PowerShell 6 e posterior, bem como do Windows PowerShell 5.1 para edições de baixo consumo, como Windows Nano Server ou Windows IoT.
GitCommitId: Busca o ID de confirmação do GitHub dos arquivos de origem.
OS: Registra informações sobre o sistema de computador que o PowerShell está usando.
Plataforma: Retorna a plataforma de suporte do sistema operacional. O Unix tem valor no Linux e no macOS. Confira $IsMacOs e $IsLinux.
Versões compatíveis com PS: As versões do PowerShell compatíveis com a versão atual são retornadas.
PSRemotingProtocolVersion: Retorna o número da versão do protocolo de gerenciamento remoto do PowerShell.
SerializaçãoVersão: Retorna a versão do método de serialização.
WSManStackVersão: Retorna o número da versão da pilha WS-Management.
$ PSVersionTable
2. $Args
Outra variável automática essencial no PowerShell é “ $Args ”, que contém uma matriz de argumentos de linha de comando passados para um script ou função. Essa variável capacita os desenvolvedores a processar e manipular os argumentos fornecidos dinamicamente em seus scripts.
Ao definir uma função, você pode usar a palavra-chave “param” para declarar os parâmetros ou pode adicionar uma lista de parâmetros separados por vírgulas entre parênteses após o nome da função. A variável “$Args” de uma ação de evento armazena objetos que servem como espaços reservados para os parâmetros do evento que está sendo tratado:
para cada ( $arg em $Args ) {Host de gravação $arg
}
3. $MyInvocation
O ' $MyInvocation ” fornece dados cruciais de segundo plano sobre o script ou procedimento que está sendo executado no momento. Ele oferece propriedades como o nome do script, o número da linha do script e se o script está sendo executado interativamente ou não. Essas propriedades ajudam os desenvolvedores de script a implementar a lógica de ramificação, definir mecanismos de tratamento de erros ou gerar logs e relatórios significativos:
$ MinhaInvocação
4. $Erro
Uma variável automática menos conhecida “ $Erro ”, captura efetivamente quaisquer mensagens de erro ou exceções que ocorrem durante a execução do script. “$Error” pode ser acessado para recuperar detalhes de erro específicos, como mensagens de exceção, rastreamentos de pilha ou códigos de erro, permitindo análise e depuração detalhadas.
O erro mais recente é representado pelo primeiro objeto de erro no array “ $Erro[0] “. Você pode usar a opção comum ErrorAction com o valor “Ignore” para impedir que os erros sejam adicionados ao array “$Error”.
Suponha que digitamos um comando preciso:
ip [ onfig
Agora, se entrarmos no cmdlet “$Error”:
$ Erro
5. $PSCmdlet
Ao trabalhar com módulos do PowerShell, a variável automática “ $PSCmdlet ” entra em vigor. Essa variável fornece acesso à instância atual do cmdlet ou função que está sendo invocada, facilitando a interação direta com suas propriedades e métodos.
Usando “$PSCmdlet”, desenvolvedores de script avançados podem ajustar e aprimorar o comportamento dos módulos estendendo ou modificando as funcionalidades integradas. Você pode usar os atributos e métodos do objeto em seu cmdlet ou código de função em resposta aos critérios de uso:
função typeof-psCmdlet {[ cmdletBinding ( ) ] parâmetro ( )
eco 'tipo de ` $psCmdlet é $($psCmdlet.GetType() .Nome completo)'
}
typeof-psCmdlet
Além das variáveis mencionadas, o PowerShell abrange variáveis automáticas como $HOME, $PROFILE, $PWD e muitas outras, que atendem a diferentes propósitos, como acessar entradas, rastrear erros, recuperar informações do ambiente, gerenciar parâmetros e muito mais. Essas variáveis estão listadas abaixo:
Variáveis Automáticas | Descrição |
$$ | Contém o último token na linha anterior recebida pela sessão do PowerShell. |
$? | Armazena o status de execução do último comando. |
$^ | Contém o primeiro token da última linha recebida pela sessão. |
$_ | Representa o objeto atual no pipeline. |
$ConsoleFileName | Contém o caminho do arquivo de console (.psc1) usado mais recentemente na sessão. |
$EnabledExperimentalRecursos | Contém uma lista dos recursos experimentais ativados. |
$Evento | Contém um objeto “PSEventArgs” que representa o evento que está sendo processado. |
$EventArgs | Contém o primeiro argumento do evento que está sendo processado. |
$EventSubscriber | Representa o assinante do evento que está sendo processado. |
$ExecutionContext | Representa o contexto de execução do host do PowerShell. |
$falso | Representa o valor booleano “False”. |
$foreach | Contém o enumerador de um loop “for-Each”. |
$HOME | Contém o caminho completo do diretório inicial do usuário. |
$Host | Representa o aplicativo host atual para PowerShell. |
$input | Serve como um enumerador para todas as entradas passadas para uma função ou script. |
$IsCoreCLR | Indica se a sessão está sendo executada no .NET Core Runtime (CoreCLR). |
$IsLinux | Indica se a sessão está sendo executada em um sistema operacional Linux. |
$IsMacOS | Indica se a sessão está sendo executada em um sistema operacional MacOS. |
$IsWindows | Identifica se a sessão está sendo executada em um sistema operacional Windows. |
$LASTEXITCODE | Armazena o código de saída do último programa nativo ou script do PowerShell. |
$partidas | Contém strings correspondentes dos operadores “-match” e “-notmatch”. |
$NestedPromptLevel | Rastreia o nível de prompt atual em comandos aninhados ou cenários de depuração. |
$nulo | Representa um valor nulo ou vazio. |
$PID | Contém o identificador de processo (PID) da sessão do PowerShell. |
$PERFIL | Contém o caminho completo do perfil do PowerShell para o usuário atual e o aplicativo host. |
$PSBoundParameters | Contém um dicionário de parâmetros passados para um script ou função e seus valores. |
$PSCommandPath | Contém o caminho completo e o nome do arquivo do script que está sendo executado. |
$PSCulture | Reflete a cultura do atual espaço de execução do PowerShell. |
$PSEdition | Contém as informações da edição do PowerShell. |
$PSHOME | Contém o caminho completo do diretório de instalação do PowerShell. |
$PSItem | Igual a $_, representa o objeto atual no pipeline. |
$PSScriptRoot | Contém o caminho completo do diretório pai do script em execução. |
$PSSenderInfo | Contém informações sobre o usuário que iniciou a PSSession. |
$PSUICultura | Reflete a cultura da interface do usuário (IU) configurada no sistema operacional. |
$PWD | Representa o diretório de trabalho atual da sessão do PowerShell. |
$Remetente | Contém o objeto que gerou um evento. |
$ShellId | Contém o identificador do shell atual. |
$StackTrace | Armazena o rastreamento de pilha para o erro mais recente. |
$interruptor | Contém o enumerador da instrução “Switch”. |
$este | Refere-se à instância de uma classe em blocos de script que estendem classes. |
$true | Representa o valor booleano “True”. |
Todas as “variáveis automáticas” no PowerShell podem ser encontradas executando o comando abaixo:
Get-Variable
Conclusão
“ Variáveis Automáticas ” formam a espinha dorsal dos scripts do PowerShell, permitindo que os desenvolvedores obtenham informações sobre o sistema, argumentos de linha de comando, contexto de execução do script e muito mais. Aproveitando variáveis automáticas como “$PSVersionTable”, “$Args”, “$MyInvocation”, “$Error” e outras, os desenvolvedores de scripts do PowerShell podem criar práticas simplificadas de administração do sistema.