PowerShell Variablen, Datentypen und Objekte


Grundlagen zu PowerShell Variablen und deren Datentypen.  

Variablen und Datentypen

Variablen können unterschiedlichste Inhalte haben, z.B. einen Text, eine Zahl, ein Datum oder ein Objekt. Um die Art der Inhalte festzulegen, werden Datentypen verwendet, hier ist ein kleiner Auszug aus bekannten Powershell-Datentypen:

Typ Beschreibung
[datetime] Datum und Zeit
[string]

String (Text) Zeichenkette beliebiger Länge

[regex] Regulärer Ausdruck
[xml] XML-Dokument
[int] Ganzzahl mit 32Bit Länge, negative und positive Werte

[float] und [single]

Zahl mit Nachkommastellen (Länge 32bit)
[char] einzelnes Zeichen
[double] Zahl mit Nachkommastellen (Länge 64bit)
[single] Single-precision floating number
[byte] Ganzzahl mit 8Bit Länge: nur negativ (0 - 255)
[long] Ganzzahl negativ und positiv (64bit Länge)
[dezimal] Zahl mit Nachkommastellen, 86Bit Länge
[bool] Ja-Nein-Werte
[wmi] Windows Management Instrumentation (WMI-Objekt)
[wmiclass] WMI-Klasse
[adsi] Active Directory Services object
[wmiclass] WMI-Klasse
[wmisearcher] WMI-Suchabfrage
[adsi] Verzeichnisdienstobjekt
[adsisearcher] LDAP-Suchanfrage in einem Verzeichnisdienst
[scriptblock] Powershell Skriptblock
[hashtable] Hash-Tabelle: Name-Wert von beliebigen Objekten
[psobject] PowerShell-Objekt
[type] Metadaten zu einer Klasse
... ...

Variablen ohne Typ (untypisiert)

Es ist nicht zwingend notwendig einen Datentyp anzugeben, eine Variable kann auch ohne Datentyp gespeichert werden.

$x="1" 

Beim Aufruf von $x gibt Powershell 1 zur√ľck.

Wird die Variable $x mit einem Datentyp aufgerufen, konvertiert Powershell die Variable in den jeweiligen Datentyp:

In der Ausgabe macht es keinen Unterschied, ob 1 als Zahl oder als Text ausgeben wird ... 

Typ zu einem Wert

Eine Variable kann mit dem Inhalt des Datentyps Zahl definiert werden. $x = [int]"1"

$x wurde hier mit einer Zahl "1" abgespeichert. In diesem Fall kann die Zahl mit einem Text (String) √ľberschrieben werden:

$x="stringtext" w√ľrde funktionieren, da die Variable $x f√ľr unterschiedliche Datentypen verwendet werden kann:

Im Gegensatz zu folgendem Beispiel:

Typ zu einer Variable

Wird die Variable auf einen bestimmten Datentyp festgelegt, kann diese nicht mit einem anderen Typ √ľberschrieben werden:

[int]$x = "1"

In diesem Fall wird die Variable zum Typ "int" gemacht. Die Variable kann dadirch nur mehr f√ľr Zahlen (int) verwendet werden:

Der Wert "stringtext" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."

Nur bestimmte Werte:validateset

Mit Validateset können nur bestimmte Werte erlaubt werden:

[validateset("1","2","3")][int]$x = "1" ... funktioniert

[validateset("1","2","3")][int]$x = "4" ... ist nicht zulässig

 

Die Variable kann nicht √ľberpr√ľft werden, da der Wert 4¬†kein g√ľltiger Wert f√ľr die x-Variable ist.

Datum

Werden Variablen mit dem Typ datetime verwendet, schlägt PowerShell ISE (siehe: wie erstelle ich ein PowerShell Skript ) bereits vor was mit dieser Variable möglich ist (Eigenschaften und Funktionen):

mit .AddDays k√∂nnen beispielsweise einfach eine bestimmte Anzahl an Tagen zur Variable hinzugef√ľgt oder abgezogen werden.¬†

Löschen von Variablen

Die Variable kann mit dem Befehl Remove-Variable wieder gelöscht werden:

Der Alias f√ľr Remove-Variable ist rv; Alias, siehe:¬†¬†Funktion und Begriffe

 

einfache und doppelte Anf√ľhrungszeichen

