Freigeben über


4. Typen

In PowerShell verfügt jeder Wert über einen Typ, und Typen fallen in eine von zwei Hauptkategorien: Werttypen und Verweistypen. Betrachten Sie den Typ int, der typisch für Werttypen ist. Ein Wert vom Typ int ist vollkommen eigenständig. Alle Bits, die zur Darstellung dieses Werts erforderlich sind, werden in diesem Wert gespeichert, und jedes Bitmuster in diesem Wert stellt einen gültigen Wert für seinen Typ dar. Betrachten Sie nun den Arraytyp int[], der typisch für Verweistypen ist. Ein so genannter Wert eines Arraytyps kann entweder einen Verweis auf ein Objekt enthalten, das die eigentlichen Arrayelemente enthält, oder den Nullverweis, dessen Wert $null lautet. Die wichtige Unterscheidung zwischen den beiden Typkategorien wird am besten anhand der semantischen Unterschiede während der Zuweisung demonstriert. Beispiel:

$i = 100 # $i designates an int value 100
$j = $i # $j designates an int value 100, which is a copy

$a = 10,20,30 # $a designates an object[], Length 3, value 10,20,30
$b = $a # $b designates exactly the same array as does $a, not a copy
$a[1] = 50 # element 1 (which has a value type) is changed from 20 to 50
$b[1] # $b refers to the same array as $a, so $b[1] is 50

Wie wir sehen können, umfasst die Zuweisung eines Verweistypwerts eine flache Kopie. Dabei handelt es sich um eine Kopie des Verweises auf das Objekt anstelle des tatsächlichen Werts. Im Gegensatz dazu muss für eine tiefe Kopie auch eine Kopie des Objekts erstellt werden.

Ein numerischer Typ ist ein Typ, der die Darstellung von Ganzzahl- oder Bruchwerten zulässt und arithmetische Operationen für diese Werte unterstützt. Die Menge numerischer Typen umfasst die Typen „Integer“ (§4.2.3) und „reelle Zahl“ (§4.2.4), aber nicht „Boolean“ (§4.2.1) oder „Char“ (§4.2.2). Eine Implementierung kann andere numerische Typen (z. B. Byte mit Vorzeichen, ganze Zahl ohne Vorzeichen und ganze Zahl anderer Größen) bereitstellen.

Eine Auflistung ist eine Gruppe von einem oder mehreren verwandten Elementen, die nicht denselben Typ aufweisen müssen. Beispiele für Auflistungstypen sind Arrays, Stapel, Warteschlangen, Listen und Hashtabellen. Ein Programm kann für die Elemente in einer Auflistung eine Enumeration (oder Iteration) durchführen, um nacheinander Zugriff auf die einzelnen Elemente zu erhalten. Gängige Methoden hierzu sind die foreach-Anweisung (§8.4.4) und das Cmdlet ForEach-Object. Der Typ eines Objekts, das einen Enumerator darstellt, wird in §4.5.16 beschrieben.

In diesem Kapitel gibt es Tabellen, in denen die zugänglichen Member für einen bestimmten Typ aufgeführt sind. Für Methoden wird der Typ in der folgenden Form geschrieben: Rückgabetyp/Argumenttypliste. Wenn die Argumenttypliste zu lang ist, um in diese Spalte zu passen, wird sie stattdessen in der Spalte Purpose angezeigt.

Andere Integertypen SByte sind Int16, UInt16, UInt32 und UInt64, die alle im Namespace System enthalten sind.

Viele Auflistungsklassen werden als Teil der Namespaces System.Collections oder System.Collections.Generic definiert. Die meisten Auflistungsklassen implementieren die Schnittstellen ICollection, IComparer, IEnumerable, IList, IDictionary und IDictionaryEnumerator sowie ihre generischen Entsprechungen.

4.1 Spezielle Typen

4.1.1 Der void-Typ

Dieser Typ kann nicht instanziiert werden. Er bietet eine Möglichkeit, einen Wert explizit mithilfe des Umwandlungsoperators (§7.2.9) zu verwerfen.

4.1.2 Der NULL-Typ

Der NULL-Typ verfügt über eine Instanz, die automatische Variable „$null“ (§2.3.2.2), die auch als NULL-Wert bezeichnet wird. Dieser Wert bietet eine Möglichkeit, „Nichts“ in Verweiskontexten auszudrücken. Die Merkmale dieses Typs sind nicht spezifiziert.

4.1.3 Der Objekttyp

Jeder Typ in PowerShell mit Ausnahme des NULL-Typs (§4.1.2) wird direkt oder indirekt vom Typ „Objekt“ abgeleitet, daher ist das Objekt der ultimative Basistyp aller Nicht-NULL-Typen. Eine auf den Typ „Objekt“ beschränkte Variable (§5.3) ist eigentlich gar nicht eingeschränkt, weil sie einen Wert eines beliebigen Typs enthalten kann.

4.2 Werttypen

4.2.1 Boolean

Der boolesche Typ lautet bool. Es gibt nur zwei Werte dieses Typs: FALSE und TRUE, dargestellt durch die automatischen Variablen $false und $true (§2.3.2.2).

In PowerShell wird bool System.Boolean zugeordnet.

4.2.2 Zeichen

Ein Zeichenwert verfügt über den Typ „char“, der jeden mit UTF-16 codierten 16-Bit-Unicode-Codepunkt speichern kann.

Der Typ „char“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) char Der größtmögliche Wert des Typs „char“.
MinValue Statische Eigenschaft (schreibgeschützt) char Der kleinstmögliche Wert des Typs „char“.
IsControl für eine statische Methode bool/char Testet, ob das Zeichen ein Steuerzeichen ist.
IsDigit für eine statische Methode bool/char Testet, ob das Zeichen eine Dezimalziffer ist.
IsLetter für eine statische Methode bool/char Testet, ob das Zeichen ein Buchstabe ist.
IsLetterOrDigit für eine statische Methode bool/char Testet, ob das Zeichen eine Dezimalziffer oder ein Buchstabe ist.
IsLower für eine statische Methode bool/char Testet, ob das Zeichen ein Kleinbuchstabe ist.
IsPunctuation für eine statische Methode bool/char Testet, ob das Zeichen ein Satzzeichen ist.
IsUpper für eine statische Methode bool/char Testet, ob das Zeichen ein Großbuchstabe ist.
IsWhiteSpace für eine statische Methode bool/char Testet, ob das Zeichen ein Leerraumzeichen ist.
ToLower für eine statische Methode char/string Konvertiert das Zeichen in einen Kleinbuchstaben.
ToUpper für eine statische Methode char/string Konvertiert das Zeichen in einen Großbuchstaben.

Windows PowerShell: „char“ wird „System.Char“ zugeordnet.

4.2.3 Integer

Es gibt zwei ganzzahlige Typen mit Vorzeichen, die beide die Zweierkomplementdarstellung für negative Werte verwenden:

  • Der Typ int verwendet 32 Bits und umfasst somit einen Bereich von -2147483648 bis +2147483647 (einschließlich).
  • Der Typ long verwendet 64 Bits und umfasst somit einen Bereich von -9223372036854775808 bis +9223372036854775807 (einschließlich).

Der Typ „int“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) INT Der größtmögliche Wert des Typs „int“.
MinValue Statische Eigenschaft (schreibgeschützt) INT Der kleinstmögliche Wert des Typs „int“.

