Set-Variable
Legt den Wert einer Variablen fest. Erstellt die Variable, wenn keine Variable mit dem angeforderten Namen vorhanden ist.
Syntax
Set-Variable
[-Name] <String[]>
[[-Value] <Object>]
[-Include <String[]>]
[-Exclude <String[]>]
[-Description <String>]
[-Option <ScopedItemOptions>]
[-Force]
[-Visibility <SessionStateEntryVisibility>]
[-PassThru]
[-Scope <String>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Beschreibung
Das Set-Variable
Cmdlet weist einer angegebenen Variablen einen Wert zu oder ändert den aktuellen Wert. Wenn die Variable nicht vorhanden ist, wird sie vom Cmdlet erstellt.
Beispiele
Beispiel 1: Festlegen einer Variablen und Abrufen des Werts
Diese Befehle legen den Wert der $desc
Variablen auf fest A description
und ruft dann den Wert der Variablen ab.
Set-Variable -Name "desc" -Value "A description"
Get-Variable -Name "desc"
Name Value
---- -----
desc A description
Beispiel 2: Festlegen einer globalen schreibgeschützten Variablen
In diesem Beispiel wird eine globale, schreibgeschützte Variable erstellt, die alle Prozesse im System enthält, und dann alle Eigenschaften der Variablen angezeigt.
Set-Variable -Name "processes" -Value (Get-Process) -Option constant -Scope global -Description "All processes" -PassThru |
Format-List -Property *
Der Befehl verwendet das Set-Variable
Cmdlet, um die Variable zu erstellen. Es verwendet den PassThru-Parameter , um ein Objekt zu erstellen, das die neue Variable darstellt, und verwendet den Pipelineoperator (|
), um das Objekt an das Format-List
Cmdlet zu übergeben. Der Property-Parameter von Format-List
wird mit dem Wert all (*
) verwendet, um alle Eigenschaften der neu erstellten Variablen anzuzeigen.
Der Wert (Get-Process)
wird in Klammern eingeschlossen, um sicherzustellen, dass er ausgeführt wird, bevor er in der Variablen gespeichert wird. Andernfalls enthält die Variable die Wörter Get-Process
.
Beispiel 3: Grundlegendes zu öffentlichen und privaten Variablen
In diesem Beispiel wird gezeigt, wie die Sichtbarkeit einer Variablen in geändert wird Private
. Diese Variable kann von Skripts mit den erforderlichen Berechtigungen gelesen und geändert werden, aber sie ist nicht für den Benutzer sichtbar.
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.
Dieser Befehl zeigt, wie Sie die Sichtbarkeit einer Variablen in Private ändern. Diese Variable kann von Skripts mit den erforderlichen Berechtigungen gelesen und geändert werden, aber sie ist nicht für den Benutzer sichtbar.
Parameter
-Confirm
Hiermit werden Sie vor der Ausführung des Cmdlets zur Bestätigung aufgefordert.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Description
Gibt die Beschreibung der Variablen an.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Exclude
Gibt ein Array von Elementen an, die dieses Cmdlet aus dem Vorgang ausschließt. Der Wert dieses Parameters qualifiziert den Path-Parameter. Geben Sie ein Path-Element oder -Muster ein, z *.txt
. B. .
Platzhalter sind zulässig.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Force
Ermöglicht es Ihnen, eine Variable mit dem gleichen Namen wie eine vorhandene schreibgeschützte Variable zu erstellen oder den Wert einer schreibgeschützten Variablen zu ändern.
Standardmäßig können Sie eine Variable überschreiben, es sei denn, die Variable hat den Optionswert oder ReadOnly
Constant
. Weitere Informationen finden Sie im Parameter Option .
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Include
Gibt ein Array von Elementen an, die dieses Cmdlet in den Vorgang einschließt. Der Wert dieses Parameters qualifiziert den Name-Parameter . Geben Sie einen Namen oder ein Namensmuster ein, z c*
. B. . Platzhalter sind zulässig.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-Name
Gibt den Variablennamen an.
Type: | String[] |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Option
Gibt den Wert der Options-Eigenschaft der Variablen an.
Gültige Werte sind:
None
: Legt keine Optionen fest. (None
ist der Standardwert.)ReadOnly
: Kann gelöscht werden. Kann nicht geändert werden, außer mit dem Force-Parameter.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.Private
: Die Variable ist nur im aktuellen Bereich verfügbar.AllScope
: Die Variable wird in alle neuen Bereiche kopiert, die erstellt werden.
Diese Werte werden als flagbasierte Enumeration definiert. Mit diesem Parameter können Sie mehrere Werte kombinieren, um mehrere Flags festzulegen. Die Werte können als Array von Werten oder als durch Trennzeichen getrennte Zeichenfolge dieser Werte an den Parameter Option ü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 es Ihnen auch, die Tabulatorvervollständigung für die Werte zu verwenden.
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
Gibt ein Objekt zurück, das die neue Variable darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Scope
Gibt den Bereich der Variablen an. Die zulässigen Werte für diesen Parameter sind:
Global
Local
Script
Private
- Eine Zahl relativ zum aktuellen Bereich (0 bis zur Anzahl der Bereiche, wobei 0 der aktuelle Bereich und 1 sein übergeordnetes Element ist).
Local
ist die Standardoption.
Weitere Informationen finden Sie unter about_Scopes.
Type: | String |
Position: | Named |
Default value: | Local |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Value
Gibt den Wert der Variablen an.
Type: | Object |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Visibility
Bestimmt, ob die Variable außerhalb der Sitzung, in der sie erstellt wurde, sichtbar ist. Dieser Parameter ist für die Verwendung in Skripts und Befehlen konzipiert, die an andere Benutzer übermittelt werden.
Gültige Werte sind:
Public
: Die Variable ist sichtbar. (Public
ist der Standardwert.)Private
: Die Variable ist nicht sichtbar.
Wenn eine Variable privat ist, wird sie nicht in Listen von Variablen angezeigt, z. B. in den von Get-Variable
zurückgegebenen Variablen oder in den Anzeigen des Laufwerks Variable: . 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.
Type: | SessionStateEntryVisibility |
Accepted values: | Public, Private |
Position: | Named |
Default value: | Public |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WhatIf
Zeigt, was geschieht, wenn das Cmdlet ausgeführt wird. Das Cmdlet wird nicht ausgeführt.
Type: | SwitchParameter |
Aliases: | wi |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Eingaben
Sie können ein Objekt, das den Wert der Variablen darstellt, an dieses Cmdlet übergeben.
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 oder geänderte Variable darstellt.
Hinweise
PowerShell enthält die folgenden Aliase für Set-Variable
:
- Alle Plattformen:
set
sv