GLPI/Configuration/Générale/API/Exemple 2

Aller à la navigation Aller à la recherche

Exemple de script PowerShell d'utilisation de l'API GLPI.

Source :

Autre source identique :

Exemple 1, PowerShell

# Paramètres de connexion à GLPI
$AppURL        = "http://php100/glpi/apirest.php"           # adresse principale
$AppToken      = "Zqi1p7YrUF5Sj0SxmGCCFYekznO3Bvqz76SNU66m" # app_Token, du menu config > général : client d'API
$UserToken     = "ZwHRn0wg9HvphYFEKY01sStlNIsBd7hkuaDK6bnv" # se trouve sur la fiche de l'utilisateur
$demandeurName = "phil"                                     # Remplacez par le nom du demandeur que vous souhaitez rechercher

# création d'une session
$SessionToken = Invoke-RestMethod "$AppURL/initSession" -Method Get -Headers @{"Content-Type" = "application/json";"Authorization" = "user_token $UserToken";"App-Token"=$AppToken}

# recherche
$SearchResult = Invoke-RestMethod "$AppURL/Computer/" -Headers @{"session-token"=$SessionToken.session_token; "App-Token" = "$AppToken"}

$SearchResult | Format-Table -AutoSize

Exemple 2, PowerShell

<#
Nom           : PSHGLP101
Description   : récupération des données de tickets GLPI
Usage         : consultation des données de GLPI
Particularité : utilisation de l''API GLPI et du jeton de l''application et du jeton d''un utilisateur
Auteur        : fylip22
Version       : 1.1
Révisions     : - 1.0 (04/02/2025) : création du script
                - 1.1 (05/02/2025) : optimisation du code
#>

## Configuration
$urlGlpiAPI        = "http://php100/glpi10/apirest.php"
$jetonUtilisateur  = "Wvp2rJkLB55XJM0l22YfCUrBeiIGoMSXhqAkL2BT"
$jetonApplication  = "o4I10qMK1mJMoFfJ1wyVVU5w82UYPDWXDcvwt7AW"

# $glpiElement = "computer/2/log"
# $glpiElement = "Computer/2"
# $glpiElement = "ticket"
# $glpiElement = "user"
$glpiElement = "computer"
# $glpiElement = "Computer/2/Networkport"

## Headers pour l'authentification
$sessionEntete = @{
    'Content-Type'  = 'application/json'
    'Authorization' = "user_token $jetonUtilisateur"
    'App-Token'     = $jetonApplication
}

## Fonction pour initialiser la session
function Initialize-GlpiSession {
    $sessionInitialisation = Invoke-RestMethod -Method Get -Uri "$urlGlpiAPI/initSession" -Headers $sessionEntete
    return $sessionInitialisation.session_token
}

## Fonction pour terminer la session
function Close-GlpiSession {
    param($sessionJeton)
    $sessionEntete['Session-Token'] = $sessionJeton
    Invoke-RestMethod -Method Get -Uri "$urlGlpiAPI/killSession" -Headers $sessionEntete
}

# = = = = = = = = = = = = = = = = = 
# Programme principal
# = = = = = = = = = = = = = = = = = 

Clear-Host

try {
    ## Initialiser la session
    $sessionJeton = Initialize-GlpiSession
    $sessionEntete['Session-Token'] = $sessionJeton

    <#
    ## Paramètres de recherche pour les tickets avec solution
    $searchCriteria = @{
        criteria = @(
            @{
                link = 'AND'
                field = 'status'
                searchtype = 'equals'
                value = 5  # Status solved
            },
            @{
                link = 'AND'
                field = 'solutiontypes_id'
                searchtype = 'isnotempty'
            }
        )
        forcedisplay = @(1, 2, 12, 15, 17, 19)  # ID, titre, statut, date création, solution, date solution
        range = "0-100"  # Limiter à 100 résultats
    }

    ## Convertir les critères en JSON
    $searchJson = $searchCriteria | ConvertTo-Json -Depth 10
    #>

    ## Faire l'appel API pour rechercher les tickets
    $elementListe = Invoke-RestMethod -Method Get `
                                      -Uri "$urlGlpiAPI/$GlpiElement" `
                                      -Headers $sessionEntete `
                                      -ContentType 'application/json'
                                      #-Body $searchJson

    ## Traiter et afficher les résultats
    # $elementListe

    ## Traiter et afficher les résultats
    $elementListeEnForme = $elementListe | ForEach-Object {
        [PSCustomObject]@{
            ID                    = $_.id
            Nom                   = $_.name
            "Numéro de série"     = $_.serial
            "Dernier utilisateur" = $_.contact
            Commentaire           = $_.comment
            }
        }

    ## Afficher les résultats
    $elementListeEnForme | Format-Table -AutoSize
    #$elementListeEnForme | fl

    ## Exporter en CSV si nécessaire
    # $formattedTickets | Export-Csv -Path "tickets_resolus.csv" -NoTypeInformation -Encoding UTF8

} catch {
    Write-Host "Erreur : $_" -ForegroundColor Red
} finally {
    ## Fermer la session dans tous les cas
    if ($sessionJeton) {
        #Close-GlpiSession -sessionToken $sessionJeton
    }
}

Voir aussi