Der Typ „long“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) long Der größtmögliche Wert des Typs „long“.
MinValue Statische Eigenschaft (schreibgeschützt) long Der kleinstmögliche Wert des Typs „long“.

Es gibt einen ganzzahligen Typ ohne Vorzeichen:

  • Der Typ byte verwendet 8 Bits und umfasst somit einen Bereich von 0 bis 255 (einschließlich).

Der Typ „byte“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) byte Der größtmögliche Wert des Typs „byte“.
MinValue Statische Eigenschaft (schreibgeschützt) byte Der kleinstmögliche Wert des Typs „byte“.

In PowerShell werden byte, int und long jeweils System.Byte, System.Int32 und System.Int64 zugeordnet.

4.2.4 Reelle Zahl

4.2.4.1 „float“ und „double“

Es gibt zwei reelle Typen (oder Gleitkommatypen):

  • Der Typ float verwendet die 32-Bit-IEEE-Darstellung mit einfacher Genauigkeit.
  • Der Typ double verwendet die 64-Bit-IEEE-Darstellung mit doppelter Genauigkeit.

Ein dritter Typname, single, ist ein Synonym für den Typ float. In dieser Spezifikation wird ausschließlich float verwendet.

Obwohl die Größe und Darstellung der Typen float und double durch diese Spezifikation definiert sind, kann in einer Implementierung die erweiterte Genauigkeit für Zwischenergebnisse verwendet werden.

Der Typ „float“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) float Der größtmögliche Wert des Typs „float“.
MinValue Statische Eigenschaft (schreibgeschützt) float Der kleinstmögliche Wert des Typs „float“.
NaN Statische Eigenschaft (schreibgeschützt) float Der konstante Wert „NaN“ (Not a Number).
NegativeInfinity Statische Eigenschaft (schreibgeschützt) float Der konstante Wert der negativen Unendlichkeit.
PositiveInfinity Statische Eigenschaft (schreibgeschützt) float Der konstante Wert der positiven Unendlichkeit.

Der Typ „double“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) double Der größtmögliche Wert des Typs „double“.
MinValue Statische Eigenschaft (schreibgeschützt) double Der kleinstmögliche Wert des Typs „double“.
NaN Statische Eigenschaft (schreibgeschützt) double Der konstante Wert „NaN“ (Not a Number).
NegativeInfinity Statische Eigenschaft (schreibgeschützt) double Der konstante Wert der negativen Unendlichkeit.
PositiveInfinity Statische Eigenschaft (schreibgeschützt) double Der konstante Wert der positiven Unendlichkeit.

In PowerShell werden float und double jeweils System.Single und System.Double zugeordnet.

4.2.4.2 Dezimal

Der Dezimaltyp „Decimal“ verwendet eine 128-Bit-Darstellung. Er muss mindestens eine Nachkommastelle s mit 0 <= s <= mindestens 28 unterstützen sowie einen Wertbereich zwischen -79228162514264337593543950335 und 79228162514264337593543950335. Die tatsächliche Darstellung des Dezimaltyps wird durch die Implementierung definiert.

Der Typ „Decimal“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
MaxValue Statische Eigenschaft (schreibgeschützt) Decimal Der größtmögliche Wert des Typs „Decimal“.
MinValue Statische Eigenschaft (schreibgeschützt) Decimal Der kleinstmögliche Wert des Typs „Decimal“.

Hinweis

Reelle Dezimalzahlen weisen das Merkmal der Nachkommastelle auf, das die Reihe der Ziffern rechts vom Dezimaltrennzeichen darstellt. Zum Beispiel weist der Wert 2,340 drei Nachkommastellen auf, wobei nachstehende Nullen signifikant sind. Wenn zwei reelle Dezimalzahlen addiert oder subtrahiert werden, entspricht die Anzahl der Nachkommastellen des Ergebnisses der höheren Anzahl der beiden Nachkommastellen-Werte. Beispiel: 1,0 + 2,000 = 3,000, aber 5,0 - 2,00 = 3.00. Wenn zwei reelle Dezimalzahlen multipliziert werden, entspricht die Anzahl der Nachkommastellen des Ergebnisses der Summe der beiden Nachkommastellenwerte. Beispiel: 1,0 × 2,000 = 2,0000. Wenn zwei reelle Dezimalzahlen dividiert werden, entspricht die Anzahl der Nachkommastellen im Ergebnis der Nachkommastellenanzahl der zu teilenden Zahl minus der Nachkommastellenanzahl des Teilers. Beispiel: 4,00000/2,000 = 2,00. Die Nachkommastellenanzahl muss jedoch groß genug sein, um das richtige Ergebnis darzustellen. Beispiel: 3,000/2,000, 3,00/2,000, 3,0/2,000 und 3/2 ergeben alle 1,5.

In PowerShell wird decimal System.Decimal zugeordnet. Die Darstellung von „Decimal“ lautet wie folgt:

  • Wenn er als Array aus vier int-Werten betrachtet wird, enthält er die folgenden Elemente:
    • Index 0 (Bits 0–31) enthält die niederwertigen 32 Bits des Dezimalkoeffizienten.
    • Index 1 (Bits 32–63) enthält die mittleren 32 Bits des Dezimalkoeffizienten.
    • Index 2 (Bits 64–95) enthält die höherwertigen 32 Bits des Dezimalkoeffizienten.
    • Index 3 (Bits 96–127) enthält das Vorzeichenbit und die Nachkommastellen wie folgt:
      • Bits 0 bis 15 sind null.
      • Bits 16 bis 23 enthalten die Nachkommastellen als Wert von 0 bis 28.
      • Bits 24 bis 30 sind null.
      • Bit 31 ist das Vorzeichen (0 für positiv, 1 für negativ).

4.2.5 Der Typ „Switch“

Dieser Typ wird verwendet, um den Typ eines Parameters in einem Befehl einzuschränken (§8.10.5). Wenn ein Argument mit dem entsprechenden Parameternamen vorhanden ist, weist der Parameter den Wert „$true“ auf. Andernfalls ergibt er $false.

In PowerShell wird switch System.Management.Automation.SwitchParameter zugeordnet.

4.2.6 Enumerationstypen

Ein Enumerationstyp definiert eine Menge benannter Konstanten, die alle möglichen Werte darstellen, die einem Objekt dieses Enumerationstyps zugewiesen werden können. In einigen Fällen ist die Menge der Werte so beschaffen, dass jeweils nur ein Wert dargestellt werden kann. In anderen Fällen sind die Werte unterschiedliche Potenzen von zwei, und über den Operator -bor (§7.8.5) können mehrere Werte in demselben Objekt codiert werden.

Die PowerShell-Umgebung stellt eine Reihe von Enumerationstypen bereit, wie in den folgenden Abschnitten beschrieben.

4.2.6.1 Typ für Aktionspräferenzen

Dieser durch die Implementierung definierte Typ verfügt über die folgenden zugänglichen Member, deren Werte sich gegenseitig ausschließen:

Member Memberart Zweck
Continue Enumerationskonstante Die PowerShell-Runtime setzt die Verarbeitung fort und benachrichtigt den Benutzer, dass eine Aktion erfolgt ist.
Diagnosetool Enumerationskonstante Die PowerShell-Runtime beendet die Verarbeitung und fragt den Benutzer, wie der Vorgang fortgesetzt werden soll.
SilentlyContinue Enumerationskonstante Die PowerShell-Runtime setzt die Verarbeitung fort, ohne den Benutzer darüber zu benachrichtigen, dass eine Aktion erfolgt ist.
Beenden Enumerationskonstante Die PowerShell-Runtime beendet die Verarbeitung, wenn eine Aktion erfolgt.

