# Guid

Die Klasse `Guid` dient zum Erstellen und Verwalten von **Global Unique Identifiers (GUIDs)**.

Eine GUID ist eine 128-Bit lange Kennung, die mit extrem hoher Wahrscheinlichkeit weltweit eindeutig ist. Sie wird häufig verwendet, um Objekte, Dateien, Datenbankeinträge oder Sitzungen eindeutig zu identifizieren.

---

## **Grundlagen**

Im Gegensatz zu Klassen wie `Button` oder `Form` besitzt `Guid` keine grafische Darstellung.

Sie dient ausschließlich dazu, eindeutige Kennungen zu erzeugen und zu verarbeiten.

- `Guid` → erzeugt eindeutige Kennungen
- `Math` → führt mathematische Berechnungen aus
- `DateTime` → verarbeitet Datum und Uhrzeit
- `Random` → erzeugt Zufallszahlen

### GUID erzeugen

```powershell
# Neue GUID erzeugen
$guid = [Guid]::NewGuid()

$guid
```

Ausgabe:

```
0f8fad5b-d9cb-469f-a165-70867728950e
```

---

### GUID aus einem String erstellen

```powershell
$guid = [Guid]::Parse(
    "0f8fad5b-d9cb-469f-a165-70867728950e"
)
```

---

### Leere GUID

```powershell
[Guid]::Empty
```

Ausgabe:

```
00000000-0000-0000-0000-000000000000
```

Diese GUID besitzt ausschließlich Nullen und dient häufig als Standard- oder Platzhalterwert.

---

## **Eigenschaften**

<table id="bkmrk-eigenschaft-beschrei"><thead><tr><th>Eigenschaft</th><th>Beschreibung</th></tr></thead><tbody><tr><td>`Empty`</td><td>Enthält eine GUID, deren sämtliche Bits auf `0` gesetzt sind.</td></tr></tbody></table>

---

<details id="bkmrk-empty-empty-typ-%3D-sy"><summary>Empty</summary>

### **Empty**

**Typ** = `System.Guid`

`Empty` stellt eine leere GUID dar.

Sie wird häufig verwendet, um zu prüfen, ob einer Variablen bereits eine gültige GUID zugewiesen wurde.

```powershell
if ($id -eq [Guid]::Empty) {
    "Keine GUID vorhanden."
}

```

</details>---

## **Methoden**

<table id="bkmrk-methode-beschreibung"><thead><tr><th>Methode</th><th>Beschreibung</th></tr></thead><tbody><tr><td>`NewGuid()`</td><td>Erstellt eine neue eindeutige GUID.</td></tr><tr><td>`Parse()`</td><td>Erstellt eine GUID aus einem String.</td></tr><tr><td>`TryParse()`</td><td>Versucht einen String in eine GUID umzuwandeln.</td></tr><tr><td>`ToString()`</td><td>Gibt die GUID als Zeichenkette zurück.</td></tr><tr><td>`Equals()`</td><td>Vergleicht zwei GUIDs.</td></tr><tr><td>`CompareTo()`</td><td>Vergleicht zwei GUIDs für Sortierungen.</td></tr></tbody></table>

---

<details id="bkmrk-newguid%28%29-newguid%28%29-"><summary>NewGuid()</summary>

### **NewGuid()**

```powershell
[Guid]::NewGuid()
```

#### Beschreibung

Erzeugt eine neue zufällige GUID.

Jeder Aufruf liefert eine neue Kennung, die mit extrem hoher Wahrscheinlichkeit eindeutig ist.

#### Rückgabe

**Rückgabetyp** `System.Guid`

#### Beispiel

```powershell
$id = [Guid]::NewGuid()

$id # fd5d1b64-ac86-46b5-a511-92c68ce09d2b
```

</details><details id="bkmrk-parse%28%29-parse%28%29-%5Bgui"><summary>Parse()</summary>

### **Parse()**

```powershell
[Guid]::Parse($string)
```

#### Beschreibung

Konvertiert einen String in ein `Guid`-Objekt.

Ist der String ungültig, wird eine Ausnahme ausgelöst.

#### Rückgabe

Rückgabetyp `System.Guid`

#### Beispiel

```powershell
$id = [Guid]::Parse(
    "0f8fad5b-d9cb-469f-a165-70867728950e"
)
```

</details><details id="bkmrk-tryparse%28%29-tryparse%28"><summary>TryParse()</summary>

### **TryParse()**

```powershell
[Guid]::TryParse($string, [ref]$guid)
```

#### Beschreibung

Versucht einen String in eine GUID umzuwandeln.

Im Gegensatz zu `Parse()` wird **keine Ausnahme** ausgelöst, wenn der String ungültig ist.

#### Rückgabe

Rückgabetyp `System.Boolean`

#### Beispiel

```powershell
$guid = [Guid]::Empty

if ([Guid]::TryParse($text, [ref]$guid)) {
    "Gültige GUID"
}
else {
    "Ungültige GUID"
}
```

</details><details id="bkmrk-tostring%28%29-tostring%28"><summary>ToString()</summary>

### **ToString()**

```powershell
$guid.ToString()
```

#### Beschreibung

Gibt die GUID als Zeichenkette zurück.

#### Rückgabe

Rückgabetyp `System.String`

#### Beispiel

```powershell
$guid = [Guid]::NewGuid()

$guid.ToString()
```

</details><details id="bkmrk-equals%28%29-equals%28%29-%24g"><summary>Equals()</summary>

### **Equals()**

```powershell
$guid1.Equals($guid2)
```

#### Beschreibung

Vergleicht zwei GUIDs auf Gleichheit.

#### Rückgabe

Rückgabetyp `System.Boolean`

#### Beispiel

```powershell
$id1 = [Guid]::NewGuid()
$id2 = $id1

$id1.Equals($id2)
```

</details><details id="bkmrk-compareto%28%29-comparet"><summary>CompareTo()</summary>

### **CompareTo()**

```powershell
$guid1.CompareTo($guid2)
```

#### Beschreibung

Vergleicht zwei GUIDs.

Die Methode wird hauptsächlich zum Sortieren verwendet.

#### Rückgabe

Rückgabetyp `System.Int32`

- `< 0` → kleiner
- `0` → gleich
- `> 0` → größer

</details>---

## **Tipps &amp; Tricks**

### Neue eindeutige Dateinamen erzeugen

```powershell
$file = "{0}.txt" -f ([Guid]::NewGuid())
```

Beispiel:

```
92d4bb75-0d95-4d9d-9d88-d7548cb9cbf4.txt
```

---

### Prüfen, ob ein String eine gültige GUID ist

```powershell
[Guid]::TryParse($text, [ref]([Guid]::Empty))
```