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 cmdlet Set-Variable 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

PS C:\> Set-Variable -Name "desc" -Value "A description"
PS C:\> Get-Variable -Name "desc"

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

Przykład 2. Ustawianie globalnej zmiennej tylko do odczytu

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

To polecenie tworzy globalną zmienną tylko do odczytu zawierającą wszystkie procesy w systemie, a następnie wyświetla wszystkie właściwości zmiennej.

Polecenie używa polecenia cmdlet Set-Variable do utworzenia zmiennej. Używa parametru PassThru do utworzenia obiektu reprezentującego nową zmienną i używa operatora potoku (|) do przekazania obiektu do polecenia cmdlet Format-List. Używa parametru Property Format-List z wartością all (*) do wyświetlania wszystkich 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

PS C:\> New-Variable -Name "counter" -Visibility Public -Value 26
PS C:\> $Counter
26
PS C:\> Get-Variable c*

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

PS C:\> Set-Variable -Name "counter" -Visibility Private
PS C:\> Get-Variable c*

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

 PS C:\> $counter
"Cannot access the variable '$counter' because it is a private variable"

PS C:\> .\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.

Przykładowe dane wyjściowe pokazują różnicę w zachowaniu zmiennych publicznych i prywatnych.

Parametry

-Confirm

Monituje o potwierdzenie przed uruchomieniem polecenia cmdlet.

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

-Description

Określa opis zmiennej.

Type:String
Position:Named
Default value:None
Required:False
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
Required:False
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ść opcji ReadOnly lub Constant. Aby uzyskać więcej informacji, zobacz Parametr opcji .

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

-Name

Określa nazwę zmiennej.

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

-Option

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

Prawidłowe wartości:

  • Brak: nie ustawia żadnych opcji. ("Brak" jest wartością domyślną).
  • ReadOnly: Można usunąć. Nie można zmienić, z wyjątkiem użycia parametru Force.
  • Stała: nie można usunąć ani zmienić. Wartość "Stała" jest prawidłowa tylko wtedy, gdy tworzysz zmienną. Nie można zmienić opcji istniejącej zmiennej na "Stała".
  • Prywatny: zmienna jest dostępna tylko w bieżącym zakresie.
  • AllScope: zmienna jest kopiowana do wszystkich nowych utworzonych zakresów.

Aby wyświetlić właściwość Options wszystkich zmiennych w sesji, wpisz Get-Variable | Format-Table -Property name, options -Autosize.

Type:ScopedItemOptions
Accepted values:None, ReadOnly, Constant, Private, AllScope, Unspecified
Position:Named
Default value:None
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Scope

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

  • Globalnie
  • Lokalne
  • Skrypt
  • Prywatne
  • 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).

Ustawienie lokalne jest wartością domyślną.

Aby uzyskać więcej informacji, zobacz about_Scopes.

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

-Value

Określa wartość zmiennej.

Type:Object
Position:1
Default value:None
Required:False
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:

  • Publiczny: zmienna jest widoczna. ("Public" jest wartością domyślną).
  • Prywatny: zmienna nie jest widoczna.

Gdy zmienna jest prywatna, nie jest wyświetlana na listach zmiennych, takich jak te zwracane przez zmienną Get lub wyświetlane na 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
Required:False
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
Required:False
Accept pipeline input:False
Accept wildcard characters:False

Dane wejściowe

Object

Obiekt reprezentujący wartość zmiennej można przekazać potokiem do zmiennej Set-Variable.

Dane wyjściowe

None or System.Management.Automation.PSVariable

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