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 A descriptionund 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 zeigt dann alle Eigenschaften der Variablen an.

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. Er verwendet den PassThru-Parameter , um ein Objekt zu erstellen, das die neue Variable darstellt, und es verwendet den Pipelineoperator (|), um das Objekt an das Format-List Cmdlet zu übergeben. Sie verwendet den Property-Parameter Format-List mit einem Wert aller (*) zum Anzeigen aller Eigenschaften der neu erstellten Variablen.

Der Wert , (Get-Process)ist 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 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.

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 "Privat" ä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 vom Vorgang ausschließt. Der Wert dieses Parameters qualifiziert den Path-Parameter . Geben Sie ein Pfadelement oder Einmuster 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 einen Optionswert von ReadOnly oder 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, mit Ausnahme des Force-Parameters.
  • 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 ändern in Constant.
  • 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. 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 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 ihnen auch die Verwendung des Tabstopps für die Werte.

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 ist und 1 das übergeordnete 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 dient zur Verwendung in Skripts und Befehlen, die für andere Benutzer bereitgestellt 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 der Variablen zurückgegebenen Get-VariableVariablen oder in der Anzeige 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

Object

Sie können ein Objekt weiterleiten, das den Wert der Variablen an dieses Cmdlet darstellt.

Ausgaben

None

Standardmäßig gibt dieses Cmdlet keine Ausgabe zurück.

PSVariable

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