> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/de/dev-reference/runbook-output-data.md).

# Runbook-Ausgabedaten

Stellen Sie Runbook-Ergebnisse im RealmJoin-Portal als sortierbare, filterbare Tabellen dar und schreiben Sie Runbooks, die strukturierte Objekte ausgeben.

## Übersicht

**Ausgabedaten** sind das strukturierte Gegenstück zur **Konsole** Registerkarte auf einer Runbook-Job-Seite. Die Konsole behält den rohen, zeilenweisen Text-Feed eines Laufs bei; Ausgabedaten stellen die Objekte als Tabellen dar, die derselbe Lauf ausgegeben hat. Lange Werte wie GUIDs werden vollständig angezeigt, statt vom PowerShell-Konsolenformatierer auf `…` gekürzt zu werden, und breite Ergebnismengen bleiben lesbar, statt umzubrechen.

Wesentliche Merkmale:

* **Keine Konfiguration, keine zusätzlichen Berechtigungen** — die Registerkarte ist für jedes Runbook verfügbar, das Objekte ausgibt. Nichts muss aktiviert werden, und wer ein Runbook starten darf, bleibt unverändert.
* **Objekte statt vorformatiertem Text** — die Tabellen werden aus dem aufgebaut, was das Runbook in den Ausgabestream schreibt. Ein Runbook, das seine Ergebnisse mit `Format-Table` vorab formatiert, erzeugt überhaupt keine Ausgabedaten.
* **Interaktive Tabellen** — jede Tabelle kann unabhängig von den anderen sortiert, gefiltert, seitenweise angezeigt und nach Excel oder CSV exportiert werden.
* **Verschachtelte Daten bleiben prüfbar** — Objekte und Arrays innerhalb einer Zelle sind aufklappbar, statt zu einer unlesbaren Zeichenkette zusammengeführt zu werden.
* **Die Registerkarte Konsole bleibt unverändert** — die vollständige Textausgabe bleibt verfügbar und kopierbar, was normalerweise ein Service- oder ITIL-Ticket benötigt.

## Schnellstart

Das minimal lauffähige Runbook gibt ein Markerobjekt mit dem Tabellennamen aus, dann die Daten:

```powershell
[PSCustomObject]@{ RjTableTitle = 'Nicht konforme Geräte' }
Write-Output $nonCompliantDevices
```

Dies erzeugt eine Tabelle mit dem Titel **Nicht konforme Geräte** in der Registerkarte Ausgabedaten — eine Zeile pro Gerät, eine Spalte pro Eigenschaft — plus eine kompakte Zusammenfassungszeile in der Konsole, die darauf verlinkt.

## Ausgabedaten im Portal lesen

Öffnen Sie einen Job aus [Runbook-Protokolle](/de/automatisierung/runbooks/runbook-logs.md) und wechseln Sie zur **Ausgabedaten** Registerkarte. Siehe [Runbook-Jobdetails](/de/automatisierung/runbooks/runbook-logs/runbook-job-details.md) für die anderen Registerkarten dieser Seite.

### Tabellen und Navigation

Jede Menge von Objekten, die ein Runbook ausgibt, wird zu einer Tabelle. Eine Tabelle hat:

