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 go 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-ListProperty 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 wyrazy 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.

Type:SwitchParameter
Aliases:cf
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Description

Określa opis zmiennej.

Type:String
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters: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.

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-Force

Umożliwia utworzenie zmiennej o takiej samej nazwie jak 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 .

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

-Include

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

Type:String[]
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:True

-Name

Określa nazwę zmiennej.

Type:String[]
Position:0
Default value:None
Accept pipeline input:True
Accept wildcard characters:False

-Option

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

Prawidłowe wartości:

  • None: nie ustawia żadnych 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 w przypadku 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 wszelkich nowych zakresów, które zostały utworzone.

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

Type:ScopedItemOptions
Accepted values:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Default value:None
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

Zwraca obiekt reprezentujący nową zmienną. Domyślnie to polecenie cmdlet nie generuje żadnego wyniku.

Type:SwitchParameter
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters: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.

Type:String
Position:Named
Default value:Local
Accept pipeline input:False
Accept wildcard characters:False

-Value

Określa wartość zmiennej.

Type:Object
Position:1
Default value:None
Accept pipeline input:True
Accept wildcard characters: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:

  • 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-Variablemetodę , lub w wyświetlaniu dysku Zmienna: . Polecenia odczytu lub zmiany wartości zmiennej prywatnej zwracają błąd. Jednak użytkownik może uruchamiać polecenia, które używają zmiennej prywatnej, jeśli polecenia zostały napisane w sesji, w której zdefiniowano zmienną.

Type:SessionStateEntryVisibility
Accepted values:Public, Private
Position:Named
Default value:Public
Accept pipeline input:False
Accept wildcard characters:False

-WhatIf

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

Type:SwitchParameter
Aliases:wi
Position:Named
Default value:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

Object

Możesz przekazać potok obiektu reprezentującego wartość zmiennej do Set-Variable.

Dane wyjściowe

None or System.Management.Automation.PSVariable

W przypadku użycia parametru Set-VariablePassThru generuje obiekt System.Management.Automation.PSVariable reprezentujący nową lub zmienioną zmienną. W przeciwnym razie to polecenie cmdlet nie generuje żadnych danych wyjściowych.