In PowerShell heißt dieser Typ System.Management.Automation.ActionPreference.

4.2.6.2 Typ zur Auswirkungsbestätigung

Dieser durch die Implementierung definierte Typ verfügt über die folgenden zugänglichen Member, deren Werte sich gegenseitig ausschließen:

Member Memberart Zweck
Hoch Enumerationskonstante Die ausgeführte Aktion birgt ein hohes Datenverlustrisiko, z. B. die Neuformatierung einer Festplatte.
Niedrig Enumerationskonstante Die ausgeführte Aktion birgt ein geringes Datenverlustrisiko.
Medium Enumerationskonstante Die ausgeführte Aktion birgt ein mittleres Datenverlustrisiko.
Keine Enumerationskonstante Es werden keine Aktionen bestätigt (alle Bestätigungsanforderungen werden unterdrückt).

In PowerShell heißt dieser Typ System.Management.Automation.ConfirmImpact.

4.2.6.3 Typ für Dateiattribute

Dieser durch die Implementierung definierte Typ verfügt über die folgenden zugänglichen Member, die kombiniert werden können:

Member Memberart Zweck
Archivieren Enumerationskonstante Der Archivstatus der Datei. Anwendungen verwenden dieses Attribut, um Dateien für die Sicherung oder Entfernung zu markieren.
Compressed Enumerationskonstante Die Datei ist komprimiert.
Gerät Für die zukünftige Verwendung reserviert.
Verzeichnis Enumerationskonstante Die Datei ist ein Verzeichnis.
Verschlüsselt Enumerationskonstante Die Datei oder das Verzeichnis ist verschlüsselt. Bei einer Datei bedeutet dies, dass alle Daten in der Datei verschlüsselt sind. Bei einem Verzeichnis bedeutet dies, dass neu erstellte Dateien und Verzeichnisse standardmäßig verschlüsselt werden.
Ausgeblendet Enumerationskonstante Die Datei ist versteckt und daher nicht in einer normalen Verzeichnisliste enthalten.
Normal Enumerationskonstante Die Datei entspricht der Norm und weist keine weiteren Attribute auf. Dieses Attribut ist nur gültig, wenn es allein verwendet wird.
NotContentIndexed Enumerationskonstante Die Datei wird nicht vom Inhaltsindexdienst des Betriebssystems indiziert.
Offline Enumerationskonstante Die Datei ist eine Offlinedatei. Die Daten der Datei sind nicht sofort verfügbar.
ReadOnly Enumerationskonstante Die Datei ist schreibgeschützt.
ReparsePoint Enumerationskonstante Die Datei enthält einen Analysepunkt. Dies ist ein Block mit benutzerdefinierten Daten, die mit einer Datei oder einem Verzeichnis verknüpft sind.
SparseFile Enumerationskonstante Die Datei ist eine Datei mit geringer Dichte. Sparsedateien sind normalerweise große Dateien, deren Daten hauptsächlich aus Nullen bestehen.
System Enumerationskonstante Die Datei ist eine Systemdatei. Die Datei ist Teil des Betriebssystems oder wird ausschließlich durch das Betriebssystem verwendet.
Temporäre Prozeduren Enumerationskonstante Die Datei ist temporär. Dateisysteme versuchen alle Daten für einen schnelleren Zugriff im Speicher zu behalten, anstatt diese zurück in den Massenspeicher zu entleeren. Eine temporäre Datei sollte von der Anwendung gelöscht werden, sobald sie nicht mehr benötigt wird.

In PowerShell lautet dieser Typ „System.IO.FileAttributes“ mit dem Attribut „FlagsAttribute“.

4.2.6.4 Typ für Optionen regulärer Ausdrücke

Dieser durch die Implementierung definierte Typ verfügt über die folgenden zugänglichen Member, die kombiniert werden können:

Member Memberart Zweck
IgnoreCase Enumerationskonstante Gibt an, dass beim Abgleich die Groß-/Kleinschreibung nicht beachtet wird.
Keine Enumerationskonstante Gibt an, dass keine Optionen festgelegt wurden.

Eine Implementierung kann andere Werte bereitstellen.

In PowerShell lautet dieser Typ System.Text.RegularExpressions.RegexOptions mit dem Attribut FlagsAttribute. Die folgenden zusätzlichen Werte sind definiert: Compiled, CultureInvariant, ECMAScript, ExplicitCapture, IgnorePatternWhitespace, Multiline, RightToLeft, Singleline.

4.3 Verweistypen

4.3.1 Zeichenfolgen

Ein Zeichenfolgenwert verfügt über den Typ „string“ und ist eine unveränderliche Sequenz von null oder mehr Zeichen vom Typ „char“, die jeweils einen mit UTF-16 codierten 16-Bit-Unicode-Codepunkt enthalten.

Der Typ „string“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Länge Instanzeigenschaft int (schreibgeschützt) Ruft die Anzahl der Zeichen in der Zeichenfolge ab.
ToLower Instanzmethode Zeichenfolge Erstellt eine neue Zeichenfolge, die die Entsprechung in Kleinbuchstaben enthält.
ToUpper Instanzmethode Zeichenfolge Erstellt eine neue Zeichenfolge, die die Entsprechung in Großbuchstaben enthält.

In PowerShell wird string System.String zugeordnet.

4.3.2 Arrays

Alle Arraytypen werden vom Typ Array abgeleitet. Dieser Typ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Länge Instanzeigenschaft (schreibgeschützt) INT Anzahl von Elementen im Array.
Rang Instanzeigenschaft (schreibgeschützt) INT Anzahl von Dimensionen im Array.
Kopieren Statische Methode void/siehe Spalte „Zweck“

Kopiert einen Bereich von Elementen aus einem Array in ein anderes. Es gibt vier Versionen, wobei Quelle das Quellarray, Ziel das Zielarray, Anzahl die Anzahl der zu kopierenden Elemente und Quellindex bzw. Zielindex die Startpunkte in den jeweiligen Arrays darstellen:

Copy(Quelle, Ziel, int Anzahl)
Copy(Quelle, Ziel, long Anzahl)
Copy(Quelle, Quellindex, Ziel, Zielindex, int Anzahl)
Copy(Quelle, Quellindex, Ziel, Zielindex, long Anzahl)

GetLength Instanzmethode (schreibgeschützt) int/none

Anzahl von Elementen in einer bestimmten Dimension.

GetLength(int dimension)

Weitere Informationen zu Arrays finden Sie unter §9.

In PowerShell wird Array System.Array zugeordnet.

4.3.3 Hashtabellen

Der Typ „Hashtabelle“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Anzahl Instanzeigenschaft INT Ruft die Anzahl von Schlüssel-Wert-Paaren in der Hashtabelle ab.
Schlüssel Instanzeigenschaft Durch die Implementierung definiert Ruft eine Auflistung aller Schlüssel ab.
Werte Instanzeigenschaft Durch die Implementierung definiert Ruft eine Auflistung aller Werte ab.
Entfernen Instanzmethode void/none Entfernt den angegebenen Schlüssel/Wert.

Weitere Informationen zu Hashtabellen finden Sie unter §10.

