2012-01-13 10 views
5

Czy istnieje sposób definiowania zmiennej w PowerShell, więc gdy otworzę nowe okno PowerShell, zachowa on tę samą wartość?Permanentna zmienna PowerShell

Potrzebuję tej zmiennej, aby zachować jej wartość, ponieważ będę musiał ponownie uruchomić mój serwer od czasu do czasu i nie chcę stracić tych wartości.

+0

Co, u licha, przechowujesz w zmiennych, które będziesz musiał trwać wiecznie? – JNK

+2

Mam zmienną, która ma listę plików w katalogu. Na przykład mam zmienną o nazwie $ directorysnapshot = dir -r 'path', która ma listę wszystkich plików w tym katalogu i chcę zachować tę samą listę. Nie mogę mieć tej zmiennej przedefiniować za każdym razem podczas uruchamiania, ponieważ niektóre pliki mogły się zmienić od tego czasu – GwFiles

Odpowiedz

1

Czy brałeś pod uwagę inne alternatywne źródła do przechowywania zmiennej? Zmienne w programie PowerShell mają na ogół działać tak długo, jak sama sesja PowerShell. Istnieje jednak kilka innych źródeł, z których PowerShell może łatwo zapytać, które mają trwać dłużej. W szczególności rejestr i system plików.

Dla zmiennej, która ma przetrwać podczas ponownego uruchamiania, powinienem zapisać ją w rejestrze, a następnie użyć PowerShell do wysłania zapytania o tę wartość (być może pamięć podręczną w zmiennej sesji).

+0

Mam zmienną, która ma listę plików w katalogu. Na przykład mam zmienną o nazwie $ directorysnapshot = dir -r 'path', która ma listę wszystkich plików w tym katalogu i chcę zachować tę samą listę. Nie mogę zmienić tej zmiennej za każdym razem podczas uruchamiania, ponieważ od tego czasu niektóre pliki mogły się zmienić. – GwFiles

+1

@ GwFiles, jeśli nie można go usunąć, ale dlaczego rejestr jest złym miejscem? Wynik może zostać utrwalony i ponownie załadowany przy uruchomieniu. – JaredPar

3

Możesz przechowywać swoje dane w PowerShell Profile.

+0

To jest to, co robię, zwykle. Mam tendencję do przechowywania rzeczy takich jak adresy URL svn i tym podobne, więc mogę łatwo scalać, np. 'svn merge -c 100 $ someBranchName' – mwilson

+0

Cóż, mam zmienną, która ma listę plików w katalogu. Na przykład mam zmienną o nazwie $ directorysnapshot = dir -r 'ścieżka' , która ma listę wszystkich plików w tym katalogu i chcę zachować tę samą listę. Nie mogę zmienić tej zmiennej za każdym razem podczas uruchamiania, ponieważ od tego czasu niektóre pliki mogły się zmienić. – GwFiles

5

Aby zapisać:

$variable|export-clixml -path $Location 

Aby pobrać:

$variable = import-clixml -path $Location 

Put, że w zależności czy chcesz, coś takiego:

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

$ lokalizacja oczywiście zawiera miejsce w systemie plików, gdzie chcesz przechowywać zmienną.

2

Należy rozważyć użycie zmiennej środowiskowej.

+2

Uwaga: Zmienne środowiskowe nie zachowują się po ponownym uruchomieniu, chyba że ustawiono w SETX. – Iszi

Powiązane problemy