> 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/api/event-hubs.md).

# Hændelseshubs

Opsæt PowerShell Universal Event Hubs til at sende kommandoer til forbundne agenter og dermed muliggøre fjernudførelse af scripts på tværs af distribuerede servermiljøer.

{% hint style="info" %}
Hændelseshubs kræver en [licens](/powershell-universal/da/licensing.md).
{% endhint %}

Event Hubs giver mulighed for at sende PowerShell-kommandoer til forbundne [PowerShell Universal-agenter](/powershell-universal/da/config/agent.md) fra PowerShell Universal-serveren. Agenter er letvægtstjenester på tværs af platforme, der kan køre på edge-noder, så PowerShell Universal kan udstede kommandoer mod dem.

Event Hubs fungerer enten med en-til-en-kommunikation fra serveren til agenten eller med fan-out-en-til-mange-kommunikation fra en event hub på serveren til alle forbundne agenter. Agenter kører ikke jobs direkte og kræver brug af `Invoke-PSUCommand` fra andre scripts, der kører på PowerShell Universal-serveren. De kan betragte event hubs som en måde at udføre PowerShell Remoting på uden at bruge den almindelige remoting-transport.

## Om

PowerShell Universal kører en webserver med et websocket-slutpunkt, der lytter efter agenter, som opretter forbindelse. Dette kaldes en event hub. De kan konfigurere flere event hubs pr. PowerShell Universal-server med forskellige navne og sikkerhedsindstillinger. Når en event hub er konfigureret på serveren, kan De installere en agent på enhver maskine, der kan nå PowerShell Universal via standard-HTTP-porte.

Agenten kræver en vis konfiguration af, hvor og hvordan der oprettes forbindelse til serveren. Når dette er gjort, kan agenten startes for at oprette websocket-forbindelsen til serveren. Når forbindelsen er etableret, er serveren derefter bekendt med den tilsluttede klient. Den registreres i hubben, og hændelser kan derefter sendes fra serveren til agenterne.

Selvom De ikke kan planlægge jobs til at køre direkte på agenter, kan De køre kommandoer mod agenter i jobs, API'er og apps på serveren.

## Grundlæggende eksempel

Som eksempel kan De have en Linux PowerShell Universal-agent kørende i Deres US Datacenter. PowerShell Universal-serveren, der kører i Deres EU Datacenter, har en konfigureret event hub hub ved navn Linux. På serveren ville De konfigurere hubben ved hjælp af filen `eventHubs.ps1` eller i Admin Console.

```powershell
New-PSUEventHub -Name 'Linux'
```

På agentsiden konfigurerer De derefter en `agent.ps1`-fil, der angiver, hvor agenten skal oprette forbindelse til serveren.

```json
{
    "Connections": [
        {
            "Url": "http://eu.mycompany.local",
            "Hub": "Linux"
        }
    ]
}
```

Når event hubben er oprettet, og agenten er konfigureret, opretter agenten forbindelse til serveren og kan nu acceptere kommandoer.

På serveren kan De oprette et script, der køres mod agenten. Selvom selve scriptet ikke kører mod agenten, kan De bruge den indbyggede cmdlet `Invoke-PSUCommand` til det. I Deres script kan De indsamle værtsoplysninger. Fordi parameteren `-Computer` er angivet, køres denne kommando direkte mod agenten og returnerer værtsnavnet til det script, der køres på serveren.

```powershell
Invoke-PSUCommand -Command "hostname" -Computer "linuxhost-12" 
```

Derudover kan De udføre handlinger på hele hubben af forbundne agenter. Hvis De for eksempel ville genstarte alle forbundne agenter, kunne De sende handlingen ud over hele hubben.

```powershell
Invoke-PSUCommand -Command "reboot" -Hub "Linux"
```

## Oprettelse af en hændelseshub

For at oprette en event hub skal De klikke på **Build > APIs > Event Hubs** og klikke på Create New Event Hub. Event Hubs navngives og kan indstilles til at håndhæve godkendelse og autorisation.

## Agent

De skal installere og konfigurere [PowerShell Universal Agent](/powershell-universal/da/config/agent.md) for at bruge Event Hubs. Agenten leveres på flere platforme, som en installerbar MSI på Windows og som et Docker-containerimage.

