« GLPI/Configuration/Générale/API/Exemple 2 » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « {{Sommaire}} Exemple de script PowerShell d'utilisation de l'API GLPI. Source : * Jean-Christophe Pirmolin, sur Linkedin : * https://www.linkedin.com/in/jean-christophe-pirmolin/ ** https://www.linkedin.com/pulse/use-powershell-manipulate-glpi-jean-christophe-pirmolin/ Autre source identique : * https://github.com/SilentBob999/PSGLPI/tree/master == Exemple == <source> # Paramètres de connexion à GLPI $AppURL = "http://php100/glpi/apirest.php"... ») |
|||
| (5 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 11 : | Ligne 11 : | ||
* https://github.com/SilentBob999/PSGLPI/tree/master | * https://github.com/SilentBob999/PSGLPI/tree/master | ||
== Exemple == | == Exemple 1, PowerShell== | ||
<source> | <source> | ||
# Paramètres de connexion à GLPI | # Paramètres de connexion à GLPI | ||
| Ligne 26 : | Ligne 26 : | ||
$SearchResult | Format-Table -AutoSize | $SearchResult | Format-Table -AutoSize | ||
</source> | |||
== Exemple 2, PowerShell== | |||
<source lang="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 | |||
} | |||
} | |||
</source> | </source> | ||
Dernière version du 5 février 2025 à 22:10
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
}
}