> 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/module.md).

# Modul

Opret forbindelse til PowerShell Universal med Universal PowerShell-modulet, herunder Connect-PSUServer-godkendelse, omfang og sikkerhedsmodeller.

## Forbindelse til PowerShell Universal

PowerShell Universal-modulet kræver nogle få oplysninger for at oprette forbindelse til serveren. For det første skal det kende URL'en eller computernavnet, og for det andet skal det bruge legitimationsoplysninger for at få adgang til ressourcerne eksternt.

De kan bruge cmdlet'en `Connect-PSUServer` til at oprette en forbindelse til serveren. Kald af denne cmdlet angiver forbindelsesoplysningerne for hele processen. Hvis De kører i en proces med flere brugere, skal De overveje konsekvenserne af at bruge denne kommando.

```powershell
Connect-PSUServer -ComputerName http://localhost:5000 -AppToken xyz123
```

Når De kører scripts i miljøet Integrated eller i Apps eller API'er i PowerShell Universal, bør De overveje at bruge værdierne for computernavn og legitimationsoplysninger direkte på cmdletterne for at undgå at dele dem på tværs af processen.

```powershell
Get-PSUJob -ComputerName http://localhost:5000 -AppToken xyz123
```

### Godkendelse

### App Token

De kan bruge parameteren `-AppToken` til godkendelse mod API'en med det angivne token. Behandl app-tokenet som en adgangskode, da det giver adgang baseret på de roller, der er tildelt det.

### Standardlegitimationsoplysninger

De kan også bruge standardlegitimationsoplysninger eller Windows-legitimationsoplysninger. Denne mekanisme understøttes kun, hvis målserveren har Windows-godkendelse aktiveret. Roller og tilladelser tildeles ved forbindelse til serveren.

### Legitimationsoplysninger

Hvis De har formulargodkendelse aktiveret, kan De bruge Basic-godkendelse ved at angive et `PSCredential`-objekt til parameteren `-Credential` på `Connect-PSUServer`.

### Omfang

`Connect-PSUServer` understøtter en omfangsparameter til at definere, hvordan forbindelsesoplysningerne bevares. Som standard er omfanget Process. Procesomfanget gemmer forbindelsesoplysningerne i et statisk .NET-omfang. Alle cmdlets, der køres i den aktuelle proces, bruger disse forbindelsesoplysninger.

Hvis De bruger `Connect-PSUServer` i et miljø med flere runspaces, som miljøet Integrated, eller i apps i PowerShell Universal, vil De måske kun gemme forbindelsesoplysningerne for den aktuelle runspace. Brug parameterværdien `-Scope Runspace` til at justere, hvordan forbindelsesoplysningerne gemmes.

### Afbrydelse

De kan afbryde forbindelsen til PowerShell Universal-serveren ved hjælp af cmdlet'en `Disconnect-PSUServer`. Hvis De har brugt omfanget Runspace, ryddes de nødvendige variabler, og hvis De har brugt omfanget Process, ryddes de nødvendige statiske egenskaber.

## Interne forbindelser

Når De bruger Universal-modulet i PowerShell Universal, er det ikke nødvendigt at angive legitimationsoplysninger for computernavnet i grundlæggende installationer. Autorisationen vil matche den aktuelle bruger, og API-URL'en udledes fra den aktuelle server.

### Autorisation

Når De bruger sikkerhedsmodellen Strict, er autorisationen baseret på kalderen. Hvis en bruger f.eks. kalder et API-slutpunkt, og det slutpunkt kalder `Invoke-PSUScript`, sker kaldet på vegne af slutpunktets kalder. Kalderens tilladelser håndhæves ved scriptkørslen.

Når andre sikkerhedsmodeller bruges, kaldes cmdlet'erne på vegne af System-brugeren, og autorisation håndhæves ikke ud fra kalderen af ressourcen.

#### Sikkerhedsmodel for autorisation

De kan ændre autorisationsmodellen, så alle kald inde fra PowerShell Universal kan fungere uden et app-token. Selvom dette af nogle kan anses for mindre sikkert, afhænger det af Deres organisations brug af platformen. Denne værdi kan angives i `appsettings.json` eller i miljøvariablen `API__SecurityModel`.

En brugerkontekst er påkrævet til godkendelse. Det betyder, at når modulet bruges i ikke-brugerkontekster, f.eks. Schedules, skal De angive et app-token.

I omfang, der har en brugerkontekst, f.eks. en app, foretages kald til cmdlets under den pågældende brugers privilegier. Hvis en bruger, der tilgår en app, f.eks. ikke har adgang til at kalde `Get-PSUScript`, kan cmdlet'en ikke bruges uden et app-token med disse privilegier.

```json
{
    "Api": {
       "SecurityModel": "Strict"
    }
}
```