In PowerShell wird Hashtable System.Collections.Hashtable zugeordnet. Hashtable-Elemente werden in einem Objekt vom Typ DictionaryEntry gespeichert, und die von „Keys“ und „Values“ zurückgegebenen Auflistungen weisen den Typ ICollection auf.

4.3.4 Der XML-Typ

Der Typ „XML“ implementiert DOM (Dokumentobjektmodell) Level 1 Core und DOM Level 2 Core des W3C. Das DOM ist eine Strukturdarstellung eines XML-Dokuments im Arbeitsspeicher (Cache) und ermöglicht die Navigation und Bearbeitung dieses Dokuments. Dieser Typ unterstützt den Subscript-Operator [] (§7.1.4.4).

In PowerShell wird xml System.Xml.XmlDocument zugeordnet.

4.3.5 Der regex-Typ

Der Typ regex stellt die Ausrüstung zur Unterstützung der Verarbeitung regulärer Ausdrücke bereit. Er wird verwendet, um den Typ eines Parameters (§5.3) einzuschränken, dessen entsprechendes Argument einen regulären Ausdruck enthalten kann.

In PowerShell wird regex System.Text.RegularExpressions.Regex zugeordnet.

4.3.6 Der ref-Typ

Normalerweise werden Argumente nach Wert an Befehle übergeben. Falls ein Argument einen Werttyp aufweist, wird eine Kopie des Werts übergeben. Falls ein Argument einen Verweistyp aufweist, wird eine Kopie des Verweises übergeben.

Der Typ „ref“ bietet die notwendige Ausrüstung, um Argumente durch Verweis an Befehle zu übergeben, sodass die Befehle den Wert des Arguments ändern können. Der Typ „ref“ umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Wert Instanzeigenschaft (Lese-/Schreibzugriff) Der Typ des Werts, auf den verwiesen wird. Ruft den Wert ab, auf den verwiesen wird, oder legt ihn fest.

Betrachten Sie die folgende Funktionsdefinition und den entsprechenden Aufruf:

function Doubler {
    param ([ref]$x) # parameter received by reference
    $x.Value *= 2.0 # note that 2.0 has type double
}

$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type double, value 8.0

Betrachten Sie den Fall, in dem $number auf einen Typ beschränkt ist:

[int]$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type int, value 8

Wie gezeigt, müssen sowohl das Argument als auch der entsprechende Parameter als ref deklariert werden.

In PowerShell wird ref System.Management.Automation.PSReference zugeordnet.

4.3.7 Der scriptblock-Typ

Der Typ scriptblock stellt einen vorkompilierten Block von Skripttext (§7.1.8) dar, der als einzelne Einheit verwendet werden kann. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Attribute Instanzeigenschaft (schreibgeschützt) Auflistung von Attributen Ruft die Attribute des Skriptblocks ab.
Datei Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Namen der Datei ab, in der der Skriptblock definiert ist.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert ([§4.5.12][§4.5.12]) Ruft Informationen über das Modul ab, in dem der Skriptblock definiert ist.
GetNewClosure für eine Instanzmethode scriptblock
/none
Ruft einen Skriptblock ab, der an ein Modul gebunden ist. Alle lokalen Variablen, die sich im Kontext des Aufrufers befinden, werden in das Modul kopiert.
Invoke für eine Instanzmethode Auflistung von object/object[] Ruft den Skriptblock mit den angegebenen Argumenten auf und gibt die Ergebnisse zurück.
InvokeReturnAsIs für eine Instanzmethode object/object[] Ruft den Skriptblock mit den angegebenen Argumenten auf und gibt ggf. generierte Objekte zurück.
Erstellen für eine statische Methode scriptblock
/string
Erstellt ein neues scriptblock-Objekt, das das angegebene Skript enthält.

In PowerShell wird scriptblock System.Management.Automation.ScriptBlock zugeordnet. Invoke gibt eine Auflistung von PsObject zurück.

4.3.8 Der math-Typ

Der Typ math bietet Zugriff auf einige Konstanten und Methoden, die in mathematischen Berechnungen nützlich sind. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
E Statische Eigenschaft (schreibgeschützt) double Basis des natürlichen Logarithmus.
PI Statische Eigenschaft (schreibgeschützt) double Verhältnis zwischen Umfang und Durchmesser eines Kreises.
Abs für eine statische Methode numeric/numeric Absoluter Wert (der Rückgabetyp entspricht dem Typ des übergebenen Arguments).
Acos für eine statische Methode double/double Winkel, dessen Kosinus der angegebenen Zahl entspricht.
Asin für eine statische Methode double/double Winkel, dessen Sinus der angegebenen Zahl entspricht.
Atan für eine statische Methode double/double Winkel, dessen Tangens der angegebenen Zahl entspricht.
Atan2 für eine statische Methode double/double y, double x Winkel, dessen Tangens dem Quotienten aus zwei angegebenen Zahlen x und y entspricht.
Ceiling für eine statische Methode

decimal/decimal

double/double

Kleinste ganze Zahl, die größer oder gleich der angegebenen Zahl ist.
Cos für eine statische Methode double/double Kosinus des angegebenen Winkels.
Cosh für eine statische Methode double/double Kosinus Hyperbolicus des angegebenen Winkels.
Exp für eine statische Methode double/double e potenziert mit der angegebenen Zahl
Etage für eine statische Methode

decimal/decimal

double/double

Größte ganze Zahl, die kleiner oder gleich der angegebenen Zahl ist.
Log für eine statische Methode

double/double Zahl

double/double Zahl, double Basis

Logarithmus der Zahl zur Basis e oder Basis.
Log10 für eine statische Methode double/double Logarithmus einer angegebenen Zahl zur Basis 10
Max für eine statische Methode numeric/numeric Die größere von zwei angegebenen Zahlen (der Rückgabetyp entspricht dem Typ der übergebenen Argumente).
Min für eine statische Methode numeric/numeric, numeric Die kleinere von zwei angegebenen Zahlen (der Rückgabetyp entspricht dem Typ der übergebenen Argumente).
Pow für eine statische Methode double/double x, double y Eine angegebene Zahl x potenziert mit dem angegebenen Wert y.
Sin für eine statische Methode double/double Sinus des angegebenen Winkels.
Sinh für eine statische Methode double/double Sinus Hyperbolicus des angegebenen Winkels.
Sqrt für eine statische Methode double/double Quadratwurzel einer angegebenen Zahl.
Tan für eine statische Methode double/double Tangens des angegebenen Winkels.
Tanh für eine statische Methode double/double Tangens Hyperbolicus des angegebenen Winkels.

In PowerShell wird Math System.Math zugeordnet.

4.3.9 Der ordered-Typ

Der Typ ordered ist ein Pseudotyp, der nur für Konvertierungen verwendet wird.

4.3.10 Der pscustomobject-Typ

Der Typ pscustomobject ist ein Pseudotyp, der nur für Konvertierungen verwendet wird.

4.4 Generische Typen

Eine Reihe von Programmiersprachen und Umgebungen stellen Typen bereit, die spezialisiert werden können. Viele dieser Typen werden als Containertypen bezeichnet, weil Instanzen von ihnen Objekte eines anderen Typs enthalten können. Betrachten Sie beispielsweise den Typ „Stapel“, der einen Stapel von Werten darstellen kann, die per Push hinzugefügt oder per Pop entfernt werden können. In der Regel möchte der Benutzer eines Stapels nur eine Art von Objekt in diesem Stapel speichern. Wenn die Sprache oder Umgebung jedoch keine Typspezialisierung unterstützt, müssen mehrere unterschiedliche Varianten des Typs „Stapel“ implementiert werden, obwohl alle dieselbe Aufgabe nur mit unterschiedlichen Typelementen ausführen.

