Discussão
Em ficheiros batch, as variáveis de ambiente são a principal forma de armazenar informação temporária ou de transferir informação entre ficheiros batch. As variáveis PowerShell e parâmetros de script são formas mais eficazes de resolver esses problemas, mas as variáveis de ambiente continuam a fornecer uma forma útil de aceder a definições comuns do sistema, tais como o caminho do sistema, directório temporário, nome de domínio, nome de utilizador, e mais.
PowerShell superfícies variáveis de ambiente através do seu fornecedor de ambiente: um contentor que lhe permite trabalhar com variáveis de ambiente tal como trabalharia com itens no sistema de ficheiros ou fornecedores de registo. Por defeito, PowerShell define um env: drive (muito semelhante a c: ou d:) que fornece acesso a esta informação:
PS > dir env:Name Value---- -----Path c:\progra~1\ruby\bin;C:\WINDOWS\system32;C:\TEMP C:\DOCUME~1\Lee\LOCALS~1\TempSESSIONNAME ConsolePATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;(...)
Desde que é um drive PowerShell regular, a forma completa de obter o valor de uma variável de ambiente é semelhante a isto:
PS > Get-Content Env:\UsernameLee
Quando se trata de variáveis de ambiente, no entanto, essa é uma sintaxe que quase nunca precisará de usar, devido ao suporte do PowerShell para o Get-Content
e Set-Content
sintaxe da variável, o que encurta esse valor:
PS > $env:UsernameLee
Esta sintaxe funciona para todas as unidades mas é utilizada mais frequentemente para aceder a variáveis de ambiente. Para mais informações sobre esta sintaxe, ver Access Information About Your Command’s Invocation.
Algumas variáveis de ambiente obtêm de facto os seus valores a partir de uma combinação de dois locais: as definições de toda a máquina e as definições do utilizador actual. Se quiser aceder aos valores das variáveis de ambiente especificamente configuradas ao nível da máquina ou do utilizador, utilize o método ::GetEnvironmentVariable()
. Por exemplo, se tiver definido um directório de ferramentas no seu caminho, poderá ver:
PS > ::GetEnvironmentVariable("Path", "User")d:\lee\tools
Para definir permanentemente estas variáveis de ambiente específicas da máquina ou do utilizador, utilize o método ::SetEnvironmentVariable()
:
::SetEnvironmentVariable(<name>, <value>, <target>
)
O parâmetro target
define onde esta variável deve ser armazenada: User
para o utilizador actual e Machine
para todos os utilizadores da máquina. Por exemplo, para adicionar permanentemente o seu directório de ferramentas ao seu caminho:
$pathElements = @(::GetEnvironmentVariable("Path", "User") -split ";")$pathElements += "d:\tools"$newPath = $pathElements -join ";"::SetEnvironmentVariable("Path", $newPath, "User")
Para mais informações sobre a modificação do caminho do sistema, ver Modificar o caminho do utilizador ou do sistema.
Para mais informações sobre o Get-Content
e Set-Content
sintaxe variável, ver Variáveis. Para mais informações sobre o fornecedor do ambiente, digite Get-Help About_Environment
.