New-Variable
Tworzy nową zmienną.
Składnia
New-Variable
[-Name] <String>
[[-Value] <Object>]
[-Description <String>]
[-Option <ScopedItemOptions>]
[-Visibility <SessionStateEntryVisibility>]
[-Force]
[-PassThru]
[-Scope <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Opis
Polecenie cmdlet New-Variable
tworzy nową zmienną w programie PowerShell. Wartość można przypisać do zmiennej podczas jej tworzenia lub przypisywać lub zmieniać wartość po jej utworzeniu.
Możesz użyć parametrów New-Variable
, aby ustawić właściwości zmiennej, ustawić zakres zmiennej i określić, czy zmienne są publiczne, czy prywatne.
Zazwyczaj tworzysz nową zmienną, wpisując nazwę zmiennej i jej wartość, taką jak $Var = 3
, ale możesz użyć polecenia cmdlet New-Variable
, aby użyć jego parametrów.
Przykłady
Przykład 1. Tworzenie zmiennej
New-Variable days
To polecenie tworzy nową zmienną o nazwie days. Nie musisz wpisywać parametru Nazwa.
Przykład 2. Tworzenie zmiennej i przypisywanie jej wartości
New-Variable -Name "zipcode" -Value 98033
To polecenie tworzy zmienną o nazwie zipcode i przypisuje mu wartość 98033.
Przykład 3. Tworzenie zmiennej z opcją ReadOnly
PS C:\> New-Variable -Name Max -Value 256 -Option ReadOnly
PS C:\> New-Variable -Name max -Value 1024
New-Variable : A variable with name 'max' already exists.
At line:1 char:1
+ New-Variable -Name max -Value 1024
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (max:String) [New-Variable], SessionStateException
+ FullyQualifiedErrorId : VariableAlreadyExists,Microsoft.PowerShell.Commands.NewVariableCommand
PS C:\> New-Variable -Name max -Value 1024 -Force
W tym przykładzie pokazano, jak użyć opcji ReadOnly
New-Variable
, aby chronić zmienną przed zastąpieniem.
Pierwsze polecenie tworzy nową zmienną o nazwie Max i ustawia jej wartość na 256. Używa parametru Option z wartością ReadOnly
.
Drugie polecenie próbuje utworzyć drugą zmienną o tej samej nazwie. To polecenie zwraca błąd, ponieważ dla zmiennej jest ustawiona opcja tylko do odczytu.
Trzecie polecenie używa parametru Force, aby zastąpić ochronę tylko do odczytu dla zmiennej. W takim przypadku polecenie utworzenia nowej zmiennej o tej samej nazwie powiedzie się.
Przykład 4. Przypisywanie wielu opcji do zmiennej
New-Variable -Name 'TestVariable' -Value 'Test Value' -Option AllScope,Constant
W tym przykładzie jest tworzona zmienna i przypisuje opcje AllScope
i Constant
, dzięki czemu zmienna będzie dostępna w bieżącym zakresie i wszystkich nowych utworzonych zakresach i nie można jej zmienić ani usunąć.
Przykład 5. Tworzenie zmiennej prywatnej
To polecenie demonstruje zachowanie zmiennej prywatnej w module. Moduł zawiera polecenie cmdlet Get-Counter
, które ma zmienną prywatną o nazwie Counter. Polecenie używa parametru Visibility z wartością Private w celu utworzenia zmiennej.
PS C:\> New-Variable -Name counter -Visibility Private
#Effect of private variable in a module.
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"
At line:1 char:1
+ $counter
+ ~~~~~~~~
+ CategoryInfo : PermissionDenied: (counter:String) [], SessionStateException
+ FullyQualifiedErrorId : VariableIsPrivate
PS C:\> Get-Counter
Name Value
---- -----
Counter1 3.1415
...
Przykładowe dane wyjściowe pokazują zachowanie zmiennej prywatnej. Użytkownik, który załadował moduł, nie może wyświetlić ani zmienić wartości zmiennej Counter, ale zmienna Counter może być odczytywana i zmieniana przez polecenia w module.
Przykład 6. Tworzenie zmiennej z spacją
W tym przykładzie pokazano, że można tworzyć zmienne z spacjami. Dostęp do zmiennych można uzyskać przy użyciu polecenia cmdlet Get-Variable
lub bezpośrednio, rozdzielając zmienną z nawiasami klamrowymi.
PS C:\> New-Variable -Name 'with space' -Value 'abc123xyz'
PS C:\> Get-Variable -Name 'with space'
Name Value
---- -----
with space abc123xyz
PS C:\> ${with space}
abc123xyz
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 |
-Force
Wskazuje, że polecenie cmdlet tworzy zmienną o tej samej nazwie co istniejąca zmienna 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.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Name
Określa nazwę nowej 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. Dopuszczalne wartości tego parametru to:
-
None
— nie ustawia opcji.None
jest wartością domyślną. -
ReadOnly
— można usunąć. Nie można zmienić, z wyjątkiem parametru Force. -
Private
— zmienna jest dostępna tylko w bieżącym zakresie. -
AllScope
— zmienna jest kopiowana do wszystkich nowo utworzonych zakresów. -
Constant
— nie można usunąć ani zmienić.Constant
jest prawidłowy tylko podczas tworzenia zmiennej. Nie można zmienić opcji istniejącej zmiennej naConstant
.
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 tablicy 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.
Aby wyświetlić właściwość Options wszystkich zmiennych w sesji, wpisz Get-Variable | Format-Table -Property name, options -AutoSize
.
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 element, z którym pracujesz. Domyślnie to polecenie cmdlet nie generuje żadnych danych wyjściowych.
Typ: | SwitchParameter |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Scope
Określa zakres nowej zmiennej. Dopuszczalne wartości tego parametru to:
-
Global
— zmienne utworzone w zakresie globalnym są dostępne wszędzie w procesie programu PowerShell. -
Local
— zakres lokalny odnosi się do bieżącego zakresu, może to być dowolny zakres w zależności od kontekstu.Local
jest zakresem domyślnym, gdy nie określono parametru zakresu. -
Script
— zmienne utworzone w zakresie skryptu są dostępne tylko w pliku skryptu lub module, w ramach którego są tworzone. - Liczba względem bieżącego zakresu (od 0 do liczby zakresów, gdzie 0 jest bieżącym zakresem, 1 jest jego elementem nadrzędnym, 2 elementem nadrzędnym zakresu nadrzędnego itd.). Nie można użyć liczb ujemnych.
Nuta
Parametr akceptuje również wartość Private
.
Private
nie jest w rzeczywistości zakresem, ale opcjonalnym ustawieniem dla zmiennej. Jednak użycie wartości Private
z tym poleceniem cmdlet nie zmienia widoczności zmiennej. Aby uzyskać więcej informacji, zobacz about_Scopes.
Typ: | String |
Position: | Named |
Domyślna wartość: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-Value
Określa początkową 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. Dopuszczalne wartości tego parametru 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 Variable:
. 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ść: | None |
Wymagane: | False |
Akceptowanie danych wejściowych potoku: | False |
Akceptowanie symboli wieloznacznych: | False |
-WhatIf
Pokazuje, co się stanie, jeśli polecenie cmdlet zostanie uruchomione. Polecenie cmdlet nie jest uruchamiane.
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
Możesz przekazać dowolny obiekt do New-Variable
.
Dane wyjściowe
None
Domyślnie to polecenie cmdlet nie zwraca żadnych danych wyjściowych.
Jeśli używasz parametru PassThru, to polecenie cmdlet zwraca obiekt PSVariable reprezentujący nową zmienną.
Uwagi
Program PowerShell zawiera następujące aliasy dla New-Variable
:
- Wszystkie platformy:
nv