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

# Agent

Konfigurer Devolutions Agent eller PowerShell Universal Event Hub-agenten til at køre jobs og kommandoer på eksterne computere.

PowerShell Universal understøtter to implementeringer af fjernagenter. Brug **Devolutions Agent** til nye udrulninger. Den opretter forbindelse til PowerShell Universal via gRPC og understøtter fjernjob, computergrupper, PowerShell-fjernstyringskommandoer og virtuelle multi-pwsh-miljøer. **PowerShell Universal Agent** forbliver tilgængelig til Event Hub-baseret automatisering.

## Devolutions Agent

Devolutions Agent er den anbefalede agent til nye installationer. Den opretter en udgående, godkendt gRPC-forbindelse til PowerShell Universal; PowerShell-remoting behøver ikke at være konfigureret mellem serveren og den administrerede computer.

Download Windows-installationsprogrammet fra [Devolutions Download Center](https://devolutions.net/download-center/). Til udrulninger i objektbeholdere skal De bruge imaget [`devolutions/powershell-universal-agent`](https://hub.docker.com/r/devolutions/powershell-universal-agent) fra Docker Hub.

### Forudsætninger og forbindelse

Installér Devolutions Agent på den computer, der skal køre jobbene. Agenten skal kunne nå PowerShell Universal-gRPC-slutpunktet via HTTP/2. I standardkonfigurationen til udvikling er dette port `5006`; brug HTTPS-slutpunktet i produktion.

Hver agent skal have et unikt, stabilt agent-id. Når agenten opretter forbindelse, opretter eller opdaterer PowerShell Universal en Computer-post med typen **Agent**, markerer den som online og tilføjer tags for dens maskinnavn, operativsystem, arkitektur, hubs og egenskaber. Brug disse tags til at målrette agenten med computergrupper.

### Opret et app-token

Opret et dedikeret app-token til hver Devolutions Agent. Tokenet skal have den indbyggede rolle **Agent**. Denne rolle er bevidst begrænset til agentregistrering og giver ikke tilladelser til administrations-API'et, så genbrug ikke et administrator- eller automatiseringstoken.

{% code collapsedlinecount="10" %}

```powershell
Grant-PSUAppToken `
  -IdentityName 'devolutions-agent-01' `
  -Role 'Agent' `
  -Description 'Devolutions Agent on production-01' `
  -Expiry (Get-Date).AddYears(1)
```

{% endcode %}

Lagre det returnerede token som en hemmelighed. Roter det, før det udløber, og erstat det i agentkonfigurationen. Agenten kan ikke oprette forbindelse med et token, der mangler, er ugyldigt eller ikke har rollen Agent.

### Konfigurer agenten

Windows-installationsprogrammet kan aktivere funktionen **PowerShell Universal Agent** og indsamle URL'en til PowerShell Universal-serveren, app-tokenet, agent-id'et og visningsnavnet. Agenten kan også konfigureres i `agent.json`.

{% code collapsedlinecount="10" %}

```json
{
  "PsuAgent": {
    "Enabled": true,
    "ServerUrl": "https://psu.contoso.com:5006",
    "AgentId": "devolutions-agent-01",
    "DisplayName": "Production agent 01",
    "AppToken": "$secret:psu-agent-token",
    "Hubs": ["production"],
    "PowerShell": {
      "VersionSelector": "7.6"
    }
  }
}
```

{% endcode %}

`AppToken` accepterer enten tokenværdien eller en `$secret:<name>`-reference, der opløses af PowerShell SecretManagement. `AgentId` er den identifikator, der bruges til at målrette agenten. `DisplayName` er et venligt navn, der vises i PowerShell Universal. `Hubs` bliver **Hub**-computertags. `PowerShell` kan vælge en `multi-pwsh`-version, bruge en bestemt sti til en eksekverbar fil eller bruge Windows PowerShell.

For Linux-containerimaget skal De angive `PSU_SERVER_URL` og `PSU_APP_TOKEN`; begge kræves for at aktivere PSU-integrationen.

{% code collapsedlinecount="10" %}

```powershell
docker run --rm `
  --add-host host.docker.internal:host-gateway `
  --env PSU_SERVER_URL='http://host.docker.internal:5006' `
  --env PSU_APP_TOKEN='<application-token>' `
  --env PSU_AGENT_ID='devolutions-agent-linux' `
  --env PSU_HUBS='production' `
  devolutions/powershell-universal-agent:latest
```

{% endcode %}

### Kør jobs på en agent

Når agenten vises i **Manage > Computers & Groups > Computers**, skal De oprette en computergruppe, hvis tags vælger den. En agent, der f.eks. er konfigureret med `"Hubs": ["production"]`, har et `Hub`-tag med værdien `production`; en computergruppe med tagget `production` vælger den agent.

Tildel computergruppen til et script eller en tidsplan, og vælg, om der skal køres på **any** matchende computer eller **all** matchende computere. De kan også kalde et script mod én agent ved at bruge dens agent-id som køen.

{% code collapsedlinecount="10" %}

```powershell
# Run on one named Devolutions Agent.
Invoke-PSUScript -Name '.\Inventory.ps1' -Queue 'devolutions-agent-01'

# Run on any online computer selected by the production-agents group.
Invoke-PSUScript -Name '.\Inventory.ps1' -ComputerGroup 'production-agents'
```

{% endcode %}

Kun onlineagenter, der ikke er i vedligeholdelsestilstand, vælges. Et gruppekald, der er konfigureret til **All**, opretter et job for hver matchende agent; **Any** vælger én matchende agent.

### Kør kommandoer med Invoke-PSUCommand

`Invoke-PSUCommand` er et alias for `Send-PSUEvent`. Brug `-Computer` til at køre på et bestemt agent-id, eller `-ComputerGroup` til at køre mod hver matchende computer i en gruppe. Kommandoen returnerer pipelineoutput og skriver de eksterne warning-, information-, verbose- og error-streams lokalt.

{% code collapsedlinecount="10" %}

```powershell
# Run a script block on one Devolutions Agent.
Invoke-PSUCommand `
  -Computer 'devolutions-agent-01' `
  -ScriptBlock { Get-CimInstance Win32_OperatingSystem }

# Run a command on all agents selected by a computer group.
Invoke-PSUCommand `
  -ComputerGroup 'production-agents' `
  -Command Get-Service `
  -Parameters @{ Name = 'Spooler' }
```

{% endcode %}

Brug `-Timeout` for at tillade kommandoer, der kører længere. Agenten skal forblive forbundet under hele kaldet.

### Brug virtuelle multi-pwsh-miljøer

For et isoleret kørselsmiljø eller et containerkørselsmiljø med et virtuelt miljø aktiveret pakker PowerShell Universal automatisk det valgte virtuelle `multi-pwsh`-miljø og instruerer fjernagenten om at importere det, før jobbet starter. Agenten er derefter vært for jobbet med den matchende PowerShell-version og det matchende navn på det virtuelle miljø.

Brug dette til at levere de moduler, som et job kræver:

1. Opret eller opdater det virtuelle miljø i PowerShell Universal, og installér de påkrævede moduler i det.
2. Vælg det isolerede miljø eller containermiljøet til scriptet.
3. Målret mod Devolutions Agent direkte eller via en computergruppe.

Importen kører via `multi-pwsh venv import`. De behøver ikke manuelt at kopiere modulerne til agenten; hold definitionen af det virtuelle miljø og dets moduler under PowerShell Universal-administration, så agenten modtager den forventede pakke.

### Hvad PowerShell Universal overfører

PowerShell Universal opretter et fjernlager under agentens midlertidige katalog på `PowerShellUniversal/Repository` med mapperne `Scripts` og `Modules`. Modules-mappen i lageret føjes til den eksterne PowerShell-modulsti.

For et scriptjob overfører PowerShell Universal jobbets startscript til den eksterne Scripts-mappe og kører jobbet over gRPC-PowerShell-remoting-streamen. Denne overførsel sker pr. kørsel: det kopierede startscript fjernes, når jobbet er færdigt. Admin console har ikke en **Install on Agent**-handling eller en **Keep run scripts on agents**-indstilling.

Når det valgte miljø bruger et virtuelt multi-pwsh-miljø, importeres dets pakke, før jobbet kører. Gå ikke ud fra, at vilkårlige serverfiler, hemmeligheder eller moduler, der er installeret uden for det valgte virtuelle miljø, overføres til agenten; klargør dem eksplicit i miljøet eller på den administrerede computer.

## PowerShell Universal Agent

PowerShell Universal Agent er den oprindelige Event Hub-baserede agent. Den kører et lokalt script eller en direkte PowerShell-kommando, når den har modtaget et Event Hub-kald via WebSockets. Brug den, når De har brug for et eksisterende Event Hub-workflow; brug Devolutions Agent til nye udrulninger af fjernjobs.

### Konfigurer agent.json

Opret `agent.json` efter installationen. Lagre den under `$env:ProgramData\PowerShellUniversal` for en systemdækkende agent eller `$env:AppData\PowerShellUniversal` for en agent pr. bruger.

{% code collapsedlinecount="10" %}

```json
{
  "Connections": [
    {
      "Url": "https://psu.contoso.com",
      "Hub": "eventHub",
      "AppToken": "<application-token>",
      "ScriptPath": "script.ps1",
      "Description": "My agent"
    }
  ]
}
```

{% endcode %}

`Url` og `Hub` er påkrævede. Godkend med `AppToken` eller `UseDefaultCredentials`. `ScriptPath` er valgfri, fordi Event Hubs kan kalde PowerShell-kommandoer direkte. En relativ scriptsti opløses fra datakataloget for PowerShell Universal; brug en absolut sti, når scriptet er gemt et andet sted.

### Send hændelseshubkommandoer

Brug `Invoke-PSUCommand` eller `Send-PSUEvent` til at kalde den konfigurerede Event Hub. Eksempler og kaldemuligheder, der er specifikke for Event Hub, finder De under [Event Hubs](/powershell-universal/da/api/event-hubs.md).


---

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