2012-01-13 25 views
5

PowerShellで変数を定義する方法はありますか?新しいPowerShellウィンドウを開くと、同じ値が維持されますか?恒久PowerShell変数

この値を保持するにはこの変数が必要です。なぜなら、毎回サーバーを再起動する必要があり、これらの値を失いたくないからです。

+0

あなたは永遠に永続する必要がある変数に格納していますか? – JNK

+2

まあ、ディレクトリの下にファイルのリストを持つ変数があります。たとえば、$ directorysnapshot = dir -r 'path'という変数があり、そのディレクトリの下にあるすべてのファイルのリストがあり、同じリストにしたいと思います。いくつかのファイルが変更されている可能性があるので、起動時にその変数を再定義することはできません。 – GwFiles

答えて

1

変数を保存する他の代替ソースについて考えましたか? PowerShellの変数は、通常、PowerShellセッション自体の間だけ持続することを意味します。しかし、PowerShellが簡単に問い合わせることができる他の情報源がいくつかありますが、これらの情報源はより長く持続することを意図しています。特に、レジストリとファイルシステム。

再起動しても変数が保持されるようにするには、レジストリに保存してからPowerShellを使用してその値(セッション変数のキャッシュなど)をクエリします。

$variable|export-clixml -path $Location 

を取得するには::ストアに

+0

まあ、ディレクトリの下にファイルのリストを持つ変数があります。たとえば、$ directorysnapshot = dir -r 'path'という変数があり、そのディレクトリの下にあるすべてのファイルのリストがあり、同じリストにしたいと思います。いくつかのファイルが変更されている可能性があるため、起動時にその変数を再定義することはできません。 – GwFiles

+1

@ GwFilesなぜレジストリが悪いところですが、永続化する必要がある場合は?起動時に結果が保持され、再ロードされる可能性があります。 – JaredPar

3

PowerShell Profileにデータを保存することができます。

+0

これは通常、私が行うことです。私はsvnのURLなどのようなものを保存する傾向があるので、私は簡単にマージを行うことができます。 'svn merge -c 100 $ someBranchName' – mwilson

+0

まあ、ディレクトリの下にファイルのリストを持つ変数があります。たとえば、 という変数があります。$ directorysnapshot = dir -r 'path' そのディレクトリの下にあるすべてのファイルのリストがあり、同じリストにしたいと思います。いくつかのファイルが変更されている可能性があるため、起動時にその変数を再定義することはできません。 – GwFiles

5

$variable = import-clixml -path $Location 

あなたがそれをしたい場合、この関数では、何かのようなことを入れてください:

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

$場所は明らかに場所が含まれていますあなたが変数をどこに保存したいのですか?

2

環境変数の使用を検討してください。

+2

注:SETXで設定しない限り、環境変数は再起動しても保持されません。 – Iszi

関連する問題