Variablen innerhalb doppelter Anf√ľhrungszeichen (") werden interpretiert, es sei¬†denn sie werden mit ` auskommentiert. Variablen innerhalb einfacher Anf√ľhrungszeichen (') werden nicht interpretiert.

Eingabe von Variablen durch den Benutzer

[int]$x=read-host -prompt "bitte eine Zahl eingeben"

Objekte-Members (GM)

In einer Variable können auch Objekte gespeichert werden. Zum Beispiel kann mit get-service ein bestimmter Dienst in einer Variable gespeichert werden:

$x=get-service -name wuauserv

Der Dienst, in unserem Beispiel wuauserv, ist ein Objekt mit bestimmten Eigenschaften und Methoden. Eine Eigenschaft könnte der Status des Dienstes sein: gestartet oder gestoppt, eine Methode den Dienst zu starten oder zu stoppen.

 

mittels Get-Member oder GM können dann alle Methoden und Eigenschaften des Objektes ausgegeben werden:

Die Variable wird mittels Pipe | an das Cmdlet Get-Member √ľbergeben. (Details zu Pipes werden sp√§ter in diesem Artikel genauer erkl√§rt:¬† PowerShell Syntax: vergleichen und verschachteln)

Die angezeigten Member können dann mit der Variable verwendet werden, z.B. "Status"

$x.status

mittels $x.start() oder $x.stop() kann der Dienst gestartet oder gestoppt werden:

Eigenschaften und Methoden einer Variable in einer Variable

Damit eine Eigenschaft einer Variable innerhalb eines Strings angewandt wird, muss diese als Variable interpretiert werden und innerhalb von $(....) stehen.

Klingt kompliziert, eventuell macht es das folgende Beispiel klarer:

ohne $(..) wird $x.day so interpretiert:

$x ohne Eigenschaft und .day als Text:

Variable mit mehreren Objekten

Wird ein Cmdlet in einer Variable gespeichert, welches mehrere Objekte beinhaltet, wird die Variable zu einem Array:

$x ruft alle Dienste auf, gleichbedeutende mit der Eingabe von get-service

$x[0] ruft das erste Objekt des Arrays auf

$x[1] das zweite Objekt

$x[-1]das letzte Objekt

$x[0..3] ruft die Objekte 1 bis 4 auf

$x.count zählt alle Objekte

$x[$x.count..0] ruft zum Beispiel alle Objekte in umgekehrter Reihenfolge auf:

Arrays werden auch in folgendem Artikel beschrieben:  Powershell Loops und Array 

 

 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE f√ľr deine Bewertung!

Aktualisiert: 30.09.2016 von Bernhard ūüĒĒ


Top-Artikel in diesem Bereich


Windows PowerShell Skript erstellen und ausf√ľhren
Im einfachsten Fall ist ein PowerShell-Skript eine Textdatei mit einer Reihe von PowerShell-Befehlen. Als PowerShell Skript versteht man eine Datei mit der Endung .ps1. Die Skriptdatei kann eine Sammlung von Befehlen, Funktionen oder Cmdlets enthalten.

Windows PowerShell Befehle: commands im √úberblick
die verf√ľgbaren PowerShell Befehle k√∂nnen mit dem Befehl:

PowerShell Loops und Array
Ein Array speichert mehrere Werte, ähnlich einer 2 spaltigen Tabelle.

Fragen / Kommentare


(sortiert nach Bewertung / Datum) [alle Kommentare(neueste zuerst)]

‚úćanonym
30.09.2016 06:01
User: Dieter 
Gutes Tutorial! Bei einfache und doppelte Anf√ľhrungszeichen hat sich noch ein Tippfehler eingeschlichen. Es muss hei√üen "es sei denn ...".
↳
‚úćBernhard
gepostet am 30.09.2016 06:01
nat√ľrlich, vielen Dank, habe ich ausgebessert

Beitrag erstellt von Bernhard

‚úćanonym
06.09.2016 08:49
User: Peter 
Gute Seite. Verständliche Beispiele. Danke!

‚úćanonym
08.08.2016 07:02
User: Stiebl 
Soweit ichs jetzt gesehen habe echt gutes und sehr einfach gehaltenes Tutorial.
Kleiner Tippfehler am Schluss bei $x[$x.cont..0] in der Beschreibung :D
↳
‚úćBernhard
gepostet am 08.08.2016 07:02
danke, habe ich ausgebessert

Beitrag erstellt von Bernhard

‚úćanonym
10.06.2016 09:39
User: joern 
Die Erklärung auf deiner Seite ist sehr gut zu verstehen. 
Danke!
Gruß aus Hamburg