Durch die Typspezialisierung kann ein generischer Typ so implementiert werden, dass er bei Verwendung auf die Verarbeitung einer Teilmenge von Typen beschränkt werden kann. Beispiel:

  • Ein generischer Stapeltyp, der auf Zeichenfolgen spezialisiert ist, kann folgendermaßen geschrieben werden: Stack[string].
  • Ein generischer Wörterbuchtyp, der auf int-Schlüssel mit zugeordneten Zeichenfolgenwerten spezialisiert ist, kann folgendermaßen geschrieben werden: Dictionary[int,string].
  • Ein Stapel eines Stapels aus Zeichenfolgen kann folgendermaßen geschrieben werden: Stack[Stack[string]].

PowerShell definiert keine integrierten generischen Typen, kann diese jedoch verwenden, wenn sie von der Hostumgebung bereitgestellt werden. Informationen zur Syntax finden Sie unter §7.1.10.

Der vollständige Name für den oben vorgeschlagenen Typ Stack[string] lautet System.Collections.Generic.Stack[string]. Der vollständige Name für den oben vorgeschlagenen Typ Dictionary[int,string] lautet System.Collections.Generic.Dictionary[int,string].

4.5 Anonyme Typen

Unter bestimmten Umständen erstellt eine Implementierung von PowerShell Objekte eines bestimmten Typs, und diese Objekte verfügen über Member, die für Skripts zugänglich sind. Der tatsächliche Name dieser Typen muss jedoch nicht angegeben werden, solange die zugänglichen Member so angegeben werden, dass sie verwendet werden können. Demzufolge können Skripts Objekte dieser Typen speichern und auf ihre Member zugreifen, ohne die Namen dieser Typen zu kennen. In den folgenden Unterabschnitten werden diese Typen beschrieben.

4.5.1 Typ zur Anbieterbeschreibung

Dieser Typ kapselt den Zustand eines Anbieters. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Laufwerke Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.2) Eine Auflistung von Laufwerkbeschreibungsobjekten
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Anbieters.

In PowerShell heißt dieser Typ System.Management.Automation.ProviderInfo.

4.5.2 Typ zur Laufwerkbeschreibung

Dieser Typ kapselt den Zustand eines Laufwerks. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
CurrentLocation Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Der aktuelle Betriebsort (§3.1.4) des Laufwerks.
BESCHREIBUNG Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Beschreibung des Laufwerks.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Laufwerks.
Root Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Laufwerks.

In PowerShell heißt dieser Typ System.Management.Automation.PSDriveInfo.

4.5.3 Typ zur Variablenbeschreibung

Dieser Typ kapselt den Zustand einer Variablen. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Attribute Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Eine Auflistung von Attributen.
BESCHREIBUNG Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Beschreibung, die der Variablen über das Cmdlet New-Variable oder Set-Variable zugewiesen wird.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.12) Das Modul, aus dem diese Variable exportiert wurde.
ModuleName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Das Modul, in dem diese Variable definiert wurde.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name, der der Variablen bei ihrer Erstellung in der PowerShell-Sprache oder über die Cmdlets New-Variable und Set-Variable zugewiesen wurde.
Optionen Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Optionen, die der Variablen über die Cmdlets New-Variable und Set-Variable zugewiesen wurden.
Wert Instanzeigenschaft (Lese-/Schreibzugriff) Objekt (object) Der Wert, der der Variablen bei ihrer Erstellung in der PowerShell-Sprache oder über die Cmdlets New-Variable und Set-Variable zugewiesen wurde.

In PowerShell heißt dieser Typ System.Management.Automation.PSVariable.

Windows PowerShell: Der Typ der Attributauflistung lautet System.Management.Automation.PSVariableAttributeCollection.

4.5.4 Typ zur Aliasbeschreibung

Dieser Typ kapselt den Zustand eines Alias. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
CommandType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Sollte „Alias“ entsprechen.
Definition Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Befehl oder Alias, dem der Alias über die Cmdlets New-Alias oder Set-Alias zugewiesen wurde.
BESCHREIBUNG Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Beschreibung, die dem Alias über das Cmdlet New-Alias oder Set-Alias zugewiesen wurde.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.12) Das Modul, aus dem dieser Alias exportiert wurde.
ModuleName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Das Modul, in dem dieser Alias definiert wurde.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name, der dem Alias bei seiner Erstellung über das Cmdlet New-Alias oder Set-Alias zugewiesen wurde.
Optionen Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Optionen, die dem Alias über das Cmdlet New-Alias oder Set-Alias zugewiesen wurden.
OutputType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Gibt die Typen der Werte an, die von dem Befehl ausgegeben werden, auf den der Alias verweist.
Parameter Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Die Parameter des Befehls.
ParameterSets Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Informationen zu den Parametersätzen, die dem Befehl zugeordnet sind.
ReferencedCommand Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Informationen zu dem Befehl, auf den dieser Alias direkt verweist.
ResolvedCommand Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Informationen zu dem Befehl, in den der Alias schließlich aufgelöst wird.

In PowerShell heißt dieser Typ System.Management.Automation.AliasInfo.

4.5.5 Typ zur Beschreibung des Betriebsorts

Dieser Typ kapselt den Zustand eines Betriebsorts. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Laufwerk Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.2) Ein Laufwerkbeschreibungsobjekt.
Pfad Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Betriebsort.
Anbieter Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.1) Der Anbieter.
ProviderPath Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der aktuelle Pfad des Anbieters.

Ein Stapel von Betriebsorten ist eine Auflistung von Betriebsortobjekten, wie oben beschrieben.

In PowerShell wird ein aktueller Betriebsort durch ein Objekt vom Typ System.Management.Automation.PathInfo dargestellt. Ein Stapel von Betriebsorten wird durch ein Objekt vom Typ System.Management.Automation.PathInfoStack dargestellt, bei dem es sich um eine Auflistung von PathInfo-Objekten handelt.

4.5.6 Typ zur Beschreibung von Umgebungsvariablen

Dieser Typ kapselt den Zustand einer Umgebungsvariablen. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Name Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Der Name der Umgebungsvariablen.
Wert Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Der Wert der Umgebungsvariablen.

In PowerShell heißt dieser Typ System.Collections.DictionaryEntry. Der Name der Variablen ist der Wörterbuchschlüssel. Der Wert der Umgebungsvariablen ist der Wörterbuchwert. Name ist eine AliasProperty, die dem Schlüssel Key entspricht.

4.5.7 Typ zur Anwendungsbeschreibung

Dieser Typ kapselt den Zustand einer Anwendung. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
CommandType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Sollte „Application“ entsprechen.
Definition Instanzeigenschaft (schreibgeschützt) Zeichenfolge Eine Beschreibung der Anwendung.
Durchwahl Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Erweiterung der Anwendungsdatei.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.12) Das Modul, das diesen Befehl definiert.
ModuleName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Moduls, das den Befehl definiert.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Befehls.
OutputType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Gibt die Typen der Werte an, die vom Befehl ausgegeben werden.
Parameter Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Die Parameter des Befehls.
ParameterSets Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Informationen zu den Parametersätzen, die dem Befehl zugeordnet sind.
Pfad Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Pfad der Anwendungsdatei ab.

