Atmosphere is a Powershell Core module for pushing, popping, getting, setting, updating, and importing environment variables. It currently works on Windows, macOS, and Linux. It's released under the MIT License.
Atmosphere is currently published on the Powershell Gallery:
Install-Module -Name Atmosphere
If you are not in an administrator powershell instance, and lack the ability to
launch one, simply install into CurrentUser
scope.
Install-Module -Name Atmosphere -Scope CurrentUser
Implicit module importing should handle the rest.
Atmosphere is written directly in C# for performance, and as an example for
others who want to know how to write so-called "native" Powershell Modules. To
build, simply use the dotnet
command.
dotnet build --nologo --configuration Release
Atmosphere provides several cmdlets for use
The most basic commands are setting and getting environment variables
Set-EnvironmentVariable -Name <String> -Value <String> -Scope {Process|Machine|User}
Sets the environment variable -Name
to the -Value
given.
Use Set-EnvironmentPathVariable
if setting multiple filepaths is desired.
If -Scope
is not Process
and the current operating system is not Windows,
it will be set to Process
. The default value for -Scope
is Process
, and
rarely needs to be specified.
Get-EnvironmentVariable -Name <Name> -Scope {Process|Machine|User}
Returns the value of the Environment Variable -Name
. If no value is set, or
the variable does not exist, an empty string is returned.
See Set-EnvironmentVariable
for information on the -Scope
parameter.
There are some environment variables where a path separator is provided. Having to constantly split these apart can be time consuming and as a result Atmosphere provides both a generalized command to receive any environment variable as a list of paths or specific well known environment variables as a list of paths.
Get-EnvironmentPath -Name PSModulePath
The following command (Get-PSModulePath
) is functionally the same as the
example found above.
Get-PSModulePath
Atmosphere has an internal "stack" of environment variable states. This allows users to push and pop their current state to permit temporary modifications to and rollbacks of the set of environment variables in a given powershell instance.
Push-Environment
Set-EnvironmentVariable -Name DOCKER_BUILDKIT -Value 1
<# Put Docker Related Commands Here #>
Pop-Environment
Atmosphere provides a small command to permit appending (or prepending) data to an environment variable. Additionally, we can also "import" environments, such as dotenv (.env), JSON, and PSD1 (powershell data) files.
Please note that at the moment we only support importing from a JSON file,
where the expected layout is { "key": "value" }
.