New-Variable
Erstellt eine neue Variable.
Syntax
New-Variable
[-Name] <String>
[[-Value] <Object>]
[-Description <String>]
[-Option <ScopedItemOptions>]
[-Visibility <SessionStateEntryVisibility>]
[-Force]
[-PassThru]
[-Scope <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Cmdlet New-Variable
erstellt eine neue Variable in PowerShell. Sie können der Variablen beim Erstellen einen Wert zuweisen oder den Wert nach der Erstellung zuweisen oder ändern.
Sie können die Parameter von New-Variable
verwenden, um die Eigenschaften der Variablen festzulegen, den Bereich einer Variablen festzulegen und zu bestimmen, ob Variablen öffentlich oder privat sind.
In der Regel erstellen Sie eine neue Variable, indem Sie den Variablennamen und dessen Wert eingeben, z. B. $Var = 3
, aber Sie können das cmdlet New-Variable
verwenden, um dessen Parameter zu verwenden.
Beispiele
Beispiel 1: Erstellen einer Variablen
New-Variable days
Mit diesem Befehl wird eine neue Variable namens "Days" erstellt. Sie müssen den parameter Name nicht eingeben.
Beispiel 2: Erstellen einer Variablen und Zuweisen eines Werts
New-Variable -Name "zipcode" -Value 98033
Mit diesem Befehl wird eine Variable namens Zipcode erstellt und dem Wert 98033 zugewiesen.
Beispiel 3: Erstellen einer Variablen mit der Option "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
In diesem Beispiel wird gezeigt, wie Sie die option ReadOnly
von New-Variable
verwenden, um zu schützen, dass eine Variable überschrieben wird.
Der erste Befehl erstellt eine neue Variable mit dem Namen "Max" und legt den Wert auf 256 fest. Er verwendet den parameter Option mit dem Wert ReadOnly
.
Der zweite Befehl versucht, eine zweite Variable mit demselben Namen zu erstellen. Dieser Befehl gibt einen Fehler zurück, da die schreibgeschützte Option für die Variable festgelegt ist.
Der dritte Befehl verwendet den parameter Force, um den schreibgeschützten Schutz für die Variable außer Kraft zu setzen. In diesem Fall ist der Befehl zum Erstellen einer neuen Variablen mit demselben Namen erfolgreich.
Beispiel 4: Zuweisen mehrerer Optionen zu einer Variablen
New-Variable -Name 'TestVariable' -Value 'Test Value' -Option AllScope,Constant
In diesem Beispiel wird eine Variable erstellt und die optionen AllScope
und Constant
zugewiesen, sodass die Variable im aktuellen Bereich und allen neuen Bereichen verfügbar ist, die erstellt wurden und nicht geändert oder gelöscht werden können.
Beispiel 5: Erstellen einer privaten Variablen
Dieser Befehl veranschaulicht das Verhalten einer privaten Variablen in einem Modul. Das Modul enthält das Cmdlet Get-Counter
, das über eine private Variable namens Counter verfügt. Der Befehl verwendet den parameter Visibility mit dem Wert "Private", um die Variable zu erstellen.
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
...
Die Beispielausgabe zeigt das Verhalten einer privaten Variablen. Der Benutzer, der das Modul geladen hat, kann den Wert der Zählervariable nicht anzeigen oder ändern, die Counter-Variable kann jedoch von den Befehlen im Modul gelesen und geändert werden.
Beispiel 6: Erstellen einer Variablen mit einem Leerzeichen
In diesem Beispiel wird veranschaulicht, dass Variablen mit Leerzeichen erstellt werden können. Auf die Variablen kann mithilfe des cmdlets Get-Variable
oder direkt zugegriffen werden, indem eine Variable mit geschweiften Klammern getrennt wird.
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
Parameter
-Confirm
Fordert Sie vor dem Ausführen des Cmdlets zur Bestätigung auf.
Typ: | SwitchParameter |
Aliase: | cf |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Description
Gibt eine Beschreibung der Variablen an.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Force
Gibt an, dass das Cmdlet eine Variable mit demselben Namen wie eine vorhandene schreibgeschützte Variable erstellt.
Standardmäßig können Sie eine Variable überschreiben, es sei denn, die Variable verfügt über einen Optionswert von ReadOnly
oder Constant
. Weitere Informationen finden Sie im Parameter Option.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Name
Gibt einen Namen für die neue Variable an.
Typ: | String |
Position: | 0 |
Standardwert: | None |
Erforderlich: | True |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Option
Gibt den Wert der Options -Eigenschaft der Variablen an. Die zulässigen Werte für diesen Parameter sind:
-
None
– Legt keine Optionen fest.None
ist die Standardeinstellung. -
ReadOnly
– Kann gelöscht werden. Kann nicht geändert werden, außer mithilfe des Parameters Force. -
Private
– Die Variable ist nur im aktuellen Bereich verfügbar. -
AllScope
– Die Variable wird in alle neuen Bereiche kopiert, die erstellt werden. -
Constant
– Kann nicht gelöscht oder geändert werden.Constant
ist nur gültig, wenn Sie eine Variable erstellen. Sie können die Optionen einer vorhandenen Variablen nicht inConstant
ändern.
Diese Werte werden als flagbasierte Enumeration definiert. Sie können mehrere Werte kombinieren, um mehrere Flags mithilfe dieses Parameters festzulegen. Die Werte können als Array von Werten oder als kommagetrennte Zeichenfolge dieser Werte an den Option Parameter übergeben werden. Das Cmdlet kombiniert die Werte mithilfe eines Binary-OR-Vorgangs. Das Übergeben von Werten als Array ist die einfachste Option und ermöglicht ihnen auch die Verwendung des Tabstopps für die Werte.
Geben Sie Get-Variable | Format-Table -Property name, options -AutoSize
ein, um die Options-Eigenschaft aller Variablen in der Sitzung anzuzeigen.
Typ: | ScopedItemOptions |
Zulässige Werte: | None, ReadOnly, Constant, Private, AllScope, Unspecified |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-PassThru
Gibt ein Objekt zurück, das das Element darstellt, mit dem Sie arbeiten. Standardmäßig generiert dieses Cmdlet keine Ausgabe.
Typ: | SwitchParameter |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Scope
Gibt den Bereich der neuen Variablen an. Die zulässigen Werte für diesen Parameter sind:
-
Global
– Variablen, die im globalen Bereich erstellt wurden, sind überall in einem PowerShell-Prozess zugänglich. -
Local
– Der lokale Bereich bezieht sich auf den aktuellen Bereich, dies kann je nach Kontext ein beliebiger Bereich sein.Local
ist der Standardbereich, wenn der Bereichsparameter nicht angegeben wird. -
Script
– Variablen, die im Skriptbereich erstellt wurden, sind nur innerhalb der Skriptdatei oder des Moduls zugänglich, in der sie erstellt werden. - Eine Zahl relativ zum aktuellen Bereich (0 bis zur Anzahl der Bereiche, wobei 0 der aktuelle Bereich ist, 1 ist das übergeordnete Element, 2 das übergeordnete Element des übergeordneten Bereichs usw.). Negative Zahlen können nicht verwendet werden.
Anmerkung
Der Parameter akzeptiert auch den Wert von Private
.
Private
ist kein Bereich, sondern eine optionale Einstellung für eine Variable. Die Verwendung des Private
-Werts mit diesem Cmdlet ändert jedoch nicht die Sichtbarkeit der Variablen. Weitere Informationen finden Sie unter about_Scopes.
Typ: | String |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-Value
Gibt den Anfangswert der Variablen an.
Typ: | Object |
Position: | 1 |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | True |
Platzhalterzeichen akzeptieren: | False |
-Visibility
Bestimmt, ob die Variable außerhalb der Sitzung sichtbar ist, in der sie erstellt wurde. Dieser Parameter wurde für die Verwendung in Skripts und Befehlen entwickelt, die anderen Benutzern übermittelt werden. Die zulässigen Werte für diesen Parameter sind:
-
Public
– Die Variable ist sichtbar.Public
ist die Standardeinstellung. -
Private
– Die Variable ist nicht sichtbar.
Wenn eine Variable privat ist, wird sie nicht in Listen von Variablen angezeigt, z. B. in Listen von Variablen, die von Get-Variable
zurückgegeben werden, oder in der Anzeige des Variable:
Laufwerks. Befehle zum Lesen oder Ändern des Werts einer privaten Variablen geben einen Fehler zurück. Der Benutzer kann jedoch Befehle ausführen, die eine private Variable verwenden, wenn die Befehle in der Sitzung geschrieben wurden, in der die Variable definiert wurde.
Typ: | SessionStateEntryVisibility |
Zulässige Werte: | Public, Private |
Position: | Named |
Standardwert: | None |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
-WhatIf
Zeigt, was passiert, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Typ: | SwitchParameter |
Aliase: | wi |
Position: | Named |
Standardwert: | False |
Erforderlich: | False |
Pipelineeingabe akzeptieren: | False |
Platzhalterzeichen akzeptieren: | False |
Eingaben
Sie können jedes Objekt an New-Variable
pfeifen.
Ausgaben
None
Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.
Wenn Sie den PassThru--Parameter verwenden, gibt dieses Cmdlet ein PSVariable--Objekt zurück, das die neue Variable darstellt.
Hinweise
PowerShell enthält die folgenden Aliase für New-Variable
:
- Alle Plattformen:
nv