Freigeben über


Set-Variable

Legt den Wert einer Variablen fest. Erstellt die Variable, wenn eine mit dem angeforderten Namen nicht 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 Cmdlet Set-Variable 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 descriptionfest 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 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 Cmdlet Set-Variable, 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 Cmdlet Format-List zu übergeben. Es verwendet den Property-Parameter von Format-List mit dem Wert "all(*)", 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 Sie die Sichtbarkeit einer Variablen in Privateändern. Diese Variable kann von Skripts mit den erforderlichen Berechtigungen gelesen und geändert werden, ist aber für den Benutzer nicht sichtbar.

PS C:\> New-Variable -Name "counter" -Visibility Public -Value 26
PS C:\> $Counter
26

PS C:\> Get-Variable c*

Name                  Value
----                  -----
Culture               en-US
ConsoleFileName
ConfirmPreference     High
CommandLineParameters {}
Counter               26

PS C:\> Set-Variable -Name "counter" -Visibility Private
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"

PS C:\> .\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, ist aber für den Benutzer nicht sichtbar.

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 die Beschreibung der Variablen an.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Exclude

Gibt ein Array von Elementen an, die dieses Cmdlet vom Vorgang ausschließt. Der Wert dieses Parameters qualifiziert den parameter Path. Geben Sie ein Pfadelement oder Muster ein, z. B. *.txt. Wildcards sind zulässig.

Typ:String[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:True

-Force

Ermöglicht es Ihnen, eine Variable mit demselben 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.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Include

Gibt ein Array von Elementen an, die dieses Cmdlet in den Vorgang einschließt. Der Wert dieses Parameters qualifiziert den parameter Name. Geben Sie ein Namens- oder Namensmuster ein, z. B. c*. Wildcards sind zulässig.

Typ:String[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:True

-Name

Gibt den Variablennamen 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.

Gültige Werte sind:

  • None: Legt keine Optionen fest. ("Keine" ist die Standardeinstellung.)
  • 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 in Constantändern.
  • Private: Die Variable ist nur im aktuellen Bereich verfügbar.
  • AllScope: Die Variable wird in alle neuen Bereiche kopiert, die erstellt werden.
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 die neue Variable darstellt. Standardmäßig generiert dieses Cmdlet keine Ausgabe.

Typ:SwitchParameter
Position:Named
Standardwert:False
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Scope

Gibt den Bereich der Variablen an. Die zulässigen Werte für diesen Parameter sind:

  • Global
  • Lokal
  • Skript
  • Privat
  • Eine Zahl relativ zum aktuellen Bereich (0 bis zur Anzahl der Bereiche, wobei 0 der aktuelle Bereich ist und 1 das übergeordnete Element ist).

Lokal ist die Standardeinstellung.

Weitere Informationen finden Sie unter about_Scopes.

Typ:String
Position:Named
Standardwert:Local
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-Value

Gibt den Wert 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.

Gültige Werte sind:

  • Öffentlich: Die Variable ist sichtbar. ("Öffentlich" ist die Standardeinstellung.)
  • Privat: 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-Variablezurückgegeben werden, oder in der Anzeige der Variable: Laufwerk. 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:Public
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

Object

Sie können ein Objekt, das den Wert der Variablen darstellt, an Set-Variableweitergeleitet werden.

Ausgaben

None or System.Management.Automation.PSVariable

Wenn Sie den PassThru--Parameter verwenden, generiert Set-Variable ein System.Management.Automation.PSVariable-Objekt, das die neue oder geänderte Variable darstellt. Andernfalls generiert dieses Cmdlet keine Ausgabe.