> 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/fr/developpement/profiling.md).

# Profilage

{% hint style="info" %}
Le profilage fonctionne uniquement pour l'environnement intégré.
{% endhint %}

PowerShell Universal fournit un profileur de performances pour déboguer les problèmes où la plateforme peut présenter des réponses lentes. Cela est principalement utile lors de la création de tableaux de bord.

## Activer le profilage

Le profilage augmente l'utilisation de la mémoire, car les données de profilage sont stockées en mémoire. Vous pouvez activer le profilage en configurant la propriété `Profiling` dans le fichier appsettings.json. Elle est définie à `false` par défaut. Vous devrez redémarrer PowerShell Universal après avoir activé ou désactivé le profilage.

```json
"Profiling": true
```

## Accéder aux données de profilage

Vous pouvez accéder aux données de profilage en naviguant vers `/profiler/results-index`. Vous devrez être connecté en tant qu'administrateur avant de pouvoir accéder à cette URL.

Vous verrez une liste des requêtes et leurs temps d'exécution.

![Result Index](/files/KuOfOIc64fs3br7ZwqdM)

Cliquer sur la requête affiche une décomposition des temps d'exécution.

![Timings](/files/pEJZQSHQpUBRSzg4B61p)

## Profilage d'un point de terminaison API

Vous pouvez profiler un point de terminaison API en utilisant `Measure-PSUBlock`. L'API sera répertoriée par URL dans l'index des résultats.

Par exemple, supposons une API appelée `/process`.

```powershell
New-PSUEndpoint -Url "/process" -Endpoint {
    Measure-PSUBlock -Name 'Api' -ScriptBlock {
        Get-Process | Select-Object name
    }
} -Authentication -Timeout 0 
```

Le résultat du profilage de cette API sera répertorié par URL.

![](/files/ftadhZCGwPcVsXphmibt)

L'affichage du profil de cette API listera le bloc que nous avons mesuré.

![](/files/9JkPg2CdxwEpOqLuaTtD)

## Profilage d'une application

{% hint style="info" %}
`Measure-UDBlock` est un alias de `Measure-PSUBlock`
{% endhint %}

Vous pouvez utiliser le profileur intégré avec les applications. Par défaut, certains temps d'exécution d'actions internes sont enregistrés. Vous pouvez également utiliser la cmdlet `Measure-PSUBlock` pour mesurer des blocs spécifiques au sein de votre tableau de bord.

Par exemple, cette application utilise `Measure-PSUBlock` pour mesurer les performances de la cmdlet `Start-Sleep`. Le résultat est que le bloc prendra une seconde à s'exécuter.

```powershell
New-UDApp -Title 'App' -Content {
    New-UDDynamic -Id 'MyElement' -Content {
        Measure-PSUBlock -Name 'WithinDashboard' -ScriptBlock {
            Start-Sleep 1
        }
    }
}
```

Lors de l'examen des requêtes dans le profileur, vous devrez rechercher `UDComponent\ElementPost` et `UDComponent\Element`. Ce sont des requêtes pour les éléments au sein des applications.

Ci-dessous se trouve l'exemple de sortie de l'application présentée ci-dessus. Notez que l'URL inclut l'ID de l'élément `MyElement`. Vous remarquerez également que le bloc `WithinDashboard` prend environ 1 seconde.

![Dashboard Timing](/files/jTHgQpPbM8RMlSWMLOkv)

Tous les temps d'exécution ne seront pas affichés par défaut. Vous pouvez cliquer sur `show trivial` pour développer tous les temps d'exécution.

![All Timings](/files/0A6KOneXj09VDngY2g5r)

## Profilage d'une tâche

Vous pouvez profiler des tâches en utilisant `Measure-PSUBlock` dans votre script.

Par exemple, supposons que nous ayons un script qui appelle `Get-Service`.

```powershell
Measure-PSUBlock -ScriptBlock {
    Get-Service
} -Name 'Get-Service'
```

L'exécution d'un profilage sur ce script répertoriera la tâche sous la forme `JobProfiler/{id}`. L'identifiant correspondra à l'ID de tâche affiché dans la console d'administration.

![](/files/0oo9GfuD7VjauCLUqzui)

Le profil inclura le bloc qui a été mesuré.

![](/files/E1UYRRuejU1VYZTS57iA)


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.devolutions.net/powershell-universal/fr/developpement/profiling.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
