2012-01-13 15 views
5

PowerShell'de bir değişken tanımlamanın bir yolu var, bu yüzden yeni bir PowerShell penceresi açtığımda aynı değeri koruyacak mıyım?Kalıcı PowerShell değişkeni

Değerini korumak için bu değişkeni kullanmalıyım, çünkü sunucumu her defasında yeniden başlatmam gerekecek ve bu değerleri kaybetmek istemiyorum.

+0

Yeryüzünde sonsuza dek sürmesi gerekecek değişkenlerde mi saklıyorsunuz? – JNK

+2

Eh, bir dizinin altındaki dosyaların listesini içeren bir değişken var. Örneğin, bu dizinin altındaki tüm dosyaların bir listesini içeren $ directorysnapshot = dir -r 'yol' adında bir değişkenim var ve aynı listeyi tutmak istiyorum. Başlangıç ​​sırasında her seferinde bu değişkeni yeniden tanımlayamıyorum çünkü bazı dosyalar o zamandan beri değişmiş olabilir – GwFiles

cevap

1

Değişkeni depolamak için başka alternatif kaynakları düşündünüz mü? PowerShell'deki değişkenler genellikle PowerShell oturumunun kendisi kadar uzun süre devam eder. Ancak, PowerShell'in daha uzun süre dayanması amaçlanan kolayca sorgulayabileceği birkaç başka kaynak vardır. Özellikle kayıt ve dosya sistemi.

Yeniden başlatmalarda kalıcı olması amaçlanan bir değişken için, kayıt defterinde saklamak ve sonra bu değeri sorgulamak için PowerShell'i (bir oturum değişkeninde önbellek) sorgulamak için kullanın.

+0

Eh, bir dizinin altındaki dosyaların listesini içeren bir değişken var. Örneğin, bu dizinin altındaki tüm dosyaların bir listesini içeren $ directorysnapshot = dir -r 'yol' adında bir değişkenim var ve aynı listeyi tutmak istiyorum. Bu değişken başlangıçta her defasında yeniden tanımlanamıyorum çünkü bazı dosyalar o zamandan beri değişmiş olabilir. – GwFiles

+1

@GwFiles Eğer kalıcı olması gerekiyorsa kayıt neden kötü bir yer olsa da? Sonuç, başlangıçta – JaredPar

3

Verilerinizi PowerShell Profile ürününüzde saklayabilirsiniz.

+0

Genellikle yaptığım şey budur. Ben svn url'ler ve benzerleri gibi şeyler depolamaya eğilimliyim, böylece kolayca birleştirebilirim, örn. 'svn merge -c 100 $ someBranchName' – mwilson

+0

Eh, bir dizinin altındaki dosyaların listesini içeren bir değişken var. Örneğin, bu dizinin altındaki tüm dosyaların bir listesini içeren $ directorysnapshot = dir -r 'yol' adında bir değişkenim var ve bende aynı listeyi tutmak istiyorum. Bu değişken başlangıçta her defasında yeniden tanımlanamıyorum çünkü bazı dosyalar o zamandan beri değişmiş olabilir. – GwFiles

5

depolamak için:

$variable|export-clixml -path $Location 

geri almak için:

$variable = import-clixml -path $Location 

bir işlevde sen gibi bir şey istersen koy:

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

$ konumu açıkça yer içeriyor Değişkenleri depolamak istediğiniz dosya sisteminde.

2

Bir ortam değişkeni kullanmayı düşünün.

+2

numaralı adreste kalıcı ve yeniden yüklenebilir. Not: SETX ile ayarlanmadığı sürece ortam değişkenleri yeniden başlatmalarda kalmaz. – Iszi