> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/rdm/de/knowledge-base/knowledge-base-articles/entry-settings/custom-powershell-synchronizer.md).

# Benutzerdefinierter (PowerShell) Synchronizer

Dieser Eintrag ist ein leistungsstarker "hybrider" Synchronizer, mit dem Sie PowerShell-Skripte verwenden können, um Tresore zu füllen, Beschreibungen zu synchronisieren, Vorlagen anzuwenden und mehr. Sie können von Quellen synchronisieren, für die wir keinen dedizierten Synchronizer haben. Er nutzt Proxy-Klassen, um mit umfangreichen Remote Desktop Manager-Verbindungsobjekten zu interagieren.

{% hint style="info" %}
Siehe [PowerShell commands](https://docs.devolutions.net/powershell/de/powershell-commands) für eine Liste der benutzerdefinierten PS-Befehle von Devolutions, komplett mit Beschreibungen, Beispielen und unterstützten allgemeinen Parametern.
{% endhint %}

### Anwendungsfälle für den Custom (PowerShell)-Synchronizer

#### Einfache Sitzung

Geben Sie den Host, den Namen, die Beschreibung und die Gruppe an, während Sie den standardmäßigen RDP-Typ verwenden. Alternativ können Sie eine Vorlage verwenden, um Wiederverwendung und Standardisierung zu fördern. Hier ist ein Beispiel:

```powershell
# Obtain or generate your list of sessions to create, here we assume a $data table.
# Has been filled by querying an external source.
Foreach($row in $data)
{
  # Create a new session, the only mandatory property is 'Name' so we require it as a parameter in the Add method.
  $session = $RDM.Add($row.Name)
  # Set the other properties using $session.
  $session.Host = $row.Name
  $session.Description = $row.Description
  $session.Group = $row.Group # it can be multiple levels i.e. 'Folder1\Folder1a'
}
```

#### Sitzung mit Anmeldeinformationen

Um die Anmeldeinformationen festzulegen, verwenden Sie: `$session.SetCredentials($row.Username, $row.Password, $row.Domain);`.

Um nur das Passwort festzulegen, verwenden Sie: `$session.SetPassword($row.Password);`.

{% hint style="info" %}
Das Passwort kann nicht mit `$session.Password` festgelegt werden.
{% endhint %}

#### Häufig verwendete Felder

Hier sind häufig verwendete Felder als Kurzreferenz:

```
string CustomStatus
string Description
bool Encrypt
string Group
string Host
bool IncludeInFavorite
string Name
bool OpenEmbedded
bool ShowInTrayIcon
int SortPriority
<Color>#FF0000</Color>
string GroupTab
string Status
string TabTitle
```

#### Fortgeschrittenes Szenario

Mit der in [Reverse engineering an entry's structure](https://docs.devolutions.net/powershell/de/remote-desktop-manager-powershell/powershell-scripting/list-of-property-names-for-powershell-script#reverse-engineering-an-entrys-structure) beschriebenen Methode können Sie einen Eintrag mit allen erforderlichen Informationen in den entsprechenden Feldern erstellen und beobachten, wie Werte mit PowerShell zugewiesen werden.\
\
Hier ist zum Beispiel ein ***Host***-Eintrag, für den viele Felder des Abschnitts ***View*** – ***Asset*** ausgefüllt wurden:

```xml
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfConnection>
  <Connection>
    <AppVersion>~SET AUTOMATICALLY~</AppVersion>
    <Color>#FF0000</Color>
    <ConnectionType>Host</ConnectionType>
    <CreatedBy>~SET AUTOMATICALLY~</CreatedBy>
    <CreationDateTime>~SET AUTOMATICALLY~</CreationDateTime>
    <Description>phDescription</Description>
    <GroupTab>phTabGroupName</GroupTab>
    <ID>~SET AUTOMATICALLY~</ID>
    <Name>phName</Name>
    <OpenEmbedded>true</OpenEmbedded>
    <SortPriority>100</SortPriority>
    <Status>{123A44CB-7EDC-4ecb-926B-031793668148}</Status>
    <TabTitle>phTabPageTitle</TabTitle>
    <HostDetails>
      <Host>phName</Host>
    </HostDetails>
    <MetaInformation>
      <AssetSubType>Desktop</AssetSubType>
      <Domain>metadomain</Domain>
      <IP>metaIP</IP>
      <Keywords>MyTag1</Keywords>
      <MAC>metamac</MAC>
      <MachineName>metaHost</MachineName>
      <NetworkDHCPRange>MetaDHCPRange</NetworkDHCPRange>
      <NetworkDHCPServer>MetaDHCPServer</NetworkDHCPServer>
      <NetworkFirewallZone>MetaFirewall</NetworkFirewallZone>
      <NetworkGateway>MetaGateway</NetworkGateway>
      <NetworkIPRange>metaIPRange</NetworkIPRange>
      <NetworkSubnet>metaSubnet</NetworkSubnet>
      <NetworkVLANID>MetaVlan</NetworkVLANID>
      <OS>metaos</OS>
    </MetaInformation>
  </Connection>
</ArrayOfConnection>
```

Sie können einige "komplexe" Objekte sehen, nämlich `HostDetails` und `MetaInformation`. Das erste ist spezifisch für den Eintragstyp ***Host***, und das zweite ist ein Container für alles im Abschnitt ***View*** – ***Asset***. Fügen Sie den Abschnittsnamen als Präfix hinzu, um in die inneren Felder zu schreiben.

```powershell
Foreach($row in $data)
{
  $session = $RDM.Add($row.Name)
  $session.Kind = "Host"
  $session.HostDetails.Host = $row.Name
  $session.MetaInformation.AssetSubType = "Desktop"
  $session.MetaInformation.IP = "10.10.1.25"
}
```

**Wichtige Punkte**

* Beachten Sie, dass die Eigenschaften `Name` und `HostDetails.Host` denselben Wert haben. Dies ist eine Eigenschaft des ***Host***-Eintrags, und es ist auch bei der Arbeit mit anderen Eintragstypen Vorsicht geboten.
* Einige Felder, wie `MetaInformation.AssetSubType`, sind an eine Aufzählung gebunden und müssen die exakte Zeichenfolge enthalten. Andere, wie `MetaInformation.NetworkGateway`, sind einfache Zeichenfolgen und können beliebige Inhalte enthalten. Kontaktieren Sie gerne unser [Support-Team](mailto:service@devolutions.net), wenn Sie weitere Fragen haben.

**Verwandte Themen**

* [Synchronizers](/rdm/de/concepts/advanced-concepts/synchronizers.md)
* [List of property names for PowerShell script](https://docs.devolutions.net/powershell/de/remote-desktop-manager-powershell/powershell-scripting/list-of-property-names-for-powershell-script)
* [PowerShell commands](https://docs.devolutions.net/powershell/de/powershell-commands)


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.devolutions.net/rdm/de/knowledge-base/knowledge-base-articles/entry-settings/custom-powershell-synchronizer.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