In PowerShell heißt dieser Typ System.Management.Automation.ApplicationInfo.

4.5.8 Typ zur Cmdlet-Beschreibung

Dieser Typ kapselt den Zustand eines Cmdlets. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
CommandType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Sollte „Cmdlet“ entsprechen.
DefaultParameterSet Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Der Standardparametersatz, der verwendet wird, wenn PowerShell anhand der angegebenen Argumente nicht bestimmen kann, welcher Parametersatz verwendet werden soll.
Definition Instanzeigenschaft (schreibgeschützt) Zeichenfolge Eine Beschreibung des Cmdlets.
HelpFile Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Der Pfad zur Hilfedatei für das Cmdlet.
ImplementingType Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert Der Typ, der das Cmdlet implementiert.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.12) Das Modul, das dieses Cmdlet definiert.
ModuleName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Moduls, das das Cmdlet definiert.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Cmdlets.
Nomen Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Substantivname des Cmdlets.
OutputType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Gibt die Typen der Werte an, die vom Cmdlet ausgegeben werden.
Parameter Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Die Parameter des Cmdlets.
ParameterSets Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Informationen zu den Parametersätzen, die dem Cmdlet zugeordnet sind.
Verb Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Verbname des Cmdlets.
PSSnapIn Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Windows PowerShell: Informationen zum Windows PowerShell-Snap-In, das zum Registrieren des Cmdlets verwendet wird.

In PowerShell heißt dieser Typ System.Management.Automation.CmdletInfo.

4.5.9 Typ zur Beschreibung externer Skripts

Dieser Typ kapselt den Zustand eines externen Skripts (eines Skripts, das direkt von PowerShell ausführbar, aber nicht darin integriert ist). Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
CommandType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Sollte „ExternalScript“ entsprechen.
Definition Instanzeigenschaft (schreibgeschützt) Zeichenfolge Eine Definition des Skripts.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.12) Das Modul, das dieses Skript definiert.
ModuleName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Moduls, das das Skript definiert.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Skripts.
OriginalEncoding Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Die ursprüngliche Codierung, die zum Konvertieren der Zeichen des Skripts in Bytes verwendet wird.
OutputType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Gibt die Typen der Werte an, die vom Skript ausgegeben werden.
Parameter Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Die Parameter des Skripts.
ParameterSets Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Informationen zu den Parametersätzen, die dem Skript zugeordnet sind.
Pfad Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Pfad zur Skriptdatei.
ScriptBlock Instanzeigenschaft (schreibgeschützt) scriptblock Das externe Skript.
ScriptContents Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der ursprüngliche Inhalt des Skripts.

In PowerShell heißt dieser Typ System.Management.Automation.ExternalScriptInfo.

4.5.10 Typ zur Funktionsbeschreibung

Dieser Typ kapselt den Zustand einer Funktion. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
CmdletBinding Instanzeigenschaft (schreibgeschützt) bool Gibt an, ob die Funktion dieselbe Parameterbindung verwendet, die von kompilierten Cmdlets verwendet wird (siehe §12.3.5).
CommandType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Kann auf Gleichheit mit „Function“ oder „Filter“ verglichen werden, um festzustellen, welchem dieser Elemente dieses Objekt entspricht.
DefaultParameterSet Instanzeigenschaft (schreibgeschützt) Zeichenfolge Gibt den Parametersatz an, der verwendet werden soll, wenn er nicht anhand der Argumente ermittelt werden kann (siehe §12.3.5).
Definition Instanzeigenschaft (schreibgeschützt) Zeichenfolge Eine Zeichenfolgenversion von ScriptBlock.
BESCHREIBUNG Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Beschreibung der Funktion.
Modul Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert (§4.5.12) Das Modul, aus dem diese Funktion exportiert wurde.
ModuleName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Das Modul, in dem diese Funktion definiert wurde.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name der Funktion.
Optionen Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert Die Bereichsoptionen für die Funktion (§3.5.4).
OutputType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Gibt die Typen der ausgegebenen Werte in der entsprechenden Reihenfolge an (siehe §12.3.6).
Parameter Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Gibt die Parameternamen in der entsprechenden Reihenfolge an. Wenn die Funktion wie ein Cmdlet fungiert (siehe „CmdletBinding“ weiter oben), werden die allgemeinen Parameter am Ende der Auflistung aufgeführt.
ParameterSets Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Informationen zu den Parametersätzen, die dem Befehl zugeordnet sind. Für jeden Parameter zeigt das Ergebnis den Parameternamen und -typ an und weist darauf hin, ob der Parameter obligatorisch, positionell oder ein Switch-Parameter ist. Wenn die Funktion wie ein Cmdlet fungiert (siehe „CmdletBinding“ weiter oben), werden die allgemeinen Parameter am Ende der Auflistung aufgeführt.
ScriptBlock Instanzeigenschaft (schreibgeschützt) scriptblock (§4.3.6) Der Text der Funktion.

In PowerShell heißt dieser Typ System.Management.Automation.FunctionInfo.

  • CommandType weist den Typ System.Management.Automation.CommandTypes auf.
  • Options weist den Typ System.Management.Automation.ScopedItemOptions auf.
  • OutputType weist den Typ System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.PSTypeName,System.Management.Automation]] auf.
  • Parameters weist den Typ System.Collections.Generic.Dictionary``2[[System.String,mscorlib],[System.Management.Automation.ParameterMetadata,System.Management.Automation]] auf.
  • ParameterSets weist den Typ System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.CommandParameterSetInfo,System.Management.Automation]] auf.
  • Visibility weist den Typ System.Management.Automation.SessionStateEntryVisibility auf.
  • PowerShell verfügt ebenfalls über eine Eigenschaft namens Visibility.

4.5.11 Typ zur Filterbeschreibung

Dieser Typ kapselt den Zustand eines Filters. Er verfügt über die gleiche Menge zugänglicher Member wie der Funktionsbeschreibungstyp (§4.5.10).

In PowerShell heißt dieser Typ System.Management.Automation.FilterInfo. Er verfügt über die gleiche Menge von Eigenschaften wie System.Management.Automation.FunctionInfo (§4.5.11).

4.5.12 Typ zur Modulbeschreibung

Dieser Typ kapselt den Zustand eines Moduls. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
BESCHREIBUNG Instanzeigenschaft (Lese-/Schreibzugriff) Zeichenfolge Die Beschreibung des Moduls (durch das Manifest festgelegt).
ModuleType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Der Typ des Moduls (Manifest, Skript oder Binärdatei)
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Name des Moduls.
Pfad Instanzeigenschaft (schreibgeschützt) Zeichenfolge Der Pfad des Moduls.

In PowerShell heißt dieser Typ System.Management.Automation.PSModuleInfo. Der Typ von ModuleType lautet System.Management.Automation.ModuleType.

4.5.13 Typ zur Beschreibung benutzerdefinierter Objekte

Dieser Typ kapselt den Zustand eines benutzerdefinierten Objekts. Er verfügt über keine zugänglichen Member.

In PowerShell heißt dieser Typ System.Management.Automation.PSCustomObject. Die Cmdlets Import-Module und New-Object können ein Objekt dieses Typs generieren.

4.5.14 Typ zur Befehlsbeschreibung

