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

# Scripts

Opret og konfigurer PowerShell-scripts i PowerShell Universal, herunder parametre, Run As-legitimationsoplysninger, kommentarbaseret hjælp og jobstatistik.

De kan oprette PowerShell-scripts i PowerShell Universal, så de køres manuelt, efter en tidsplan eller når der sker hændelser på platformen. Scriptene gemmes på disken og bevares i et lokalt eller eksternt Git-lager.

{% hint style="info" %}
Konfigurationsfilen `scripts.ps1` gemmer Script-egenskaberne.
{% endhint %}

## Tilføj et nyt script

For at tilføje et nyt script skal De klikke på knappen New Script under **Build > Scripts**. Der er forskellige indstillinger, De kan angive for scriptet.

## Scriptmuligheder

### **Navn**

Dette er navnet på scriptet, som det vises i Universal Automation. Dette er også det navn, der bruges til at skrive scriptet til disken. Navnet skal være entydigt i den aktuelle mappe.

### Modul og kommando

Se [Moduler og kommandoer](#modules-and-commands) nedenfor.

### **Beskrivelse**

Denne beskrivelse af scriptet vises forskellige steder i UA-brugergrænsefladen og returneres af Universal-cmdletterne.

### **Deaktiver manuelt kald**

Dette forhindrer, at et script køres manuelt. Dette håndhæves i brugergrænsefladen samt på webserveren og i cmdletter.

### **Maksimal jobhistorik**

Den maksimale jobhistorik definerer det antal jobs, der gemmes, når dette script køres. Standardværdien er 100. Der ryddes også op i jobs ud fra den serveromfattende indstilling for opbevaringsvarighed for jobs under **tandhjulet Settings > Data**.

### **Fejlhandling**

Fejlhandlingen ændrer, hvordan scriptet reagerer, når det har en fejl. Som standard ignoreres afsluttende og ikke-afsluttende fejl, og scriptet lykkes altid. De kan ændre denne indstilling til stop, så scripts fejler med det samme, når der opstår en fejl.

Hvis De ønsker at skrive fejl direkte i fejlruden uden at ændre, hvordan scriptet håndteres (f.eks. i en undtagelseshandler), skal De bruge `Write-PSUError` til at udlæse fejlposten, så den vises på fejl-fanen for jobbet.

### **Miljø**

Dette giver Dem mulighed for at definere det krævede PowerShell-miljø for scriptet. Som standard anvendes det serveromfattende standardmiljø for PowerShell. PowerShell-miljøer lokaliseres automatisk, første gang Universal Server starter, eller læses fra filen `environments.ps1`. De kan også tilføje et miljø under **Manage > Environments > Environments**.

### **Timeout**

Antallet af minutter, før scriptet får timeout. Standardværdien på 0 betyder, at scriptet vil køre for evigt. Når et script når sin timeout, annulleres det.

### Kassér pipeline

Når dette er markeret, deaktiveres lagring af pipelineoutput. Dette reducerer i høj grad CPU- og lageroverhead for jobs, men scriptet skriver stadig til informations-, advarsels- og fejlstrømmene.

### **Samtidige jobs**

Definerer det maksimale antal samtidige jobs, som scriptet kan køres med. Det er som standard 100.

```powershell
New-PSUScript -Name Script.ps1 -Path Script.Ps1 -ConcurrentJobs 1
```

### Execution Roles

Ved hjælp af egenskaben Execution Roles kan De angive, hvilke roller der tildeles, mens scriptet udføres. Som standard udføres scriptet ud fra kalderens roller. I nogle scenarier, for eksempel når De bruger hemmeligheder med roller, kan De ønske at angive yderligere roller, som kalderen ikke har. Når scripts køres i en tidsplan, har de ingen roller, så hvis De angiver dem via Execution Roles, kan hemmelighedsvariabler med roller bruges i det planlagte script.

## Kørsel af et script

De kan køre et script i brugergrænsefladen fra **Build > Scripts** ved at klikke på Run eller ved at klikke på View og derefter Run. I hvert tilfælde vises Run Dialog, så De kan vælge forskellige indstillinger for jobbet.

### Kørsel af et script med parametre

{% hint style="info" %}
Få mere at vide om parametre [her](/powershell-universal/da/automatisering/scripts/parameters.md).
{% endhint %}

PowerShell Universal bestemmer automatisk parametrene, sådan som de er defineret i Deres scripts. Det udnytter statisk kodeanalyse til at bestemme typen, standardværdierne og en vis validering, som derefter vises i brugergrænsefladen.

De kan f.eks. have et script med følgende parametre:

```powershell
param(
    $Test,
    [DateTime]$Time, 
    [int]$Number,
    [PSCredential]$Credential,
    [System.ConsoleColor]$Color
)
```

Resultatet er et sæt inputmuligheder baseret på typerne af parametre.

### Kørsel af et script som en anden bruger

{% hint style="info" %}
Det integrerede [miljø](/powershell-universal/da/config/environments.md) understøtter ikke kørsel med alternative legitimationsoplysninger.
{% endhint %}

De kan køre scripts som en anden bruger ved at konfigurere [hemmelige variabler](/powershell-universal/da/platform/variables.md#creating-a-secret-variable). PowerShell Universal bruger modulet Microsoft Secret Management til at integrere med udbydere af hemmeligheder. Se variabler for at få flere oplysninger om hemmeligheder.

1. Opret en ny hemmelig PSCredential-variabel.

Åbn **Manage > Variables & Secrets > Variables**, klik på Create Secret, og vælg variabeltypen PSCredential. Angiv brugernavnet og adgangskoden. Sørg for, at værdien Disable Run As Support ikke er markeret.

2. Kør scriptet, og vælg legitimationsoplysningen

Gå tilbage til **Build > Scripts**, og klik på knappen Run Script. Vælg et andet miljø end Integrated-miljøet. Som standard er dette enten PowerShell 7 eller Windows PowerShell 5.1.

De bliver nu bedt om at vælge legitimationsoplysningen i rullemenuen Run As. Derfra kan De vælge legitimationsoplysningen i kørselsdialogboksen.

### Kørsel af et script på en anden computer

De kan bruge rullelisten Computer til at vælge andre maskiner, som et script skal køres på. Standardværdien er at køre på en hvilken som helst tilgængelig computer.

### Kørsel af et script på alle computere

De kan køre et script på alle computere ved at vælge valgmuligheden All Computers fra rullemenuen Computer.

### Kørsel af et script fra en app med output

Hvis De vil køre et script fra en app og vise outputtet, mens det kører, kan De bruge følgende eksempel. Det benytter sig af `Invoke-PSUScript` og `Get-PSUJobOutput`.

```powershell
New-UDButton -OnClick {
    $Job = Invoke-PSUScript -Name Script.ps1
    while($Job.Status -eq 'Running' -or $Job.Status -eq 'Queued')
    {
        [array]$Output = Get-PSUJobOutput -Job $Job
        $Job = Get-PSUJob -Id $Job.Id
        $Session:Code = $Output | ForEach-Object { 
            "$_`r`n"
        } | Join-String 
        Sync-UDElement -Id 'code'
        Start-Sleep -Seconds 1
    }
} -Text 'Run Script'

New-UDDynamic -Id 'code' -Content {
    if ($Session:Code)
    {
        New-UDSyntaxHighlighter -Code $Session:Code -Language batch
    }
}
```

### Belastningsfordeling

PowerShell Universal bruger en belastningsfordelingsalgoritme efter princippet om den mindst belastede server. Hvis mere end én server er et gyldigt mål for et job, vælger PowerShell Universal den server, hvor det mindste antal jobs kører.

## Remoting

De kan bruge PowerShell-remoting ved hjælp af `Invoke-Command` . PowerShell Universal understøtter ikke brugen af `Enter-PSSession` eller `Import-PSSession`.

## Kommentarbaseret hjælp

De kan bruge kommentarbaseret hjælp til at definere beskrivelsen, en synopsis, parameterbaseret hjælp og links til Deres scripts. Disse vises i brugergrænsefladen i PowerShell Universal.

```powershell
<#
.SYNOPSIS 

This is a script for pinging other computers. 

.DESCRIPTION

This script can ping other computers. 

.PARAMETER HostName

The host name or address to ping. 

.LINK
https://devolutions.net/powershell-universal/
#>
param($HostName)

Test-NetConnection $HostName
```

Ovenstående giver en brugergrænseflade, hvor synopsissen vises som den korte beskrivelse, og en længere beskrivelse vises i beskrivelsessektionen. Links vises under beskrivelsen.

## Moduler og kommandoer

Kommandoer og cmdlets, der findes i moduler, kan bruges som mål for scripts i stedet for at skrive scriptet direkte.

Lad os antage, at vi har et modul kaldet `PSUModule`, der indeholder følgende funktion.

```powershell
function Show-HelloWorld {
    param($Name)
    "Hello, $Name!"
}
```

Det er muligt at gøre denne funktion tilgængelig som et script ved hjælp af følgende syntaks i `scripts.ps1`.

```powershell
New-PSUScript -Module 'PSUModule' -Command 'Show-HelloWorld'
```

Funktionen vises på samme måde som andre scripts i Admin Console. Parametre, hjælpetekst og andre PSU-funktioner fungerer på samme måde som med scripts.

## Statistik

Ud fra et scripts jobhistorik leverer PowerShell Universal grundlæggende statistik om udførelsen af scriptet. Disse omfatter succesrate, gennemsnitlig udførelsestid og opdelinger af udførelse efter miljø, bruger og computer.

## Understøttelse af Start-Job

Selvom det er muligt at starte jobs ved hjælp af Invoke-PSUScript, kan det være ønskeligt at starte et job ved hjælp af PowerShell-cmdlet'en Start-Job. Brug af Start-Job registrerer ikke jobbet i PowerShell Universal, og kørselsoplysningerne findes ikke i jobtabellen.

Miljøerne Integrated, PowerShell 7 og Windows PowerShell 5.1 er ikke kompatible med Start-Job, fordi de er brugerdefinerede PowerShell-værter. For at bruge Start-Job skal De konfigurere et brugerdefineret PowerShell-miljø. Åbn **Manage > Environments > Environments**, klik på Create New Environment, vælg miljøtypen Custom, og angiv pwsh.exe som stien til den eksekverbare fil.

De vil nu kunne bruge dette miljø til at køre cmdletten Start-Job.

## API

* [New-PSUScript](/powershell-universal/da/powershell-kommandoer/new-psuscript.md)
* [Remove-PSUScript](/powershell-universal/da/powershell-kommandoer/remove-psuscript.md)
* [Set-PSUScript](/powershell-universal/da/powershell-kommandoer/set-psuscript.md)
* [Get-PSUScript](/powershell-universal/da/powershell-kommandoer/get-psuscript.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/automatisering/scripts.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.
