> 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/da/knowledge-base/knowledge-base-articles/entry-settings/custom-powershell-synchronizer.md).

# Brugerdefineret (PowerShell) synkronisering

Brug det brugerdefinerede PowerShell-synkroniseringsværktøj i Remote Desktop Manager til at udfylde bokse, synkronisere beskrivelser og anvende skabeloner via scripts.

Denne post er et kraftfuldt "hybrid"-synkroniseringsværktøj, der lader Dem bruge PowerShell-scripts til at udfylde bokse, synkronisere beskrivelser, anvende skabeloner og mere. De kan synkronisere fra kilder, som vi ikke har et dedikeret synkroniseringsværktøj til. Det bruger proxyklasser til at interagere med indholdsrige forbindelsesobjekter i Remote Desktop Manager.

{% hint style="info" %}
Se [PowerShell-kommandoer](https://docs.devolutions.net/powershell/powershell-commands) for en liste over de brugerdefinerede PS-kommandoer fra Devolutions, komplet med beskrivelser, eksempler og understøttede fælles parametre.
{% endhint %}

{% hint style="info" %}
Fanen ***Tidsplan*** er kun tilgængelig, når datakilden understøtter planlagte synkroniseringsværktøjer, f.eks. Devolutions Server.
{% endhint %}

<table data-header-hidden><thead><tr><th width="200"></th><th></th></tr></thead><tbody><tr><td><strong>INDSTILLINGER</strong></td><td><strong>BESKRIVELSE</strong></td></tr><tr><td><strong>Navn</strong></td><td>Navnet på posten. Navnet må ikke indeholde en omvendt skråstreg.</td></tr><tr><td><strong>Mappe</strong></td><td>Den mappe, hvor posten findes.</td></tr><tr><td><strong>Legitimationsoplysninger</strong></td><td>Postens legitimationsoplysninger. Læs mere om <a href="/rdm/da/ribbon-menu-bar/edit/entry-credentials-options.md"><em><strong>Legitimationsoplysninger</strong></em>-valgmuligheder</a>.</td></tr><tr><td><strong>Synkroniser automatisk</strong></td><td>Medtag dette synkroniseringsværktøj, når Remote Desktop Manager kører synkroniseringsværktøjer automatisk.</td></tr></tbody></table>

### Generelt

<table><thead><tr><th width="220">INDSTILLINGER</th><th>BESKRIVELSE</th></tr></thead><tbody><tr><td><strong>Skabelon</strong></td><td>Den skabelon, der anvendes på de poster, som scriptet opretter.</td></tr><tr><td><strong>Destinationsmappe</strong></td><td>Den mappe, hvor de synkroniserede poster oprettes. Brug knappen Gennemse til at vælge en eksisterende mappe eller knappen Tilføj til at oprette en. Der kan kun skrives i tekstfeltet, når datakilden tillader virtuelle mapper.</td></tr><tr><td><strong>Kontrol af dubletter</strong></td><td><p>Det omfang, der bruges til at finde eksisterende poster:</p><ul><li><strong>Rod</strong></li><li><strong>Destinationsmappe</strong></li></ul></td></tr><tr><td><strong>Tilstand for mappeoprettelse</strong></td><td><p>Hvordan mapperne for de synkroniserede poster oprettes:</p><ul><li><strong>Mappost</strong></li><li><strong>Opret virtuelle mapper</strong></li></ul></td></tr></tbody></table>

### Script

<table><thead><tr><th width="220">INDSTILLINGER</th><th>BESKRIVELSE</th></tr></thead><tbody><tr><td><strong>Script</strong></td><td>Det PowerShell-script, der opretter posterne. Klik på knappen <em><strong>Avanceret scripteditor</strong></em> over editoren for at redigere scriptet i et separat vindue.</td></tr><tr><td><strong>Tidsgrænse (ms)</strong></td><td>Den maksimale tid, i millisekunder, som scriptet må køre. Accepterer en værdi fra 0 til 60000.</td></tr><tr><td><strong>Eksempel</strong></td><td>Et skrivebeskyttet eksempelscript, der viser, hvordan der oprettes poster med <code>$RDM.Add</code>, og hvordan deres egenskaber angives.</td></tr></tbody></table>

### Parametre

<table><thead><tr><th width="220">INDSTILLINGER</th><th>BESKRIVELSE</th></tr></thead><tbody><tr><td><strong>Parameternavn</strong></td><td>Navnet på hver af de fem scriptparametre, som standard <em><strong>Parameter #1</strong></em> til <em><strong>Parameter #5</strong></em>. Klik på et navn for at omdøbe parameteren. Hvis det nye navn efterlades tomt, gendannes standardnavnet.</td></tr><tr><td><strong>Standardværdi</strong></td><td>Parameterens værdi, angivet i et maskeret felt. Brug <code>$PARAMETER1$</code> til den første parameter, <code>$PARAMETER2$</code> til den anden og så videre for at indsætte værdierne i scriptet.</td></tr></tbody></table>

### Tidsplan

<table><thead><tr><th width="220">INDSTILLINGER</th><th>BESKRIVELSE</th></tr></thead><tbody><tr><td><strong>Aktiveret</strong></td><td>Kør synkroniseringsværktøjet efter en tidsplan.</td></tr><tr><td><strong>Hver</strong></td><td><p>Intervallet mellem kørsler, angivet som et tal (minimum 1) og en enhed:</p><ul><li><strong>Dage</strong></li><li><strong>Timer</strong></li></ul></td></tr><tr><td><strong>Kl.</strong></td><td>Tidspunktet på dagen, hvor synkroniseringsværktøjet kører. Tilgængelig, når intervalenheden er <em><strong>Dage</strong></em>.</td></tr></tbody></table>

### Avanceret

<table><thead><tr><th width="220">INDSTILLINGER</th><th>BESKRIVELSE</th></tr></thead><tbody><tr><td><strong>Lydløs tilstand</strong></td><td>Kør synkroniseringsværktøjet i lydløs tilstand.</td></tr><tr><td><strong>Synkroniser beskrivelse</strong></td><td>Synkroniser beskrivelsen for posterne.</td></tr><tr><td><strong>Synkroniser gruppe</strong></td><td>Synkroniser mappen for posterne.</td></tr><tr><td><strong>Synkroniser mærker</strong></td><td>Synkroniser mærkerne for posterne.</td></tr><tr><td><strong>Handling ved uoverensstemmelse for post</strong></td><td><p>Den handling, der anvendes på en post, som dette synkroniseringsværktøj har oprettet, og som ikke længere stemmer overens med de synkroniserede data:</p><ul><li><strong>Ingen</strong></li><li><strong>Slet</strong></li><li><strong>Flyt til</strong> — Flyt posten til den mappe, der er angivet i <em><strong>Destinationsmappe</strong></em>, som vises under listen.</li><li><strong>Markér som udløbet</strong> — Markér posten som udløbet med den tekst, der er angivet i <em><strong>Udløbsmeddelelse</strong></em>, som vises under listen.</li></ul></td></tr></tbody></table>

### Anvendelseseksempler for synkroniseringsværktøjet Brugerdefineret (PowerShell)

**Simpel session**

Angiv vært, navn, beskrivelse og gruppe, mens standardtypen RDP bruges. Alternativt bruges en skabelon for at fremme genbrug og standardisering. Her er et eksempel:

```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'
}
```

**Session med legitimationsoplysninger**

For at angive legitimationsoplysningerne bruges: `$session.SetCredentials($row.Username, $row.Password, $row.Domain);`.

For kun at angive adgangskoden bruges: `$session.SetPassword($row.Password);`.

{% hint style="info" %}
Adgangskoden kan ikke angives ved hjælp af `$session.Password`.
{% endhint %}

**Ofte brugte felter**

Her er ofte brugte felter til hurtig reference:

```
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
```

**Avanceret scenarie**

Ved at bruge den metode, der er beskrevet under [Reverse engineering af en posts struktur](https://docs.devolutions.net/powershell/remote-desktop-manager-powershell/powershell-scripting/list-of-property-names-for-powershell-script#reverse-engineering-an-entrys-structure), kan De oprette en post med alle obligatoriske oplysninger i de relevante felter og observere, hvordan værdier tildeles ved hjælp af PowerShell.\
\
Her er der for eksempel en post af typen ***Vært***, hvor mange felter i afsnittet ***Visning*** – ***Aktiv*** er udfyldt:

```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>
```

De kan se nogle få "komplekse" objekter, nemlig `HostDetails` og `MetaInformation`. Det førstnævnte er specifikt for posttypen ***Vært***, og det sidstnævnte er en beholder for alt i afsnittet ***Visning*** – ***Aktiv***. Tilføj afsnitsnavnet som præfiks for at skrive til de indre felter.

```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"
}
```

**Hovedpunkter**

* Bemærk, at egenskaberne `Name` og `HostDetails.Host` har den samme værdi. Dette er et kendetegn ved posten ***Vært***, og der skal også udvises forsigtighed ved arbejde med andre posttyper.
* Nogle felter, f.eks. `MetaInformation.AssetSubType`, er knyttet til en enumerering og skal indeholde den nøjagtige streng. Andre, f.eks. `MetaInformation.NetworkGateway`, er enkle strenge og kan indeholde hvad som helst. Kontakt gerne vores [supportteam](mailto:service@devolutions.net), hvis De har yderligere spørgsmål.

### Se også

* [Synkroniseringsværktøjer](/rdm/da/concepts/advanced-concepts/synchronizers.md)
* [Liste over egenskabsnavne til PowerShell-script](https://docs.devolutions.net/powershell/remote-desktop-manager-powershell/powershell-scripting/list-of-property-names-for-powershell-script)
* [PowerShell-kommandoer](https://docs.devolutions.net/powershell/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 by asking a question.

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

```
GET https://docs.devolutions.net/rdm/da/knowledge-base/knowledge-base-articles/entry-settings/custom-powershell-synchronizer.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.
