Wie man PowerShell-Variablen verwendet
Oct 4, 2018
PowerShell-Variablen fungieren als Behälter für Daten, die in Skripten oder Sitzungen erstellt, modifiziert und verwendet werden können. Sie unterstützen mehrere Typen, einschließlich Zeichenketten, Ganzzahlen, Arrays und Hashtabellen, und können als lokal, global oder skriptbasiert gekennzeichnet werden. Administratoren können Beschreibungen, Sichtbarkeit und Optionen festlegen, Variablen auflisten oder löschen und ihren Inhalt exportieren. Die korrekte Verwendung von Variablen vereinfacht die Automatisierung und steigert die Effizienz der Skripterstellung.
Einführung
Eine Variable in PowerShell ist ein Behälter, dem ein Wert zugewiesen wird. Stellen Sie sich diese als beschriftete Kästen vor, in denen Sie Informationen ablegen können, um sie später zu verwenden. Der Wert einer Variablen kann einfach durch Bezugnahme auf die Variable abgerufen werden, und er kann jederzeit geändert werden, indem der Variablen ein neuer Wert zugewiesen wird. Variablen sind sehr praktisch, um Daten in Skripten oder während einer PowerShell-Sitzung im Auge zu behalten.
PowerShell-Variable-Beispiele
Lassen Sie uns in einige der nützlichsten Methoden eintauchen, um Variablen in PowerShell zu verwenden.
Variablen in PowerShell erstellen und setzen
Variablennamen in PowerShell beginnen mit einem Dollarzeichen ($), und sie sind nicht groß- und kleinschreibungsempfindlich, also beziehen sich zum Beispiel $VAR und $var auf dieselbe Variable. Ein Variablenname kann Buchstaben, Zahlen und Unterstriche enthalten. Obwohl sie Leerzeichen und andere Sonderzeichen enthalten können, ist es am besten, diese zu vermeiden.
Sobald Sie einen Namen für eine Variable in PowerShell gewählt haben, können Sie sie erstellen und ihr in einem Befehl einen Wert zuweisen. Zum Beispiel, wenn Sie eine Variable namens $Greeting erstellen und ihr den String-Wert Hello, World zuweisen möchten, würden Sie diesen Befehl verwenden:
$Greeting = "Hello, World"
Nach diesem Befehl wird immer, wenn Sie $Greeting eingeben, PowerShell den Wert ersetzen, den Sie dieser Variablen zugewiesen haben, wie unten gezeigt.
Die doppelten Anführungszeichen („ “) im vorherigen Beispiel zeigen an, dass der Wert ein String ist. Hier ist, wie Sie eine Variable erstellen und ihr einen Integer-Wert zuweisen können:
$var1 = 75
$var2 = 25
Sie können arithmetische Operationen mit Zahlenvariablen durchführen, wie hier gezeigt:
Sie können auch Zeichenketten mit dem Pluszeichen (+) Operator verbinden:
$var10 = “Complete”
$var11 = “Visibility
$var12 = $var10 + $var11
Wenn Sie einer Zeichenkette eine Zahl hinzufügen, wird die Zahl automatisch zu einer Zeichenkette:
$var1 = “Netwrix”
$var2 = 2023
Setzen oder Überprüfen eines Variablentyps
Variablen in PowerShell können mehrere Datentypen speichern, einschließlich Zeichenketten, Ganzzahlen und komplexeren Objekten wie Arrays. Wenn Sie einer Variablen einen Wert zuweisen, bestimmt PowerShell automatisch den Datentyp basierend auf dem Wert. Dies ist als dynamische Typisierung bekannt. Wie oben erwähnt, erfordern Zeichenketten Anführungszeichen.
Hier sind einige Beispiele:
$var1 = "Hello" # The type of $var1 is String
$var2 = 25 # The type of $var2 is Integer
$var3 = Get-Date # The type of $var3 is DateTime
Um herauszufinden, welchen Typ eine Variable hat, verwenden wir den GetType-Parameter:
$var5 = “Netwrix”
$var5.GetType () .FullName
Die gängigsten Variablentypen umfassen Folgendes:
- Zeichenkette: Text (Sie können eine Zeichenkette deklarieren, indem Sie Text in Anführungszeichen einschließen)
- Integer: Eine ganze Zahl
- Double: Eine Zahl, die einen Dezimalpunkt enthält
- Boolean: Ein Wahrheitswert, entweder $True oder $False
- DateTime: Ein Datum und eine Uhrzeit
- Array: Eine Datenstruktur, die eine Sammlung von Elementen desselben oder unterschiedlicher Typen enthält. Die Elemente werden sequenziell gespeichert und können über einen Index zugegriffen werden. Hier ist ein Beispiel für die Deklaration eines Arrays:
$myArray = "apple", "orange", "cherry"
- HashTable: Eine Datenstruktur, die eine ungeordnete Sammlung von Schlüssel-Wert-Paaren umfasst. Es ist wie ein Wörterbuch, in dem Sie einen einzigartigen Schlüssel verwenden, um jeden Wert zu speichern und abzurufen. Dies macht HashTables hervorragend für Suchvorgänge und Szenarien, in denen Sie Werte leicht suchen müssen. Um eine HashTable zu erstellen, verwenden Sie @{}. Innerhalb der geschweiften Klammern geben Sie jedes Paar als Schlüssel gefolgt von einem Gleichheitszeichen (=) und dann dem Wert an, wie in diesem Beispiel illustriert:
$myHashtable = @{
"Fruit1" = "Apple"
"Fruit2" = "Orange"
"Fruit3" = "Cherry"
}
Definieren Sie den Geltungsbereich einer Variablen
Scope ist die Sichtbarkeit und Zugänglichkeit einer Variablen. PowerShell hat mehrere verschiedene Scopes:
- Lokal — Der aktuelle Geltungsbereich
- Global —Der Gültigkeitsbereich, der wirksam wird, wenn PowerShell startet oder wenn Sie eine neue Sitzung oder einen neuen Runspace erstellen
- Skript — Der während der Ausführung eines Skripts erstellte Bereich
Variablen werden in PowerShell wie folgt angegeben:
$global:Var1 = "Global Variable"
$script:Var2 = "Script Variable"
$local:Var3 = "Local Variable"
Automatisieren Sie Aufgaben mit Netwrix Directory Manager
Vereinfachen Sie die Gruppenverwaltung und automatisieren Sie Aufgaben ohne komplexe PowerShell-Skripte
Öffentliche vs. Private Variablen
Die Visibility-Eigenschaft einer Variablen hängt mit dem Geltungsbereich zusammen; sie bestimmt, ob das Element außerhalb des Skripts, in dem es erstellt wurde, sichtbar ist. Die Visibility-Eigenschaft kann den Wert Public oder Private haben. Private Variablen können nur im Geltungsbereich, in dem sie erstellt wurden, eingesehen und geändert werden. Öffentliche Variablen sind aus jedem Geltungsbereich zugänglich.
Variablen im aktuellen Bereich auflisten (abrufen)
Sie können alle aktuellen Variablen in einer PowerShell-Sitzung auflisten, indem Sie das Cmdlet Get-Variable verwenden, welches alle Variablen im aktuellen Geltungsbereich abruft. Das folgende Beispiel listet einige der Variablen auf, die in früheren Beispielen verwendet wurden.
Eine Variable ausdrucken
Sie können eine Variable in eine .txt-, .csv- oder HTML-Datei ausgeben.
Um in eine .txt-Datei zu schreiben, verwenden Sie den Befehl Out-File :
$var5 = “Hello World”
$var5 | Out-File c:scriptsHello_World.txt
Um Daten in eine .csv-Datei zu exportieren, verwenden Sie den Befehl Export-Csv :
$var6 = Get-Process
$var6 | SELECT Name, Path | Export-Csv -Path c:scriptsprocesses.csv
Und um in eine HTML-Datei zu schreiben, verwenden Sie den Befehl ConvertTo-Html:
$var6 = Get-Process
$var6 | ConvertTo-HTML -Property Name, Path>C:scriptprocesses.html
Um eine Datei zu lesen, die Sie exportiert haben, verwenden Sie das Cmdlet Get-Content:
Get-Content c:\scripts\processes.csv
Eine Variable löschen
Das Clear-Variable-Cmdlet wird verwendet, um den Wert einer Variablen zu entfernen, lässt aber das Variablenobjekt selbst bestehen. Wenn eine Variable geleert wird, existiert die Variable weiterhin, aber ihr Wert ist $null. Im folgenden Beispiel wird eine Variable erstellt und dann geleert, wobei jede Aktion bestätigt wird.
Entfernen Sie eine Variable
Das Cmdlet Remove-Variable wird verwendet, um eine Variable und ihren Wert zu löschen.
Im folgenden Beispiel wird eine Variable namens Example erstellt und mit dem String „Hello World!“ zugewiesen. Die Variable wird dann durch das Cmdlet Remove-Variable gelöscht. Anschließend überprüft das Skript die Variable und gibt einen Fehler zurück, weil sie nicht mehr existiert.
Beachten Sie, dass das Remove-Variable-Cmdlet nur die Variable im aktuellen Gültigkeitsbereich entfernt. Wenn es eine Variable mit demselben Namen in einem übergeordneten Gültigkeitsbereich gibt, wird diese Variable nicht beeinflusst. Ebenso hat Remove-Variable keinen Einfluss auf eventuelle untergeordnete Gültigkeitsbereiche, die eine Variable mit demselben Namen enthalten könnten.
Der Unterschied zwischen dem Clear-Variable-Befehl und dem Remove-Variable-Befehl besteht darin, dass das Löschen der Variablen nur den Wert der Variablen entfernt, während das Entfernen die Variable selbst löscht.
Parameter
Die oben diskutierten Cmdlets nehmen verschiedene Parameter. Lassen Sie uns die nützlichsten Parameter und ihre Funktionen überprüfen.
Beschreibung
PowerShell-Variablen haben eine Beschreibungseigenschaft, die Sie mit dem Set-Variable-Cmdlet und dem Description-Parameter festlegen können:
Set-Variable -Name "myVariable" -Description "This is my sample variable"
Ausschließen
Um bestimmte Variablen auszuschließen, wenn Sie das Cmdlet Get-Variable verwenden, nutzen Sie den Parameter Exclude und geben Sie die Namen der Variablen an, die ausgeschlossen werden sollen. Im folgenden Beispiel erstellen wir 4 Variablen. Dann verwenden wir den Befehl Get-Variable -Exclude um zwei davon auszuschließen.
$Var1 = "Test1"
$Var2 = "Test2"
$Var3 = "Test3"
$OtherVar = "Other"
Get-Variable -Exclude Var1, OtherVar
(Um nur bestimmte Variablen einzuschließen, verwenden Sie den Name-Parameter wie unten beschrieben.)
Force
Sie können den Force-Parameter bei einigen Befehlen, wie Set-Variable und Remove-Variable, verwenden, um eventuelle Einschränkungen zu umgehen, die das Abschließen des Befehls verhindern könnten.
Beispielsweise wird normalerweise jeder Versuch, den Wert einer schreibgeschützten Variablen zu ändern, wie unten gezeigt, zu einem Fehler führen:
Allerdings können Sie dieses Verhalten mit dem Parameter „Force“ überschreiben:
Name
Sie können den Name-Parameter verwenden, um sich ohne Dollarzeichen auf eine Variable zu beziehen. Insbesondere können Sie ihn verwenden, um nur Variablen zu erhalten, deren Namen einem bestimmten Muster entsprechen. Wenn Sie beispielsweise das untenstehende Cmdlet verwenden, können Sie nur Variablen abrufen, deren Namen mit „Net“ beginnen:
Get-Variable -Name "NET*"
Das Sternchen (*) ist ein Platzhalterzeichen, das für eine beliebige Anzahl zusätzlicher Zeichen steht.
Option
Sie können den Option-Parameter mit dem Set-Variable-Cmdlet angeben. Verfügbare Werte für diesen Parameter umfassen:
- Keine (Standard): Die Variable verhält sich wie eine normale Variable.
- ReadOnly: Die Variable kann nicht geändert oder gelöscht werden.
- Konstant: Die Variable kann nicht geändert oder gelöscht werden, selbst mit dem Force-Parameter.
- Privat: Die Variable ist nur im aktuellen Gültigkeitsbereich verfügbar.
- AllScope: Die Variable wird in alle neu erstellten Bereiche kopiert.
Ein Beispiel für die Option ReadOnly wird hier gezeigt:
PassThru
Standardmäßig geben die meisten Cmdlets, die eine Aktion ausführen (wie Set-Variable, New-Item und Remove-Item), nichts aus; sie führen die Aktion einfach stillschweigend durch. Wenn Sie jedoch den PassThru-Parameter verwenden, gibt das Cmdlet ein Objekt aus, das das Element repräsentiert, mit dem Sie das Cmdlet manipuliert haben.
Hier ist ein Beispiel für die Verwendung von PassThru mit Set-Variable:
WhatIf
Sie können den WhatIf-Parameter bei Cmdlets, die Änderungen vornehmen, wie Set-Variable, Remove-Variable oder Clear-Variable, verwenden, um zu sehen, was passieren würde, wenn Sie das Cmdlet ausführen, ohne tatsächliche Änderungen vorzunehmen. Das ist nützlich, wenn Sie unsicher sind, was ein Cmdlet bewirken würde. Ein Beispiel wird unten gezeigt:
Fazit
Mit einem soliden Verständnis dafür, wie PowerShell-Variablen erstellt und manipuliert werden können, können Sie PowerShell-Skripte erstellen, um Sie bei der Automatisierung von Aufgaben, Systemadministration, Softwareentwicklung und mehr zu unterstützen.
Wie Netwrix helfen kann
Müssen Sie Ihr Active Directory und Entra ID (Azure AD) Umfeld effizienter und effektiver absichern? Betrachten Sie Netwrix Directory Manager. Seine automatisierten Gruppen- und Benutzerverwaltungsfunktionen verringern das Risiko von Datenpannen und eliminieren zeitraubende manuelle Verwaltungsaufgaben.
Netwrix Directory Manager ermächtigt Sie zu:
- Automatisieren Sie das Anlegen und Entfernen von Benutzern aus Ihrem HR-Informationssystem (HRIS) zu Active Directory, Entra ID und SCIM-fähigen Anwendungen, wodurch neue Mitarbeiter schnell produktiv werden können und das Risiko verringert wird, dass Gegner veraltete Identitäten übernehmen.
- Aktualisieren Sie Verzeichnisgruppen automatisch basierend auf Änderungen wie der Beförderung eines Mitarbeiters oder dem Wechsel in eine andere Rolle, wie in Ihrem HRIS erfasst. Diese Automatisierung hält Zugriffsrechte nahezu in Echtzeit aktualisiert, wie es für Sicherheit und Compliance erforderlich ist, und spart gleichzeitig Ihrem IT-Team Zeit.
- Übertragen Sie das Gruppen- und Benutzermanagement an die Personen, die wissen, wer Zugang zu was haben sollte. Einfache Workflows ermöglichen es Geschäftsbereichsleitern, ihre Gruppen zu überprüfen und Benutzerzugriffsanfragen zu genehmigen oder abzulehnen, wodurch das Risiko von zu privilegierten Gruppen und Benutzern in Ihrem Verzeichnis verringert wird.
- Halten Sie das Verzeichnis sauber und leichter zu verwalten mit automatisierter Benutzererstellung, -ablauf und -löschung.
- Halten Sie die Einhaltung von Vorschriften und Standards aufrecht und weisen Sie diese mit tiefen Einblicken, effektiver Automatisierung und klarem Reporting über Gruppen und Mitglieder nach.
Windows PowerShell-Skripting-Tutorial für Anfänger
Erfahren Sie mehrTeilen auf
Erfahren Sie mehr
Über den Autor
Jonathan Blackwell
Leiter der Softwareentwicklung
Seit 2012 hat Jonathan Blackwell, ein Ingenieur und Innovator, eine führende Rolle in der Ingenieurskunst übernommen, die Netwrix GroupID an die Spitze des Gruppen- und Benutzermanagements für Active Directory und Azure AD Umgebungen gebracht hat. Seine Erfahrung in Entwicklung, Marketing und Vertrieb ermöglicht es Jonathan, den Identity-Markt und die Denkweise der Käufer vollständig zu verstehen.
Erfahren Sie mehr zu diesem Thema
Powershell Delete File If Exists
PowerShell Write to File: "Out-File" und Dateiausgabetechniken
So erstellen Sie neue Active Directory-Benutzer mit PowerShell
So führen Sie ein PowerShell-Skript aus
Was ist PowerShell? Ein kompletter Leitfaden zu seinen Funktionen & Anwendungen