Usar o escopo de variável em scripts do Windows PowerShell
Você pode esperar que a $computer variável definida dentro de uma função seja acessível no script após a conclusão da função. Esse não é o caso. As variáveis têm um escopo específico que limita a forma como interagem com outros escopos.
A tabela a seguir descreve os três escopos e como eles afetam o uso da variável.
Tabela 1: Escopos
| Âmbito | Descrição |
|---|---|
| Global | As variáveis definidas no prompt do PowerShell estão disponíveis para todos os scripts iniciados a partir desse prompt, mas não para outros prompts ou instâncias do ISE. |
| Script | As variáveis definidas em um script estão disponíveis para todas as funções nesse script. Se você criar uma variável de escopo de script com o mesmo nome de uma variável global, o PowerShell criará uma nova variável no escopo do script e o valor de escopo de script terá precedência. |
| Função | As variáveis definidas em uma função não são compartilhadas com outras funções nem com o script. Se você criar uma variável de escopo de função com o mesmo nome de uma variável de script ou global, o PowerShell criará uma nova variável no escopo da função. |
Observação
O ISE do Windows PowerShell não está mais em desenvolvimento ativo de recursos e só dá suporte ao Windows PowerShell 5.1 e anteriores. Para o desenvolvimento de scripts, Visual Studio Code com a extensão do PowerShell é o ambiente de script recomendado.
Observação
Evite usar o mesmo nome de variável em escopos diferentes.
Além de examinar uma variável em um escopo de nível superior, você também pode modificar essa variável fazendo referência especificamente ao escopo da variável ao modificá-lo. Para modificar uma variável de escopo do script de uma função, use a seguinte sintaxe:
$script:var = "Modified from function"
Evite modificar variáveis entre escopos, pois ela pode criar confusão. Em vez disso, defina a variável de escopo do script igual à saída da função. Se os dados na função estiverem em uma variável, você poderá usar Return() para passá-los de volta para o script.
Veja a seguir um exemplo de como usar Return() no final de uma função para passar um valor variável de volta para o escopo do script:
Return($users)
Observação
O uso de Return() em uma função adiciona os dados especificados ao pipeline de dados que estão sendo retornados, mas não substitui os dados existentes no pipeline. Como parte do desenvolvimento do script, você precisa verificar exatamente quais dados estão sendo retornados por uma função.