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 :
- Jean-Christophe Pirmolin, sur Linkedin :
- https://www.linkedin.com/in/jean-christophe-pirmolin/
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
}
}