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>] [-Beschreibung <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Option {<None> | <ReadOnly> | <Constant> | <Private> | <AllScope>}] [-PassThru] [-Scope <string>] [-Visibility {<Public> | <Private>}] [-Confirm] [-WhatIf] [<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.
Parameter
-Beschreibung <string>
Gibt die Beschreibung der Variablen an.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Exclude <string[]>
Lässt die angegebenen Elemente aus. Der Path-Parameter wird durch den Wert dieses Parameters qualifiziert. Geben Sie ein Pfadelement oder -muster wie "*.txt" ein. Platzhalter sind zulässig.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-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, sofern die Variable nicht den Optionswert "ReadOnly" oder "Constant" aufweist. Weitere Informationen finden Sie unter dem Option-Parameter.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Include <string[]>
Ändert nur die angegebenen Elemente. Der Name-Parameter wird durch den Wert dieses Parameters qualifiziert. Geben Sie ein Namensmuster ein, z. B. "c*". Platzhalter sind zulässig.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Name <string[]>
Gibt den Variablennamen an.
Erforderlich? |
true |
Position? |
1 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-Option <ScopedItemOptions>
Ändert den Wert der Options-Eigenschaft der Variablen. Gültige Werte:
– None: Legt keine Optionen fest. (Der Standardwert ist "None".)
– ReadOnly: Die Eigenschaften der Variablen können nicht geändert werden, außer bei Verwendung des Force-Parameters. Sie können die Variable mithilfe von Remove-Variable löschen.
– Constant: Die Variable kann nicht gelöscht und ihre Eigenschaften können nicht geändert werden. "Constant" ist nur verfügbar, wenn Sie einen Alias erstellen. Sie können die Option einer vorhandenen Variablen nicht in "Constant" ändern.
– Private: Die Variable ist nur in dem vom Scope-Parameter angegebenen Bereich verfügbar. Sie wird von untergeordneten Bereichen geerbt.
– AllScope: Die Variable wird in alle neuen Bereiche kopiert, die erstellt werden.
Um die Options-Eigenschaft der Variablen anzuzeigen, geben Sie "get-variable| Format-Table -property name, options -autosize" ein.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-PassThru
Gibt ein Objekt zurück, das die neue Variable darstellt. Standardmäßig wird von diesem Cmdlet keine Ausgabe generiert.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Scope <string>
Bestimmt den Bereich der Variablen. Gültige Werte sind "global", "local", "script", oder eine Zahl in Bezug auf den aktuellen Bereich (0 bis zur Anzahl der Bereiche, wobei 0 der aktuelle Bereich und 1 der übergeordnete Bereich ist). Der Standardwert ist "local". Weitere Informationen finden Sie unter "about_Scopes".
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Value <Object>
Gibt den Wert der Variablen an.
Erforderlich? |
false |
Position? |
2 |
Standardwert |
|
Pipelineeingaben akzeptieren? |
true (ByValue, ByPropertyName) |
Platzhalterzeichen akzeptieren? |
false |
-Visibility <SessionStateEntryVisibility>
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 vorgesehen, die für andere Benutzer bereitgestellt werden.
Gültige Werte:
– Public: Die Variable ist sichtbar. (Der Standardwert lautet "Public".)
– Private: Die Variable ist nicht sichtbar.
Eine private Variable wird nicht in Listen von Variablen, z. B. den von Get-Variable zurückgegebenen Listen, oder in Anzeigen des Laufwerks "Variable:" angezeigt. Befehle zum Lesen oder Ändern des Werts einer privaten Variablen geben einen Fehler zurück. Der Benutzer kann jedoch Befehle ausführen, in denen eine private Variable verwendet wird, wenn die Befehle in der Sitzung geschrieben wurden, in der die Variable definiert wurde.
Erforderlich? |
false |
Position? |
named |
Standardwert |
Public |
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-Confirm
Fordert Sie vor der Ausführung des Befehls zur Bestätigung auf.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
-WhatIf
Beschreibt die Auswirkungen einer Ausführung des Befehls, ohne den Befehl tatsächlich auszuführen.
Erforderlich? |
false |
Position? |
named |
Standardwert |
|
Pipelineeingaben akzeptieren? |
false |
Platzhalterzeichen akzeptieren? |
false |
<CommonParameters>
Dieses Cmdlet unterstützt die folgenden allgemeinen Parameter: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer und -OutVariable. Weitere Informationen finden Sie unter about_Commonparameters.
Eingaben und Ausgaben
Der Eingabetyp ist der Typ der Objekte, die über die Pipeline an das Cmdlet übergeben werden können. Der Rückgabetyp ist der Typ der Objekte, die das Cmdlet zurückgibt.
Eingaben |
System.Object Sie können ein Objekt, das den Wert der Variablen darstellt, über die Pipeline an Set-Variable übergeben. |
Ausgaben |
Keiner oder 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 wird von diesem Cmdlet keine Ausgabe generiert. |
Beispiel 1
C:\PS>set-variable -name desc -value "A description"
C:\PS>get-variable -name desc
Beschreibung
-----------
Mit diesen Befehlen wird der Wert der Variablen "desc" auf "A description" festgelegt und dann der Wert der Variablen abgerufen.
Beispiel 2
C:\PS>set-variable -name processes -value (Get-Process) -option constant -scope global -description "All processes" -passthru | format-list -property *
Beschreibung
-----------
Mit diesem Befehl wird eine globale schreibgeschützte Variable erstellt, die alle Prozesse auf dem System enthält, und anschließend werden alle Eigenschaften der Variablen angezeigt.
In dem Befehl wird die Variable mit dem Cmdlet "Set-Variable" erstellt. Mit dem PassThru-Parameter wird ein Objekt erstellt, das die neue Variable darstellt, und mit dem Pipelineoperator (|) wird das Objekt an das Cmdlet "Format-List" übergeben. Der Property-Parameter von Format-List mit dem Wert für alle (*) wird 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 Zeichenfolge "Get-Process".
Beispiel 3
C:\PS># set-variable -name counter -visibility private
C:\PS> new-variable -name counter -visibility public -value 26
C:\PS> $counter
26
C:\PS> get-variable c*
Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
Counter 26
C:\PS> set-variable -name counter -visibility private
C:\PS> get-variable c*
Name Value
---- -----
Culture en-US
ConsoleFileName
ConfirmPreference High
CommandLineParameters {}
C:\PS> $counter
"Cannot access the variable '$counter' because it is a private variable"
C:\PS> .\use-counter.ps1
Commands completed successfully.
Beschreibung
-----------
Dieser Befehl veranschaulicht, wie der Wert für die Sichtbarkeit einer Variablen in "Private" geändert wird. Diese Variable kann von Skripts mit den erforderlichen Berechtigungen gelesen und geändert werden, sie ist jedoch für den Benutzer nicht sichtbar.
Die Beispielausgabe veranschaulicht den Unterschied im Verhalten von öffentlichen und privaten Variablen.