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 answers

2
JaredPar 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
mjsr 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
Shay Levy On

Consider using an environment variable.

2
icnivad On

You could store your data in your PowerShell Profile.

0
douglas 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
JPB 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
Roosevelt Honaker 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