PowerShell
Este artigo do TechNet descreve o básico.
Esta resposta descreve como obter variáveis de ambiente do sistema versus usuário (o que foi sugerido apenas no primeiro artigo). "Machine"
para o sistema, "User"
para o usuário atual e "Process"
para o processo atual que funciona para obter a combinação final do sistema / usuário.
A concatenação do PowerShell é comentada em essa pergunta e suas respostas . Você pode montar strings usando +
para concatenar ou usar substituição como em "{0} {1}" -f "Hello","World"
.
Os parênteses são usados para agrupar construções.
As variáveis são não tipificadas, não declaradas e começam com $
.
Juntando tudo, você recebe algo como:
$path = [Environment]::GetEnvironmentVariable("PATH","User")
[Environment]::SetEnvironmentVariable("PATH",$path+";C:\Temp","User")
Ou como um verso:
[Environment]::SetEnvironmentVariable("PATH",([Environment]::GetEnvironmentVariable("PATH","User"))+";C:\Temp","User")
Este artigo descreve como excluir variáveis de ambiente ( $null
é especial variável):
[Environment]::SetEnvironmentVariable("MyTestVariable",$null,"User")
As alterações nas variáveis de ambiente feitas dessa maneira estão disponíveis globalmente.
CMD
reg.exe
pode adicionar, alterar e excluir entradas do registro. Variáveis de ambiente vivem no registro. Esta resposta fala sobre o uso de reg
para excluir variáveis de ambiente.
Para variáveis de ambiente do usuário:
reg DELETE HKCU\Environment /v envvarname
Para variáveis de ambiente do sistema:
reg DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v envvarname
( HKCU
é intercambiável com HKEY_CURRENT_USER
. HKLM
é intercambiável com HKEY_LOCAL_MACHINE
.)
(Observe que CMD
trata as variáveis de ambiente vazias da mesma forma que as variáveis de ambiente inexistentes. Eu entendo, no entanto, que você está tentando limpar a variável do sistema.)