Die automatische Variable $PsCmdlet ist ein Objekt zur Darstellung des Cmdlets oder der Funktion, das bzw. die ausgeführt wird. Der Typ dieses Objekts wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
ParameterSetName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Name des aktuellen Parametersatzes (siehe ParameterSetName).
ShouldContinue für eine Instanzmethode

Überlastung

/bool

Fordert die Bestätigung eines Vorgangs vom Benutzer an.
ShouldProcess für eine Instanzmethode

Überlastung

/bool

Fordert eine Bestätigung vom Benutzer an, bevor ein Vorgang ausgeführt wird.

In PowerShell heißt dieser Typ „System.Management.Automation.PSScriptCmdlet“.

4.5.15 Typ zur Beschreibung des Fehlerdatensatzes

Die automatische Variable $Error enthält eine Auflistung von Fehlerdatensätzen, die aktuelle Fehler darstellen (§3.12). Obwohl der Typ dieser Auflistung nicht spezifiziert ist, unterstützt sie Subscripting, um Zugriff auf einzelne Fehlerdatensätze zu erhalten.

In PowerShell lautet der Auflistungstyp System.Collections.ArrayList. Der Typ eines einzelnen Fehlerdatensatzes in der Auflistung lautet System.Management.Automation.ErrorRecord. Dieser Typ weist die folgenden öffentlichen Eigenschaften auf:

  • CategoryInfo: Ruft Informationen zur Kategorie des Fehlers ab.
  • ErrorDetails: Ruft ausführlichere Fehlerinformationen ab, z. B. eine Ersetzungsfehlermeldung, und legt diese fest.
  • Exception: Ruft die Ausnahme ab, die diesem Fehlerdatensatz zugeordnet ist.
  • FullyQualifiedErrorId: Ruft den vollqualifizierten Fehlerbezeichner für diesen Fehlerdatensatz ab.
  • InvocationInfo: Ruft Informationen zu dem Befehl ab, der aufgerufen wurde, als der Fehler aufgetreten ist.
  • PipelineIterationInfo: Ruft den Status ab, den die Pipeline bei Erstellung dieses Fehlerdatensatzes aufwies.
  • TargetObject: Ruft das Objekt ab, das bei Auftreten des Fehlers verarbeitet wurde.

4.5.16 Typ zur Enumeratorbeschreibung

Eine Reihe von Variablen sind Enumeratoren für Auflistungen (§4). Die automatische Variable $foreach ist der Enumerator, der für foreach-Anweisungen erstellt wurde. Die automatische Variable $input ist der Enumerator für eine Auflistung, die an eine Funktion aus der Pipeline übermittelt wurde. Die automatische Variable $switch ist der Enumerator, der für switch-Anweisungen erstellt wurde.

Der Typ eines Enumerators wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Aktuell Instanzeigenschaft (schreibgeschützt) Objekt (object) Ruft das aktuelle Element in der Auflistung ab. Wenn der Enumerator derzeit nicht an einem Element der Auflistung positioniert ist, wird das Verhalten durch die Implementierung definiert.
MoveNext für eine Instanzmethode None/bool Setzt den Enumerator auf das nächste Element der Auflistung. Gibt $true zurück, wenn der Enumerator erfolgreich auf das nächste Element gesetzt wurde. Gibt $false zurück, wenn der Enumerator das Ende der Auflistung überschritten hat.

In PowerShell werden diese Member in der Schnittstelle System.IEnumerator definiert, die von den unten angegebenen Typen implementiert wird. Wenn der Enumerator derzeit nicht an einem Element der Auflistung positioniert ist, wird eine Ausnahme vom Typ InvalidOperationException ausgelöst. Für $foreach lautet dieser Typ System.Array+SZArrayEnumerator. Für $input lautet dieser Typ System.Collections.ArrayList+ArrayListEnumeratorSimple. Für $switch lautet dieser Typ System.Array+SZArrayEnumerator.

4.5.17 Typ zur Verzeichnisbeschreibung

Das Cmdlet New-Item kann Elemente verschiedener Art erstellen, einschließlich FileSystem-Verzeichnissen. Der Typ eines Verzeichnisbeschreibungsobjekts wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Attribute Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert (§4.2.6.3) Ruft mindestens eines der Attribute des Verzeichnisobjekts ab oder legt dieses fest.
CreationTime Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert (§4.5.19) Ruft die Erstellungszeit des Verzeichnisobjekts ab und legt sie fest.
Durchwahl Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Erweiterungsteil des Verzeichnisnamens ab.
FullName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den vollständigen Pfad des Verzeichnisses ab.
LastWriteTime Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert (§4.5.19) Ruft den Zeitpunkt des letzten Schreibzugriffs auf das Verzeichnis ab oder legt ihn fest.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Namen des Verzeichnisses ab.

In PowerShell heißt dieser Typ System.IO.DirectoryInfo. Der Typ der Eigenschaft Attributes lautet System.IO.FileAttributes.

4.5.18 Typ zur Dateibeschreibung

Das Cmdlet New-Item kann Elemente verschiedener Art erstellen, einschließlich FileSystem-Dateien. Der Typ eines Dateibeschreibungsobjekts wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Attribute Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert (§4.2.6.3) Ruft mindestens eines der Attribute des Dateiobjekts ab oder legt dieses fest.
BaseName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Namen der Datei ohne die Erweiterung ab.
CreationTime Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert (§4.5.19) Ruft die Erstellungszeit des Dateiobjekts ab und legt sie fest.
Durchwahl Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Erweiterungsteil des Dateinamens ab.
FullName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den vollständigen Pfad der Datei ab.
LastWriteTime Instanzeigenschaft (Lese-/Schreibzugriff) Durch die Implementierung definiert (§4.5.19) Ruft den Zeitpunkt des letzten Schreibzugriffs auf die Datei ab oder legt ihn fest.
Länge Instanzeigenschaft (schreibgeschützt) long Ruft die Größe der Datei in Byte ab.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Namen der Datei ab.
VersionInfo Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Windows PowerShell: Diese ScriptProperty gibt „System.Diagnostics.FileVersionInfo“ für die Datei zurück.

In PowerShell heißt dieser Typ System.IO.FileInfo.

4.5.19 Typ zur Beschreibung von „Date-Time“

Der Typ eines Beschreibungsobjekts für Datum und Uhrzeit wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Tag Instanzeigenschaft (schreibgeschützt) INT Ruft die Komponente für den Tag des Monats ab, der durch diese Instanz dargestellt wird.
Stunde Instanzeigenschaft (schreibgeschützt) INT Ruft die Komponente für die Stunden des Datums ab, das durch diese Instanz dargestellt wird.
Minute Instanzeigenschaft (schreibgeschützt) INT Ruft die Komponente für die Minuten des Datums ab, das durch diese Instanz dargestellt wird.
Month (Monat) Instanzeigenschaft (schreibgeschützt) INT Ruft die Komponente für den Monat des Datums ab, das durch diese Instanz dargestellt wird.
Second Instanzeigenschaft (schreibgeschützt) INT Ruft die Komponente für die Sekunden des Datums ab, das durch diese Instanz dargestellt wird.
Year Instanzeigenschaft (schreibgeschützt) INT Ruft die Komponente für das Jahr des Datums ab, das durch diese Instanz dargestellt wird.

Ein Objekt dieses Typs kann mit dem Cmdlet Get-Date erstellt werden.

In PowerShell heißt dieser Typ System.DateTime.

4.5.20 Typ zur Beschreibung von „Group-Info“