* **Einen Titel** — entweder den Namen, den das Runbook gesetzt hat (siehe [Eine Tabelle benennen](#naming-a-table)) oder den Fallback `Tabelle 1`, `Tabelle 2` und so weiter.
* **Einen Eintrag in der Seitenleiste** — jede Tabelle wird links aufgelistet; durch Klicken auf einen Titel springen Sie direkt dorthin.
* **Einen Zeilenzähler** — `12 / 340 Zeilen` zeigt, wie viele Zeilen dem aktuellen Filter von der Gesamtzahl der Tabelle entsprechen.

### Filter

Das **Filter…** Feld oberhalb einer Tabelle behält nur die Zeilen bei, die den eingegebenen Text enthalten. Der Filter ist eine nicht groß-/kleinschreibungsabhängige Teilzeichenfolgenübereinstimmung über alle Spalten dieser Tabelle hinweg. Jede Tabelle filtert unabhängig.

### Sortieren

Durch Klicken auf einen Spaltenkopf wird nach dieser Spalte sortiert; durch erneutes Klicken wird die Richtung umgekehrt. Ein Pfeil (`▲` / `▼`) kennzeichnet die aktive Spalte. Die Sortierung ist typabhängig:

| Spalteninhalt | Sortierreihenfolge                                             |
| ------------- | -------------------------------------------------------------- |
| Zahlen        | Numerisch — `2` vor `10`.                                      |
| Datum         | Chronologisch.                                                 |
| Alles andere  | Alphabetisch, ohne Berücksichtigung der Groß-/Kleinschreibung. |

Leere Zellen werden zuerst sortiert.

### Seitennavigation

Tabellen werden in Seiten mit jeweils 50 Zeilen aufgeteilt; unter der Tabelle befindet sich ein Pager. Filter und Sortierung gelten immer für die gesamte Tabelle, nicht nur für die aktuell angezeigte Seite.

### Verschachtelte Objekte und Listen

Eine Zelle mit einem verschachtelten Objekt oder Array wird nicht in unlesbaren Text abgeflacht:

* Die Zelle zeigt ein Caret (`▸`). Durch Klicken darauf wird dieses Objekt oder Array direkt unter der Zeile inline erweitert.
* Der Spaltenkopf trägt einen Aufklapp-Pfeil. Durch Klicken darauf wird die gesamte Spalte in eine eigene Tabelle erweitert: Jeder verschachtelte Wert einer übergeordneten Zeile wird in Zeilen aufgelöst, und eine Referenzspalte verknüpft zurück mit der Zeilennummer der übergeordneten Zeile. Die neue Tabelle wird am Ende der Seite und in der Seitenleiste angehängt und kann wie jede andere gefiltert, sortiert und exportiert werden.

### Export

Jede Tabelle hat ihre eigenen **Nach Excel exportieren** (`.xlsx`) und **Nach CSV exportieren** Schaltflächen. Exporte berücksichtigen den aktiven Filter — es werden nur passende Zeilen geschrieben — und verwenden den Tabellentitel als Dateinamen. Der Export nach Excel verwendet den Titel außerdem als Arbeitsblattnamen und schlägt bei Titeln mit mehr als 31 Zeichen fehl, siehe [Eine Tabelle benennen](#naming-a-table).

Der Export aus dem Portal deckt den Ad-hoc-Fall ab. Für Berichtsdateien, die ein Runbook eigenständig liefern soll — als E-Mail-Anhang oder als Download-Link — erstellen Sie sie stattdessen im Runbook mit [Export-RjRbXlsx](/de/dev-reference/report-functions/export-rjrbxlsx.md) und den Zustellhilfen.

## Registerkarte Konsole

Wenn ein Job Tabellen ausgegeben hat, zeigt die **Konsole** Registerkarte standardmäßig eine komprimierte Ansicht. Tabellen werden im PowerShell-Stil dargestellt, aber gekürzt, damit Statuszeilen lesbar bleiben und ein Runbook, das Hunderte von Objekten ausgegeben hat, die Seite nicht überflutet. Anstelle jeder Tabelle zeigt die Konsole eine Zusammenfassungsbox:

```plaintext
╭─ Tabelle ────────────────────────────────────────────╮
│ <Tabellenname> · <Zeilenanzahl> Zeilen               │
╰───────────────────────────── → "Ausgabedaten"-Registerkarte ──╯
```

Unmittelbar hintereinander ausgegebene Tabellen teilen sich eine Box:

```plaintext
╭─ Tabelle ────────────────────────────────────────────╮
│ Geräte                  · 3123 Zeilen               │
│ Anwendungsanmeldedaten  · 42 Zeilen                 │
│ Großes Exportbeispiel    · 987654 Zeilen            │
╰───────────────────────────── → "Ausgabedaten"-Registerkarte ──╯
```

`→ "Ausgabedaten"-Registerkarte` ist ein Link und wechselt zur entsprechenden Tabelle.

Zwei Schaltflächen steuern die Ansicht:

* **Vollständige Ausgabe anzeigen** — zur vollständigen, nicht gekürzten Textausgabe wechseln.
* **Komprimierte Tabellen anzeigen** — zurückwechseln.

**In Zwischenablage kopieren** kopiert immer die vollständige Roh-Ausgabe, unabhängig davon, welche Ansicht angezeigt wird.

## Ausgabedaten aus einem Runbook ausgeben

Die Registerkarte wird aus den Objekten aufgebaut, die ein Runbook ausgibt. Saubere Tabellen erfordern daher, dass das Runbook Objekte schreibt, statt sie vorab in Text zu formatieren.

### Objekte ausgeben, nicht formatierten Text

> **Leiten Sie die Ausgabe niemals durch `Format-Table` oder `Format-List`.** Diese Cmdlets erzeugen Datensätze der Formatierungs-Engine, keine Daten. Das Portal erkennt sie und blendet sie aus und zeigt einen Hinweis an, dass die Ausgabe falsch formatiert war. Dasselbe gilt überall dort, wo PowerShell ein Ergebnis automatisch formatiert, weil es an den Host statt an den Ausgabestream geschrieben wurde.

`Format-*` Cmdlets steuern ausschließlich *die Anzeige*. Wofür sie verwendet wurden, hat ein Datenäquivalent, das Output Data darstellen kann — insbesondere das Auswählen von Spalten erledigt `Select-Object` :

| Statt                                | Verwenden Sie                        |
| ------------------------------------ | ------------------------------------ |
| `$devices \| Format-Table Name, Id`  | `$devices \| Select-Object Name, Id` |
| `$devices \| Format-Table -AutoSize` | `Write-Output $devices`              |
| `$devices \| Format-List`            | `Write-Output $devices`              |

`Select-Object Name, Id` liefert dieselbe Spaltenauswahl, die `Format-Table Name, Id` angezeigt hätte — aber es gibt Objekte aus, sodass die Spalten in der Registerkarte Ausgabedaten erhalten bleiben, statt als Formatierungsdatensätze verworfen zu werden:

```powershell
# Gut — echte Objekte, Spalten mit Select-Object ausgewählt
$devices | Select-Object Name, Id, OperatingSystem, LastSeen

# Schlecht — Formatierungsdatensätze, vor Ausgabedaten verborgen
$devices | Format-Table Name, Id, OperatingSystem, LastSeen
```

Die ausgewählten Eigenschaften sind genau die Spalten der resultierenden Tabelle: `Name`, `Id`, `OperatingSystem` und `LastSeen`, eine Zeile pro Gerät.

### Wie Objekte zu Tabellen werden

| Ausgegeben                                              | Dargestellt als                                                                                                  |
| ------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| Ein Objekt                                              | Eine Zeile — seine Eigenschaften werden zu den Spalten.                                                          |
| Aufeinanderfolgende Objekte mit denselben Eigenschaften | Eine Tabelle.                                                                                                    |
| Ein Objekt mit einem anderen Eigenschaftssatz           | Eine neue Tabelle beginnt.                                                                                       |
| Ein einfacher Einzelwert (String, Zahl)                 | Eine Textzeile in der Konsole, keine Tabelle.                                                                    |
| Eine Zeile, die mit `##` gefolgt von einem Leerzeichen  | Eine Überschrift in der Konsolenansicht.                                                                         |
| Ein verschachteltes Objekt oder Array                   | JSON in der Zelle, im Raster erweiterbar — siehe [Verschachtelte Objekte und Listen](#nested-objects-and-lists). |

### Eine Tabelle benennen

Standardmäßig werden Tabellen als `Tabelle 1`, `Tabelle 2` und so weiter beschriftet. Um einer Tabelle einen aussagekräftigen Namen zu geben, gibt das Runbook unmittelbar vor den Daten ein Markerobjekt aus. Das Markerobjekt ist ein Objekt mit genau einer Eigenschaft, nämlich `RjTableTitle`:

```powershell
[PSCustomObject]@{ RjTableTitle = 'Nicht konforme Geräte' }
Write-Output $nonCompliantDevices
```

Die folgende Tabelle erhält dann den Titel **Nicht konforme Geräte** — in der Überschrift, in der Seitenleiste und im Namen der Exportdatei.

* Das Markerobjekt selbst wird **verbraucht**. Es erscheint weder als Zeile noch als Zeile in der Konsole.
* Der Eigenschaftsname ist **nicht groß-/kleinschreibungsabhängig** — `RjTableTitle`, `rjtabletitle` und jede andere Schreibweise funktioniert ebenfalls.
* Ein **leer** er Titel wird ignoriert, sodass ein leeres Markerobjekt einen vorhandenen Namen nicht löschen kann.
* Der Name gilt für die **nächste** ausgegebene Tabelle, auch wenn dazwischen Statuszeilen erscheinen.

Durch Wiederholen des Musters werden mehrere Tabellen in einem Lauf benannt:

```powershell
[PSCustomObject]@{ RjTableTitle = 'Konforme Geräte' }
Write-Output $compliant

[PSCustomObject]@{ RjTableTitle = 'Nicht konforme Geräte' }
Write-Output $nonCompliant
```

{% hint style="warning" %}
**Halten Sie Tabellentitel auf höchstens 31 Zeichen.** **Nach Excel exportieren** verwendet den Tabellentitel als Arbeitsblattnamen, und Excel akzeptiert nur Namen mit 1 bis 31 Zeichen, die keines der `\ / ? * [ ] :` enthalten und nicht mit einem Apostroph beginnen oder enden. Ein längerer Titel wie `Deaktivierte Benutzer mit einem freigegebenen Postfach` (36 Zeichen) führt dazu, dass der Export mit *"Beim Laden der Daten ist ein Fehler aufgetreten: sheetName 'Deaktivierte Benutzer mit einem freigegebenen Postfach' ist ungültig - die Zeichenanzahl MUSS größer oder gleich 1 und kleiner oder gleich 31 sein"*.

Die Begrenzung umfasst zur Laufzeit eingefügte Werte, etwa einen Gruppennamen oder ein Datum. Wählen Sie kurze, aussagekräftige Titel, und wenn das Runbook außerdem eine Excel-Datei mit [Export-RjRbXlsx](/de/dev-reference/report-functions/export-rjrbxlsx.md#worksheet-names)schreibt, verwenden Sie für die Tabelle und das passende Arbeitsblatt denselben Namen.
{% endhint %}

## Verhalten & Einschränkungen

### Archivierte Jobs

Ausgabedaten sind nur für Live-Ausführungen verfügbar. Ein archivierter Job zeigt *"Strukturierte Daten können aus einem archivierten Lauf nicht abgerufen werden."* — diese Ergebnisse müssen aus der Konsole gelesen werden. Siehe [Runbook-Protokolle](/de/automatisierung/runbooks/runbook-logs.md) für die Unterscheidung zwischen aktuellen und archivierten Jobprotokollen.

### Runbooks ohne strukturierte Ausgabe

*"Keine strukturierten Ausgabedaten aus diesem Runbook."* bedeutet, dass nichts Tabellenförmiges ausgegeben wurde. Wenn die Meldung von einem Informationssymbol begleitet wird, hat das Runbook PowerShell-Formatierungsdatensätze statt Daten gesendet — siehe [Objekte ausgeben, nicht formatierten Text](#emit-objects-not-formatted-text).

### Einzelwerte

Ein Runbook, das einen einzelnen einfachen Wert ausgibt — einen Statusstring, einen Zähler — behält diesen Wert als Textzeile in der Registerkarte Konsole. Nur Objekte werden zu Tabellen, daher werden Fortschritts- und Statusmeldungen nicht jeweils zu einer einzeiligen Tabelle.

## Siehe auch

* [Runbook-Jobdetails](/de/automatisierung/runbooks/runbook-logs/runbook-job-details.md) — die Job-Seite, die die Registerkarten Konsole und Ausgabedaten enthält.
* [Export-RjRbXlsx](/de/dev-reference/report-functions/export-rjrbxlsx.md) — dieselben Objekte in eine formatierte Excel-Arbeitsmappe schreiben, um sie außerhalb des Portals bereitzustellen.
* [Send-RjRbReportEmail](/de/dev-reference/report-functions/send-rjrbreportemail.md) — Berichtsergebnisse per E-Mail an Administratoren übermitteln.
* [Mit Runbooks interagieren](/de/dev-reference/interacting-with-runbooks.md) — Job-Ausgaben programmgesteuert über die RealmJoin-API lesen.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.realmjoin.com/de/dev-reference/runbook-output-data.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
