Udostępnij za pośrednictwem


Set-Variable

Ustawia wartość zmiennej. Tworzy zmienną, jeśli ta z żądaną nazwą nie istnieje.

Składnia

Set-Variable
   [-Name] <String[]>
   [[-Value] <Object>]
   [-Include <String[]>]
   [-Exclude <String[]>]
   [-Description <String>]
   [-Option <ScopedItemOptions>]
   [-Force]
   [-Visibility <SessionStateEntryVisibility>]
   [-PassThru]
   [-Scope <String>]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]

Opis

Polecenie Set-Variable cmdlet przypisuje wartość do określonej zmiennej lub zmienia bieżącą wartość. Jeśli zmienna nie istnieje, polecenie cmdlet je utworzy.

Przykłady

Przykład 1: Ustawianie zmiennej i pobieranie jej wartości

Te polecenia ustawiają wartość zmiennej $desc na A description, a następnie pobierają wartość zmiennej.

Set-Variable -Name "desc" -Value "A description"
Get-Variable -Name "desc"

Name                           Value
----                           -----
desc                           A description

Przykład 2. Ustawianie globalnej zmiennej tylko do odczytu

W tym przykładzie jest tworzona globalna zmienna tylko do odczytu zawierająca wszystkie procesy w systemie, a następnie wyświetla wszystkie właściwości zmiennej.

Set-Variable -Name "processes" -Value (Get-Process) -Option constant -Scope global -Description "All processes" -PassThru |
    Format-List -Property *

Polecenie używa Set-Variable polecenia cmdlet do utworzenia zmiennej. Używa parametru PassThru do utworzenia obiektu reprezentującego nową zmienną i używa operatora potoku (|), aby przekazać obiekt do Format-List polecenia cmdlet. Używa parametru Format-List Property z wartością wszystkich (*), aby wyświetlić wszystkie właściwości nowo utworzonej zmiennej.

Wartość (Get-Process), jest ujęta w nawiasy, aby upewnić się, że jest wykonywana przed zapisaniem w zmiennej. W przeciwnym razie zmienna zawiera słowa Get-Process.

Przykład 3. Omówienie zmiennych publicznych i prywatnych

W tym przykładzie pokazano, jak zmienić widoczność zmiennej na Private. Ta zmienna może być odczytywana i zmieniana przez skrypty z wymaganymi uprawnieniami, ale nie jest widoczna dla użytkownika.

New-Variable -Name "counter" -Visibility Public -Value 26
$Counter

26

Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
Counter               26

Set-Variable -Name "counter" -Visibility Private
Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}

$counter

"Cannot access the variable '$counter' because it is a private variable"

.\use-counter.ps1
#Commands completed successfully.

To polecenie pokazuje, jak zmienić widoczność zmiennej na Private. Ta zmienna może być odczytywana i zmieniana przez skrypty z wymaganymi uprawnieniami, ale nie jest widoczna dla użytkownika.

Parametry

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

Typ:SwitchParameter
Aliasy:cf
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Description

Określa opis zmiennej.

Typ:String
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Exclude

Określa tablicę elementów, które to polecenie cmdlet wyklucza z operacji. Wartość tego parametru kwalifikuje parametr Path . Wprowadź element ścieżki lub wzorzec, taki jak *.txt. Dozwolone są symbole wieloznaczne.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Force

Umożliwia utworzenie zmiennej o tej samej nazwie co istniejąca zmienna tylko do odczytu lub zmiana wartości zmiennej tylko do odczytu.

Domyślnie można zastąpić zmienną, chyba że zmienna ma wartość ReadOnly opcji lub Constant. Aby uzyskać więcej informacji, zobacz Parametr opcji .

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Include

Określa tablicę elementów, które zawiera to polecenie cmdlet w operacji. Wartość tego parametru kwalifikuje parametr Name . Wprowadź wzorzec nazwy lub nazwy, taki jak c*. Dozwolone są symbole wieloznaczne.

Typ:String[]
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

-Name

Określa nazwę zmiennej.

Typ:String[]
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Option

Określa wartość właściwości Options zmiennej.

Prawidłowe wartości to:

  • None: nie ustawia opcji. (None jest wartością domyślną).
  • ReadOnly: Można usunąć. Nie można zmienić, z wyjątkiem użycia parametru Force.
  • Constant: Nie można usunąć ani zmienić. Constant jest prawidłowy tylko podczas tworzenia zmiennej. Nie można zmienić opcji istniejącej zmiennej na Constant.
  • Private: Zmienna jest dostępna tylko w bieżącym zakresie.
  • AllScope: zmienna jest kopiowana do wszystkich nowych utworzonych zakresów.

Te wartości są definiowane jako wyliczenie oparte na flagach. Możesz połączyć wiele wartości ze sobą, aby ustawić wiele flag przy użyciu tego parametru. Wartości można przekazać do parametru Option jako tablicę wartości lub jako ciąg rozdzielany przecinkami tych wartości. Polecenie cmdlet połączy wartości przy użyciu operacji binary-OR. Przekazywanie wartości jako tablicy jest najprostszą opcją, a także umożliwia użycie uzupełniania tabulatorów na wartościach.

Typ:ScopedItemOptions
Dopuszczalne wartości:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-PassThru

Zwraca obiekt reprezentujący nową zmienną. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.

Typ:SwitchParameter
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Scope

Określa zakres zmiennej. Dopuszczalne wartości tego parametru to:

  • Global
  • Local
  • Script
  • Private
  • Liczba względem bieżącego zakresu (od 0 do liczby zakresów, gdzie 0 jest bieżącym zakresem, a 1 jest jego elementem nadrzędnym).

Wartość domyślna to Local.

Aby uzyskać więcej informacji, zobacz about_Scopes.

Typ:String
Position:Named
Domyślna wartość:Local
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-Value

Określa wartość zmiennej.

Typ:Object
Position:1
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Visibility

Określa, czy zmienna jest widoczna poza sesją, w której została utworzona. Ten parametr jest przeznaczony do użycia w skryptach i poleceniach, które zostaną dostarczone do innych użytkowników.

Prawidłowe wartości to:

  • Public: Zmienna jest widoczna. (Public jest wartością domyślną).
  • Private: Zmienna nie jest widoczna.

Gdy zmienna jest prywatna, nie jest wyświetlana na listach zmiennych, takich jak te zwracane przez Get-Variable, lub w wyświetlaniu dysku Zmienna: . Polecenia odczytu lub zmiany wartości zmiennej prywatnej zwracają błąd. Użytkownik może jednak uruchamiać polecenia używające zmiennej prywatnej, jeśli polecenia zostały zapisane w sesji, w której zdefiniowano zmienną.

Typ:SessionStateEntryVisibility
Dopuszczalne wartości:Public, Private
Position:Named
Domyślna wartość:Public
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-WhatIf

Pokazuje, co się stanie po uruchomieniu polecenia cmdlet. Polecenie cmdlet nie zostało uruchomione.

Typ:SwitchParameter
Aliasy:wi
Position:Named
Domyślna wartość:False
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

Dane wejściowe

Object

Do tego polecenia cmdlet można przekazać potok obiektu reprezentującego wartość zmiennej.

Dane wyjściowe

None

Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.

PSVariable

Jeśli używasz parametru PassThru, to polecenie cmdlet zwraca obiekt PSVariable reprezentujący nową lub zmienioną zmienną.

Uwagi

Program Windows PowerShell zawiera następujące aliasy dla programu Set-Variable:

  • set
  • sv