Der Typ eines Beschreibungsobjekts group-info wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart type Zweck
Anzahl Instanzeigenschaft (schreibgeschützt) INT Ruft die Anzahl von Elementen in der Gruppe ab.
Group Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Ruft die Elemente der Gruppe ab.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Namen der Gruppe ab.
Werte Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definierte Auflistung Ruft die Werte der Elemente in der Gruppe ab.

Ein Objekt dieses Typs kann mit dem Cmdlet Group-Object erstellt werden.

In PowerShell heißt dieser Typ Microsoft.PowerShell.Commands.GroupInfo.

4.5.21 Typ zur Beschreibung von „Generic-Measure-Info“

Der Typ eines Beschreibungsobjekts generic-measure-info wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Average Instanzeigenschaft (schreibgeschützt) double Ruft den Durchschnitt der Werte der gemessenen Eigenschaften ab.
Anzahl Instanzeigenschaft (schreibgeschützt) INT Ruft die Anzahl der Objekte mit den angegebenen Eigenschaften ab.
Maximum Instanzeigenschaft (schreibgeschützt) double Ruft den Höchstwert der angegebenen Eigenschaften ab.
Minimum Instanzeigenschaft (schreibgeschützt) double Ruft den Mindestwert der angegebenen Eigenschaften ab.
Eigenschaft Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft die zu messende Eigenschaft ab.
SUM Instanzeigenschaft (schreibgeschützt) double Ruft die Summe der Werte der angegebenen Eigenschaften ab.

Ein Objekt dieses Typs kann mit dem Cmdlet Measure-Object erstellt werden.

In PowerShell heißt dieser Typ Microsoft.PowerShell.Commands.GenericMeasureInfo.

4.5.22 Typ zur Beschreibung von „Text-Measure-Info“

Der Typ eines Beschreibungsobjekts text-info wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Zeichen Instanzeigenschaft (schreibgeschützt) INT Ruft die Anzahl von Zeichen im Zielobjekt ab.
Linien Instanzeigenschaft (schreibgeschützt) INT Ruft die Anzahl von Zeilen im Zielobjekt ab.
Eigenschaft Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft die zu messende Eigenschaft ab.
Words Instanzeigenschaft (schreibgeschützt) INT Ruft die Anzahl von Wörtern im Zielobjekt ab.

Ein Objekt dieses Typs kann mit dem Cmdlet Measure-Object erstellt werden.

In PowerShell heißt dieser Typ Microsoft.PowerShell.Commands.TextMeasureInfo.

4.5.23 Anmeldeinformationstyp

Ein Anmeldeinformationsobjekt kann dann in verschiedenen Sicherheitsvorgängen verwendet werden. Der Typ eines Anmeldeinformationsobjekts wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart type Zweck
Kennwort Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Ruft das Kennwort ab.
UserName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Benutzernamen ab.

Ein Objekt dieses Typs kann mit dem Cmdlet Get-Credential erstellt werden.

In PowerShell heißt dieser Typ System.Management.Automation.PSCredential.

4.5.24 Methodenkennzeichnertyp

Der Typ eines Methodenkennzeichners wird durch die Implementierung definiert. Er verfügt über die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Invoke für eine Instanzmethode Objekt-/Variablenanzahl und Typ Verwendet eine variable Anzahl von Argumenten, ruft indirekt die Methode auf, auf die vom übergeordneten Methodenkennzeichner verwiesen wird, und übergibt dabei die Argumente.

Ein Objekt dieses Typs kann durch einen Aufrufausdruck, invocation-expression (§7.1.3), erstellt werden.

In PowerShell heißt dieser Typ „System.Management.Automation.PSMethod“.

4.5.25 Memberdefinitionstyp

Dieser Typ kapselt die Definition eines Members. Er umfasst die folgenden zugänglichen Member:

Member Memberart Typ Zweck
Definition Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft die Definition des Members ab.
MemberType Instanzeigenschaft (schreibgeschützt) Durch die Implementierung definiert Ruft den PowerShell-Typ des Members ab.
Name Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Namen des Members ab.
TypName Instanzeigenschaft (schreibgeschützt) Zeichenfolge Ruft den Typnamen des Members ab.

In PowerShell heißt dieser Typ Microsoft.PowerShell.Commands.MemberDefinition.

4.6 Erweiterung und Anpassung von Typen

Eine PowerShell-Implementierung umfasst eine Familie von Kerntypen (die in diesem Kapitel dokumentiert sind), die jeweils eine eigene Menge von Basismembern enthalten. Diese Member können Methoden oder Eigenschaften sowie Instanzmember oder statische Member sein. Beispielsweise sind die Basismember des Typs „Zeichenfolge“ (§4.3.1) die Instanzeigenschaft „Length“ und die Instanzmethoden „ToLower“ und „ToUpper“.

Wenn ein Objekt erstellt wird, enthält es alle Instanzeigenschaften des jeweiligen Objekttyps, und die Instanzmethoden dieses Typs können für dieses Objekt aufgerufen werden. Ein Objekt kann zur Laufzeit durch Hinzufügen von Instanzmembern angepasst werden. Das Ergebnis wird als benutzerdefiniertes Objekt bezeichnet. Alle Member, die einer Instanz hinzugefügt werden, sind nur für die Lebensdauer dieser Instanz vorhanden. Andere Instanzen desselben Kerntyps sind davon nicht betroffen.

Die Gruppe der Basismember eines Typs kann durch Hinzufügen der folgenden Arten von Membern erweitert werden:

  • angepasste Member über das ETS (Extended Type System) , wobei die meisten Details nicht spezifiziert sind.
  • erweiterte Member über das Cmdlet Add-Member.

In PowerShell können erweiterte Member auch über types.ps1xml-Dateien hinzugefügt werden. Angepasste und erweiterte Member werden zusammen als synthetische Member bezeichnet.

Das ETS fügt allen PowerShell-Objekten die folgenden Member hinzu: psbase, psadapted, psextended und pstypenames. Weitere Informationen zu diesen Membern finden Sie unter den Parametern Force und View im Cmdlet Get-Member.

Ein Instanzmember kann einen erweiterten und/oder angepassten Member desselben Namens ausblenden, und ein erweiterter Member kann einen angepassten Member ausblenden. In solchen Fällen können die Membergruppen psadapted und psextended verwendet werden, um auf diese ausgeblendeten Member zuzugreifen.

Wenn in types.ps1xml ein Member namens Supports angegeben wird, bietet obj.psextended Zugriff auf ausschließlich diesen Member und nicht auf einen Member, der über Add-Member hinzugefügt wurde.

Es gibt drei Möglichkeiten, ein benutzerdefiniertes Objekt mit einem neuen Member „M“ zu erstellen:

  1. Dieser Ansatz kann verwendet werden, um einen oder mehrere NoteProperty-Member hinzuzufügen.

    $x = New-Object PsObject -Property @{M = 123}`
    
  2. Dieser Ansatz kann verwendet werden, um NoteProperty- oder ScriptMethod-Member hinzuzufügen.

    $x = New-Module -AsCustomObject {$M = 123 ; Export-ModuleMember --Variable M}`
    
  3. Dieser Ansatz kann verwendet werden, um eine beliebige Art von Member hinzuzufügen.

    $x = New-Object PsObject
    Add-Member -InputObject $x -Name M -MemberType NoteProperty -Value 123
    

PsObject ist der Basistyp aller PowerShell-Typen.