> 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/powershell-universal/da/config/settings.md).

# App-indstillinger

Konfigurer programindstillinger for PowerShell Universal i appsettings.json, herunder Kestrel-slutpunkter, godkendelse, JWT og datapersistens.

Programindstillinger findes i filen `appsettings.json` i installationskataloget. Denne fil definerer forskellige indstillinger, som De kan anvende på PowerShell Universal. Selvom De kan redigere denne fil direkte, anbefales det, at De bruger en af følgende metoder til at bevare indstillinger, da filen `appsettings.json` i installationskataloget overskrives ved opgraderinger.

{% hint style="info" %}
Når PowerShell Universal er installeret fra MSI'en, er installationskataloget `${env:ProgramFiles(x86)}\Universal`.
{% endhint %}

## ProgramData AppSettings.json

De kan oprette en appsettings.json-fil i mappen `$Env:ProgramData\PowerShellUniversal`. De kan bruge en delmængde af indstillingerne fra filen `appsettings.json`. Hvis De f.eks. ville tilsidesætte JWT-indstillingerne, kunne De have en `appsettings.json`-fil som denne.

```javascript
{
  "Jwt": {  
    "SigningKey": "PleaseUseYourOwnSigningKeyHere",  
    "Issuer": "IronmanSoftware",
    "Audience": "PowerShellUniversal"
  }
}
```

## Miljøvariabler

De kan også angive miljøvariabler for Deres indstillinger. Miljøvariabler skal have en understregning mellem hvert undersæt i filen `appsettings.json`. Hvis De f.eks. vil ændre JWT-signeringsnøglen via en miljøvariabel, skal De angive variablen `$Env:Jwt__SigningKey`. Hvis De vil angive den eksterne API-URL, skal De angive `$Env:Api__Url`.

### Eksempler

Brug af en miljøvariabel til OpenID Connect-hemmeligheden.

```
$Env:Authentication__OIDC__ClientSecret = "mySecret"
```

Brug af en miljøvariabel til JWT-signeringsnøglen.

```
$Env:Jwt__SigningKey = "mySigningKey"
```

## Kommandolinje

De kan angive placeringen af filen `appsettings.json` ved hjælp af kommandolinjeargumentet `--appsettings` til `Universal.Server.exe` .

```powershell
.\Universal.Server.exe --appsettings C:\appsettings.json
```

## Indstillingsbeskrivelser

### Kestrel / slutpunkter

**Standardværdi**

```javascript
"Kestrel": {
  "Endpoints": {
    "HTTP": {
      "Url": "http://*:5000"
    }
  },
  "RedirectToHttps": "false"
},
```

Afsnittet Kestrel-slutpunkter giver Dem mulighed for at konfigurere webserveren. Disse indstillinger bruges ikke ved hosting i IIS. I dette afsnit kan De konfigurere valgmuligheder som HTTPS og den port, som PowerShell Universal lytter på.

