Set-Variable
Ustawia wartość zmiennej. Tworzy zmienną, jeśli zmienna o żądanej nazwie 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 uzyskiwanie 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 (|
) do przekazania obiektu do Format-List
polecenia cmdlet. Używa parametru Format-List
Property właściwości 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.
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 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 Opcja .
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ź wzorzec nazwy lub 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:
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
wartość jest prawidłowa tylko wtedy, gdy tworzysz zmienną. Nie można zmienić opcji istniejącej zmiennej naConstant
.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.
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:
Global
Local
Script
Private
- Liczba względna 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 |
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:
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, które używają zmiennej prywatnej, jeśli polecenia zostały zapisane 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
Obiekt reprezentujący wartość zmiennej można przekazać potokiem do Set-Variable
zmiennej .
Dane wyjściowe
None or System.Management.Automation.PSVariable
W przypadku użycia parametru Set-Variable
PassThru generuje obiekt System.Management.Automation.PSVariable reprezentujący nową lub zmienioną zmienną.
W przeciwnym razie to polecenie cmdlet nie generuje żadnych danych wyjściowych.