Permanent PowerShell variable

15.2k Views Asked by At

Is there a way to define a variable in PowerShell so when I open up a new PowerShell window, it'll keep the same value?

I'll need this variable to keep its value, because I'll be needing to reboot my server every now and then, and I don't want to lose these values.

7

There are 7 best solutions below

2
On BEST ANSWER

Have you considered other alternate sources for storing the variable? Variables in PowerShell are generally meant to persist only as long as the PowerShell session itself. However there are several other sources that PowerShell can easily query that are meant to persist longer. In particular the registry and file system.

For a variable meant to persist across reboots I would store it in the registry and then use PowerShell to query that value (perhaps cache in a session variable).

0
On

To store:

$variable|export-clixml -path $Location

To retrieve:

$variable = import-clixml -path $Location

Put that in a function if you want it, something like:

function LoadTHEvariable($location)
{
    $global:variable = import-clixml -path $Location
}

$location obviously contains the place in the filesystem where do you want to store the variable.

2
On

Consider using an environment variable.

2
On

You could store your data in your PowerShell Profile.

0
On

The Add-Content cmdlet has you covered. The star here is the powershell profile, accessed as $profile[.host] which is a pre-defined variable to the path where state information for the user is(permanently) stored in a rom file. The -Force at the end is key so as to cover the case where the $profile variable is not created yet.

Add-Content -Path $profile -Value $directorysnapshot -Force
0
On

A variable is a container and you can create tell powershell that you want that container to be a file. ${c:\variableToKeep.txt} = 'I want to keep this value'

Everytime you want to get the value inside just call the variable ${c:\variableToKeep.txt}

You can put this file in a share folder or copy it between machines, and you can read and write that variable on any machine.

0
On

To create the variable in every PowerShell session that you start, add the variable to your PowerShell profile. You can add this command to your PowerShell profile by opening the $PROFILE file in a text editor, such as notepad.exe. (If the file doesn't exist, create it where the variable says it should be.)

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_variables?source=recommendations&view=powershell-7.2#saving-variables