Kestrel er webserverimplementeringen til ASP.NET Core, som PowerShell Universal bruger. Besøg denne [Microsoft-dokumentationsside](https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-3.1#listenoptionsusehttps) for at få flere oplysninger om konfigurationsmulighederne for Kestrel.

| Nøgle             | Beskrivelse                                                                                                                                                             |
| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RedirectToHttps   | Når true, omdirigerer webserveren HTTP-anmodninger til HTTPS                                                                                                            |
| BasePath          | Påkrævet, når PowerShell Universal konfigureres som et indlejret websted i IIS. Dette skal indeholde den indlejrede IIS-rute. F.eks. `/psu`                             |
| Hsts \ MaxAgeDays | Angiver den maksimale alder i dage for [HTTP Strict Transport Security](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Strict-Transport-Security). |
| CookiePolicy      | Når indstillingen er angivet til SameSiteNone, sættes værdien SameSite=None på cookies i PSU. Dette er nyttigt, når PSU hostes i iframes.                               |
| Headere           | Et objekt, hvor nøglerne er de headere, der skal angives på hver anmodning, og værdien er headerens værdi.                                                              |

### Azure Application Insights

**Standardværdi**

```javascript
"ApplicationInsights": {
  "ConnectionString": ""
},
```

| Nøgle            | Beskrivelse                                            |
| ---------------- | ------------------------------------------------------ |
| ConnectionString | Angiver forbindelsesstrengen for Application Insights. |

### Logning

**Standardværdi**

```javascript
{
    "SystemLogPath": "%PROGRAMDATA%/PowerShellUniversal/Logs/System/log.txt",
    "SystemLogLevel": "Information"
}
```

Angiver stien og niveauet for systemloggen. Dette tilsidesættes af logniveauet i settings.ps1, når den er indlæst. Denne indstilling er nyttig til fejlfinding af problemer under systemopstart.

| Nøgle          | Beskrivelse                                                                        |
| -------------- | ---------------------------------------------------------------------------------- |
| SystemLogPath  | Sti til logfilen.                                                                  |
| SystemLogLevel | Systemlogniveauet. De kan angive værdier som Debug, Information, Warning og Error. |

### AllowedHosts

**Standardværdi**

```javascript
    "AllowedHosts": "*",
```

Værterne, der har tilladelse til at oprette forbindelse til webserveren. Standardværdien er enhver vært.

### **CorsHosts**

**Standardværdi**

```javascript
    "CorsHosts": "",
```

Konfigurerer de værter, der har tilladelse til at foretage anmodninger om deling af ressourcer på tværs af oprindelser (CORS) til serveren. For at tillade flere værter skal De adskille hver vært med et semikolon.

```javascript
"CorsHosts" : "https://www.google.com;https://login.microsoftonline.com"
```

### **Data**

**Standardværdi**

```javascript
"Data": {
  "RepositoryPath": "%ProgramData%\\UniversalAutomation\\Repository",
  "ConnectionString": "%ProgramData%\\UniversalAutomation\\database.db",
  "GitRemote": "",
  "GitUserName": "",
  "GitPassword": "", 
  "GitBranch": "",
  "ConfigurationScript": "",
  "ExternalGitClient": false,
  "Mode": "automatic",
  "SlowQueryLimit": 500,
  "Persistence": {}
},
```

| Nøgle                      | Beskrivelse                                                                                                                                                 |
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| RepositoryPath             | Sti til lagringsplaceringen for de konfigurationsfiler, der bruges af Universal.                                                                            |
| ConnectionString           | Sti til den database, der bruges af Universal.                                                                                                              |
| GitRemote                  | Git-fjernlager, der bruges til at synkronisere til Universal.                                                                                               |
| GitBranch                  | Git-gren, der skal tjekkes ud, når der synkroniseres til Universal.                                                                                         |
| GitUserName                | Git-brugernavn, der bruges til at synkronisere til GitRemote. Når der bruges en PAT, kan dette være en hvilken som helst værdi.                             |
| GitPassword                | Git-brugerens adgangskode eller det personlige adgangstoken, der bruges til at synkronisere til GitRemote.                                                  |
| GitSyncTimeout             | Antallet af sekunder, før en kommando til en ekstern git-klient får timeout. Standardværdien er 60 sekunder.                                                |
| ConfigurationScript        | Placering af et brugerdefineret konfigurationsscript, der skal indlæses. De kan returnere objekter som scripts, dashboards og slutpunkter fra dette script. |
| ExternalGitClient          | Når værdien er angivet til true, bruges operativsystemets Git-klient i stedet for den indbyggede biblioteksklient                                           |
| Mode                       | Angiver git-tilstanden. Den kan være enten manual eller automatic. Standardværdien er manual.                                                               |
| SlowQueryLimit             | Antallet af millisekunder, en SQL-forespørgsel skal køre, før en logmeddelelse skrives. Standardværdien er 200ms. Kun tilgængelig for MS SQL.               |
| Persistens                 | Konfigurerer [persistens af ressourcer i databasen](/powershell-universal/da/config/repository.md).                                                         |
| InvisibilityTimeoutMinutes | Antallet af minutter, før et job får timeout i Hangfire. Standardværdien er 5. Gælder kun for PostgreSQL.                                                   |

### **API**

**Standardværdi**

```javascript
"Api": {
  "Url": "",
  "HideManagementDoc": false
},
```

| Nøgle             | Beskrivelse                                                                                                                                                                                                                                                                                                                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Url               | Angiver den eksterne URL, der bruges internt af Universal. Dette er nødvendigt, når Universal køres fra en omvendt proxy som IIS. Når De bruger cmdlets som `Get-UAScript` fra et kørende job, skal Universal-serveren fastslå, hvor webserveren er. Når den kører i en proxy, kan den ikke selv fastslå dette. De bør konfigurere dette, så det peger på navnet og porten på IIS-webstedet i denne konfiguration. |
| HideManagementDoc | Hvis true, skjules OpenAPI-dokumentationen for PowerShell Universals administrations-API.                                                                                                                                                                                                                                                                                                                          |

{% hint style="warning" %}
\`Api.Url\` bruges internt af PowerShell Universal, når cmdletter skal kalde tilbage til PSU-serveren fra jobs, slutpunkter eller andre interne udførelseskontekster. I miljøer med reverse proxy eller belastningsfordeling skal De sikre, at denne værdi peger på en stabil URL for PSU-værten, som kan nås direkte. Brug af et DNS-alias eller et andet indirekte slutpunkt kan forårsage periodiske cmdlet-fejl, hvis aliaset opløses via en ustabil proxy eller backendsti. Angiv om nødvendigt \`-ComputerName\` eksplicit ved cmdlet-kaldet.
{% endhint %}

### **Godkendelse**

**Standardværdi**

```javascript
"Authentication" : {
    "Windows": {
      "Enabled": "false"
    },
    "WSFed": {
      "Enabled": "false",
      "MetadataAddress": "",
      "Wtrealm": "",
      "CallbackPath": "/auth/signin-wsfed",
      "Wreply": "",
      "UseTokenLifetime": true,
      "CorrelationCookieSameSite": ""
    },
    "OIDC": {
      "Enabled": "false",
      "CallbackPath": "/auth/signin-oidc",
      "ClientID": "",
      "ClientSecret": "",
      "Resource": "",
      "Authority": "",
      "ResponseType": "",
      "SaveTokens": "false",
      "CorrelationCookieSameSite": "",
      "UseTokenLifetime": true
    },
    "OIDC": {
      "Enabled": "false",
      "CallbackPath": "/auth/signin-oidc",
      "ClientID": "",
      "ClientSecret": "",
      "Resource": "",
      "Authority": "",
      "ResponseType": "",
      "SaveTokens": "false",
      "CorrelationCookieSameSite": "",
      "UseTokenLifetime": true,
      "Scope": "openid profile groups",
      "GetUserInfo": false
    },
    "ClientCertificate": {
      "Enabled": "false"
    },
    "SessionTimeout": "25"
  },
```

**Windows**

| **Nøgle** | Beskrivelse                                                                                                                             |
| --------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Aktiveret | Aktiverer eller deaktiverer [Windows-godkendelse](/powershell-universal/da/api/security.md#authenticating-with-windows-authentication). |

#### OIDC

Indstillinger for OpenID Connect-godkendelse.

| Nøgle                     | Beskrivelse                                                                                                                                          |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| Aktiveret                 | Om OIDC er aktiveret.                                                                                                                                |
| CallbackPath              | Den sti, som OIDC-udbyderen vil kalde tilbage til.                                                                                                   |
| ClientID                  | Den konfigurerede OIDC-klient-id.                                                                                                                    |
| ClientSecret              | Den konfigurerede OIDC-klienthemmelighed.                                                                                                            |
| Resource                  | Ressourcer, der er tildelt med dette OIDC-token.                                                                                                     |
| Authority                 | Den authority, der kaldes ved godkendelse. Dette er URL'en til Deres OIDC-udbyder.                                                                   |
| ResponseType              | Den type svar, der returneres af udbyderen. Den mest almindelige værdi her er `code`                                                                 |
| SaveTokens                | Om tokenet skal gemmes, så det er tilgængeligt for slutpunkter som dashboards.                                                                       |
| CorrelationCookieSameSite | [Samme indstillinger for korrelationscookie.](https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-5.0)                    |
| UseTokenLifetime          | Hvis den er angivet til true, sættes cookiens levetid til tokenets levetid. Dette tilsidesætter værdien for sessionstimeout.                         |
| GetUserInfo               | Returnerer yderligere brugeroplysninger til brug i roles.ps1-filer. De kan få adgang til de yderligere oplysninger ved hjælp af variablen $UserInfo. |

#### WSFed

Indstillinger for WS-Federation-godkendelse.

| Nøgle                     | Beskrivelse                                                                                                                       |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
| Aktiveret                 | Om WS-Fed er aktiveret.                                                                                                           |
| MetadataAddress           | Metadataadressen til hentning af oplysninger om WS-Fed-instansen.                                                                 |
| Wrealm                    |                                                                                                                                   |
| Wreply                    |                                                                                                                                   |
| CallbackPath              | Den sti, som OIDC-udbyderen vil kalde tilbage til.                                                                                |
| UseTokenLifetime          | Hvis den er angivet til true, sættes cookiens levetid til tokenets levetid. Dette tilsidesætter værdien for sessionstimeout.      |
| CorrelationCookieSameSite | [Samme indstillinger for korrelationscookie.](https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-5.0) |

#### Tærskel for sessionstimeout (minutter)

| Nøgle          | Beskrivelse                                                                           |
| -------------- | ------------------------------------------------------------------------------------- |
| SessionTimeout | Antal minutter, før en session, der er logget på, får timeout (standardværdien er 25) |

### **JWT**

JSON Web Token-konfigurationsindstillinger

**Standardværdi**

```javascript
"Jwt": {  
  "SigningKey": "PleaseUseYourOwnSigningKeyHere",  
  "Issuer": "IronmanSoftware",
  "Audience": "PowerShellUniversal"
},
```

| Nøgle      | Beskrivelse                            |
| ---------- | -------------------------------------- |
| SigningKey | Signeringsnøglen til JWT-tokens.       |
| Issuer     | Den udsteder, der medtages i tokenet.  |
| Audience   | Den målgruppe, der medtages i tokenet. |

### Secrets

Muligheder for at konfigurere standardhemmelighedsboksene.

**Standardværdi**

```json
"Secrets": {
  "SecretStore": {
    "Password": "PSUSecretStore"
  },
  "Database": {
    "EncryptionKey": "=b0ywQA@VOSdr&R7an5g&XK6NVO%s4Tf",
    "Password": "",
    "KeySize": 128
  },
  "SecretManagement": {
    "OutOfProcess": false
  }
}
```

| Nøgle                           | Beskrivelse                                                                                                           |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| SecretStore \ Password          | Adgangskoden til PSUSecretStore-boksen. Dette bruger Microsoft SecretStore-modulet.                                   |
| Database \ EncryptionKey        | AES 128-krypteringsnøglen, der bruges til at kryptere hemmeligheder, som er gemt i databasen.                         |
| Database \ Password             | En adgangskode, der bruges til at generere en krypteringsnøgle. EncryptionKey ignoreres, hvis adgangskode er angivet. |
| Database \ KeySize              | Antallet af byte i nøglen. Bør være et multiplum af 128 og er som standard 128.                                       |
| SecretManagement \ OutOfProcess | Angiver, om handlinger for hemmelighedsadministration skal køres uden for processen. Standardværdien er false.        |

#### Generering af en krypteringsnøgle

Krypteringsnøgler er 128-bit og kræver den korrekte længde. Nøglerne kodes som en base64-streng og konverteres til byte ved opstart.

De kan bruge følgende kode til at generere en hemmelig nøgle med den korrekte længde.

```powershell
$random = [System.Security.Cryptography.RandomNumberGenerator]::Create();
$buffer = New-Object byte[] 16;
$random.GetBytes($buffer);
[Convert]::ToBase64String($buffer)
```

### UniversalAutomation

Indstillinger for automatiseringsspecifikke funktioner.

**Standardværdi**

```json
"UniversalAutomation": {
    "Queues": [],
    "JobHandshakeTimeout": 30,
    "JobDebugging": false,
    "ContinueJobOnServerStop": false,
    "HangfireWorkerCount" : 100
  }
```

| Nøgle                   | Beskrivelse                                                                                                                                                                                                  |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Queues                  | Brugerdefinerede køer, som denne PSU-instans er en del af.                                                                                                                                                   |
| JobHandshakeTimeout     | Antallet af sekunder, der skal ventes, før et job fejler, efter at PowerShell-processen er startet for at udføre det, hvis processen ikke kommunikerer tilbage til serveren.                                 |
| JobDebugging            | Om der skal genereres filer i det midlertidige katalog, når et job startes. Dette er nyttigt til fejlfinding, hvis jobs får timeout, før de starter.                                                         |
| ContinueJobOnServerStop | Om et job skal fortsætte med at køre, efter at tjenesten er stoppet. Jobforløbet kan ikke rapporteres, men scriptet fortsætter med at køre.                                                                  |
| HangfireWorkerCount     | Antallet af Hangfire-arbejdertråde, der skal startes på serveren. Denne indstilling er nodespecifik. Standardværdien er 100. Dette er det samlede antal jobs, der kan køre på den pågældende node ad gangen. |

### **HideAdminConsole**

```json
{
    "HideAdminConsole": false
}
```

Forhindrer tjenesten i at servere admin console. Dette forhindrer, at admin console bruges af enhver bruger, herunder administratorer.

### NodeName

```json
{
    "NodeName": ""
}
```

Indstillingen for nodenavn bruges til at ændre navnet på PowerShell Universal-instansen. Som standard er dette den lokale computers navn. Når PowerShell Universal bruges i en container, kan dette blive problematisk, fordi navnet kan ændre sig, hver gang containeren genstartes.

For at angive et statisk nodenavn skal De ændre denne parameter.

## Statiske ressourcer

De kan definere statiske ressourcer ved hjælp af appindstillinger. Disse omfatter miljøvariabler og appsettings.json. For at definere en ressource skal De bruge noden `Resources` i appsettings.json eller præfikset `Resources` med en miljøvariabel.

Brug f.eks. følgende for at definere en statisk rolle i appsettings.json.

```json
{
    "Resources": {
        "Roles": [
            {
                "Name": "Static Role",
                "ClaimType": "group",
                "ClaimValue": "xyz123"
            }
        }
    }
}
```

De kan definere den samme rolle ved hjælp af miljøvariabler.

```powershell
$ENV:Resources__Roles__0__Name = "Static Role"
$ENV:Resources__Roles__0__ClaimType = "group"
$ENV:Resources__Roles__0__ClaimValue = "xyz123"
```

### Eksempel: Docker Compose

De kan bruge miljøvariabler i en Docker Compose YML-fil til at definere ressourcer, der vil være tilgængelige i PowerShell Universal, efter at det er startet. Nedenstående eksempel opretter tags, en rolle, angiver en brugerdefineret administratortitel, tilføjer en licens og angiver standardmiljøet.

```yaml
services:    
    psu:         
      image: devolutions/powershell-universal:latest
      environment:
          - Resources__Tags__0__Name=Production  
          - Resources__Tags__1__Name=Development
          - Resources__Roles__0__Name=PSUAdmin
          - Resources__Roles__0__ClaimType=groups
          - Resources__Roles__0__ClaimValue=1234567890abcdef1234567890abcdef
          - Resources__Roles__0__Permissions_0=*
          - Resources__Settings__DefaultEnvironment=PowerShell 7
          - Resources__Branding__AdminConsoleTitle=PSU Admin Console
          - Authentication__OIDC__Enabled=true
          - Authentication__OIDC__ClientId=123-123-123-123-123
          - Authentication__OIDC__ClientSecret=secret
          - Authentication__OIDC__Authority=https://login.microsoftonline.com/123-123-123-123
          - PSULICENSE=<License></License>
      ports:
        - "5000:5000"
```

## .NET Runtime-indstillinger

.NET-runtimen understøtter også indstillinger, der gælder for PowerShell Universal. De kan eventuelt justere disse indstillinger ud fra Deres behov.

De kan finde alt om [.NET Runtime-indstillinger på Microsoft Docs](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/).

### For mange midlertidige filer

I Linux-miljøer kan De have mange midlertidige filer, der er oprettet af runtimen for at aktivere fejlfindingsfunktioner. [Deaktivering af diagnosticeringsindstillingerne](https://learn.microsoft.com/en-us/dotnet/core/runtime-config/debugging-profiling#enable-diagnostics) for runtimen forhindrer, at dette sker. De vil ikke kunne bruge .NET-fejlfindingsværktøjer, når dette er deaktiveret.

```powershell
$Env:DOTNET_EnableDiagnostics = $false
```

### Se også

* [Devolutions Academy – Oprettelse af et grundlæggende slutpunkt](https://academy.devolutions.net/student/activity/3466014-creating-a-basic-endpoint)


---

# 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/powershell-universal/da/config/settings.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.