{% hint style="warning" %}
Hvis agentloggen rapporterer \`Event Hub not found\`, skal De først kontrollere, at \`Hub\`-værdien i \`agent.json\` stemmer nøjagtigt overens med en Event Hub, der er konfigureret på målinstansen af PowerShell Universal. I almindelige opsætninger betyder det, at agenten nåede serveren, men at den navngivne hub endnu ikke findes der, eller at navnene ikke stemmer overens.
{% endhint %}

## Send hændelser

Fra PowerShell Universal-serveren kan De sende hændelser fra en hub til forbundne klienter ved hjælp af cmdletten `Send-PSUEvent` (`Invoke-PSUCommand` er et alias for `Send-PSUEvent`).

```powershell
Send-PSUEvent -Hub 'MyHub' -Data "Hello!"
```

Parameteren `-Data` accepterer et objekt, som serialiseres ved hjælp af CLIXML og sendes til klienten. Dataene deserialiseres, før de overføres til scriptblokken.

De kan også køre kommandoer. Dette kræver ikke, at der defineres et script på event hub-klienten. De kan også bruge aliaset `Invoke-PSUCommand` til at efterligne PowerShells oprindelige adfærd.

```powershell
Invoke-PSUCommand -Hub "MyHub" -Command "Start-Process" -Parameters @{
    FilePath = "Notepad"
}
```

### Inspicér aktuelle forbindelser

Brug `Get-PSUEventHubConnection -Active` til at se de agenter, der er tilsluttet lige nu.

```powershell
Get-PSUEventHubConnection -Hub 'eventHub' -Active
```

Den ufiltrerede kommando kan også omfatte ældre afbrudte forbindelser, så `-Active` er den hurtigste fejlfindingsvisning, når De vil bekræfte, om en agent er online i øjeblikket. Hvis De skal målrette mod en bestemt klient, skal De bruge det returnerede `ConnectionId` med `Send-PSUEvent`.

## Modtag data fra klienter

Denne funktion er kun tilgængelig, når der sendes data til en individuel klient, i stedet for til alle klienter, der er forbundet til en hub.

```powershell
$Connection = Get-PSUEventHubConnection | Where-Object UserName -eq 'Admin'
$Result = Send-PSUEvent -Hub 'Hub' -Data 'Say Hello!' -Connectionid $Connection.ConnectionId
Show-UDToast $Result
```

## Eksempel: kørsel af scripts på fjernmaskiner

{% hint style="info" %}
Dette eksempel giver mulighed for at køre scripts på fjernmaskiner uden at skulle installere endnu en instans af PowerShell Universal.
{% endhint %}

Dette eksempel gør det muligt at sende scripts til fjernmaskiner og køre dem med et generisk event hub-script.

Opret først en event hub i PowerShell Universal. Dette eksempel bruger ikke godkendelse.

Installér derefter PowerShell Universal Agent på fjernmaskinen. Opret en konfigurationsfil i `%ProgramData%\PowerShellUniversal\agent.json`.

```json
{
    "Connections": [
        {
            "Url": "http://localhost:5000",
            "Hub": "eventHub",
            "ScriptPath": "script.ps1"
        }
    ]
}
```

Opret derefter et hjælpescript, script.ps1, til at modtage Event Hub-dataene og behandle anmodninger fra PSU om at kalde scripts. Det opretter en ny midlertidig PS1-fil og bruger `$EventData`, der videregives fra Event Hub-meddelelsen med indholdet og parametrene for scriptet.

```powershell
$TempFile = (New-TemporaryFile).FullName + ".ps1"
$EventData.Contents | Out-File -FilePath $TempFile
$Parameters = $EventData.Parameters
& $TempFile @Parameters
```

I PowerShell Universal skal De tilføje et script, som De vil køre på fjernmaskinen. I dette eksempel starter det blot en proces.

```powershell
param($Name)

Start-Process $Name
```

Tilføj til sidst endnu et script, der sender hændelsen ned til klienten. Det kan også komme fra et API eller en App. Da scriptet på agenten er generisk, kører det blot det, der overføres til det.

```powershell
param($TargetComputer, $ProcessName)
 
Send-PSUEvent -Computer $TargetComputer -Data @{
    Contents = Get-Content StartAProcess.ps1 -Raw
    Parameters = @{
        Name = $ProcessName
    }
}
```

Herfra kunne De endda bruge scriptet til at planlægge jobs, der skal køre på fjernmaskinerne ved hjælp af agenten.


---

# 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/api/event-hubs.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.