Permissive-tilstand bruger stadig de eksterne PowerShell Universal-API'er og kommunikerer brugerkonteksten, hvis den er tilgængelig, når PowerShell Universal-API'erne kaldes. Permissive-tilstand tillader brug af switchen -Integrated til at omgå autorisation og til at bruge back-channel-TCP-forbindelsen i stedet for det eksterne PowerShell Universal-API.

```json
{
    "Api": {
       "SecurityModel": "Permissive"
    }
}
```

De kan også bruge sikkerhedsmodellen `Integrated` til helt at undgå behovet for at konfigurere app-tokens, URL'er eller certifikater. Sikkerhedsmodellen Integrated kommunikerer ikke brugerkonteksten, selv når brugeren er godkendt. Den bruger også TCP-forbindelsen i bagkanalen i stedet for den eksterne API i PowerShell Universal.

```json
{
    "Api": {
       "SecurityModel": "Integrated"
    }
}
```

#### Hav tillid til HTTPS-certifikatet

I nogle miljøer kan det være nødvendigt at lade PowerShell Universal have tillid til webserverens certifikat, for at den kan kommunikere korrekt. Ved hvert kald kan De bruge parameteren `-TrustCertificate` for at tillade adfærden. Derudover kan De angive værdien på serverniveau for at tillade intern kommunikation.

```json
{
    "Api": {
       "TrustCertificate": true
    }
}
```

### Integrated-tilstand

Integrated-tilstand bruger den interne bagkanalforbindelse i PowerShell Universal til at kommunikere med tjenesterne via Universal-modulet. Når De bruger Integrated-tilstand, udføres autorisation kun, når API'en er i sikkerhedstilstanden Strict.

De kan kalde cmdlets ved hjælp af integreret tilstand ved at bruge switch-parameteren `-Integrated`.

Serverens sikkerhedsmodel kan også angives til `Integrated`. Dette tvinger alle cmdlet-kald til at bruge den integrerede tilstand og kræver ikke længere brug af parameteren `-Integrated`.

### Tidsplaner

Tidsplaner har ikke en aktuel bruger. De skal angive en App Token eller Default Credential, når De bruger cmdlets i planlagte scripts. Selvom dette er et ekstra trin, sikrer det, at kun de nødvendige tilladelser anvendes på tidsplanscriptet.

Tidsplaner har ikke en brugerkontekst, så De skal angive en for at få dem til at køre korrekt, når De bruger disse cmdlets.

### Omvendte proxyer (IIS)

PowerShell Universal bruger alle tilgængelige data til at bestemme den korrekte URL, der skal kaldes, når API'en bruges. Det kan være problematisk ved brug af en omvendt proxy som IIS. Den URL, som PowerShell Universal ser, er en anden end den faktiske, tilgængelige URL. Det kan forårsage problemer, når cmdletterne forsøger at tilgå API'en.

For at omgå dette problem kan De enten angive den korrekte URL for hvert cmdlet-kald eller tilpasse API-URL'en i programindstillingerne.

#### Angiv URL'en

For at angive URL'en skal De blot give den til parameteren `-ComputerName`.

```powershell
Get-PSUJob -ComputerName 'https://external.company.com/psu'
```

#### Programindstillinger

De kan også angive værdien for API-URL'en i programindstillingerne for at angive den samme værdi på tværs af platformen. Angiv enten værdien i en miljøvariabel eller i filen `appsettings.json`.

```json
{
  "API": {
    "URL": "https://external.company.com/psu"
  }
}
```

## Tekniske overvejelser

Universal-modulet bruger gRPC til al kommunikation med PowerShell Universal-serveren. Afhængigt af serverkonfigurationen vil gRPC-kommunikationen være en smule anderledes.

### HTTPS

Ved brug af HTTPS bruges den almindelige gRPC-kommunikationskanal. Det er den hurtigste konfiguration, fordi den ikke kræver særlig serialisering eller tilpasninger til ældre protokoller. HTTP/2 er påkrævet til gRPC.

Hvis der bruges HTTPS, skal systemet have tillid til certifikatet. Hvis certifikatet er selvsigneret, kan De bruge parameteren `-TrustCertificate` på cmdletterne for at undgå certifikatkontrollen.

### HTTP og Windows-godkendelse

Når De bruger HTTP eller Windows-godkendelse, understøttes HTTP/2 ikke, og gRPC kan ikke køre nativt, fordi efterstillede headere ikke understøttes. For at imødekomme dette bruger Universal-modulet en teknologi, der kaldes gRPC-Web, til at oversætte gRPC-kald til HTTP og JSON for at kalde HTTP REST-metoder i stedet for standard-gRPC-metoderne.

Denne konfiguration er en smule langsommere, men bør ikke kunne bemærkes i de fleste miljøer.

### Integrated-tilstand

Tilstanden Integrated bruger ikke den eksterne API og kommunikerer via gRPC-bagkanalen i PowerShell Universal. Det er ikke nødvendigt at konfigurere API-URL'er, certifikater eller legitimationsoplysninger.


---

# 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/module.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.
