<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Scripts &#8211; Charly&#039;s Home</title>
	<atom:link href="https://charlytissot.me/category/scripts/feed/" rel="self" type="application/rss+xml" />
	<link>https://charlytissot.me</link>
	<description></description>
	<lastBuildDate>Tue, 06 May 2025 18:51:52 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.5</generator>
	<item>
		<title>Automatiser GLPI avec PowerShell : Guide Complet (avec Scripts)</title>
		<link>https://charlytissot.me/automatiser-glpi-avec-powershell-guide-complet-avec-scripts/</link>
					<comments>https://charlytissot.me/automatiser-glpi-avec-powershell-guide-complet-avec-scripts/#respond</comments>
		
		<dc:creator><![CDATA[charly]]></dc:creator>
		<pubDate>Mon, 05 May 2025 08:22:43 +0000</pubDate>
				<category><![CDATA[Scripts]]></category>
		<guid isPermaLink="false">https://charlytissot.me/?p=434</guid>

					<description><![CDATA[Introduction GLPI (Gestionnaire Libre de Parc Informatique) est un outil ITSM très populaire dans les entreprises pour gérer le parc informatique, les tickets, et bien plus. Grâce à son API REST, il est possible d’interagir automatiquement avec GLPI depuis d’autres systèmes, comme PowerShell. Dans ce guide, vous apprendrez à automatiser des tâches simples avec GLPI [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p></p>



<h2 class="wp-block-heading">Introduction</h2>



<p>GLPI (Gestionnaire Libre de Parc Informatique) est un outil ITSM très populaire dans les entreprises pour gérer le parc informatique, les tickets, et bien plus. Grâce à son <strong>API REST</strong>, il est possible d’interagir automatiquement avec GLPI depuis d’autres systèmes, comme PowerShell.</p>



<p>Dans ce guide, vous apprendrez à automatiser des tâches simples avec GLPI et PowerShell. Chaque exemple est expliqué pas à pas, avec les scripts complets.</p>



<h2 class="wp-block-heading">Prérequis</h2>



<p>Avant de commencer :</p>



<ol start="1" class="wp-block-list">
<li><strong>GLPI configuré avec l’API activée</strong></li>



<li><strong>Un App Token et un User Token</strong> (générés dans GLPI)</li>



<li>PowerShell installé (Windows 10+ ou Windows Server)</li>



<li>Si besoin, le module <code>ActiveDirectory</code> si vous utilisez l’AD</li>
</ol>



<h2 class="wp-block-heading">1. Initialiser la connexion à l’API GLPI</h2>



<p>Avant chaque script, il faut créer une session d’API pour s’authentifier.</p>



<pre class="wp-block-code"><code># Configuration
$AppToken = "VOTRE_APP_TOKEN"
$UserToken = "VOTRE_USER_TOKEN"
$AppURL = "https://votre-glpi.fr/apirest.php"

# Headers d'authentification
$Headers = @{
    "App-Token"  = $AppToken
    "Authorization" = "user_token $UserToken"
}

# Initier la session
$InitSession = Invoke-RestMethod -Uri "$AppURL/initSession" -Method GET -Headers $Headers
$SessionToken = $InitSession.session_token

# Ajouter le token de session aux entêtes
$Headers&#91;"Session-Token"] = $SessionToken</code></pre>



<h2 class="wp-block-heading">2. Synchroniser la description des ordinateurs depuis Active Directory</h2>



<h3 class="wp-block-heading">Objectif :</h3>



<p>Mettre à jour la fiche des ordinateurs GLPI avec la description présente dans Active Directory.</p>



<h3 class="wp-block-heading">Script :</h3>



<pre class="wp-block-code"><code>Import-Module ActiveDirectory

# Lister les ordinateurs AD
$Computers = Get-ADComputer -Filter * -Property Name, Description

foreach ($Computer in $Computers) {
    $GLPIName = $Computer.Name
    $Description = $Computer.Description

    # Chercher la machine dans GLPI
    $Search = Invoke-RestMethod -Uri "$AppURL/Computer/?searchText=$GLPIName" -Method GET -Headers $Headers

    if ($Search.Count -gt 0) {
        $ComputerID = $Search&#91;0].id

        # Mise à jour de la description
        $UpdateData = @{
            input = @{
                id = $ComputerID
                comment = $Description
            }
        } | ConvertTo-Json -Depth 3

        Invoke-RestMethod -Uri "$AppURL/Computer/$ComputerID" -Method PUT -Headers $Headers -Body $UpdateData -ContentType "application/json"
        Write-Host "Mise à jour : $GLPIName"
    }
}</code></pre>



<h2 class="wp-block-heading">3. Créer un ticket automatiquement depuis un outil de supervision</h2>



<h3 class="wp-block-heading">Objectif :</h3>



<p>Créer un ticket GLPI automatiquement dès qu&rsquo;une alerte est détectée.</p>



<h3 class="wp-block-heading">Script :</h3>



<pre class="wp-block-code"><code># === Données venant de la supervision ===
$NomServeur = "SRV-01"
$TagClient = "ClientX"   # Le tag/nom de l'entité GLPI
$RequestTypeID = 5        # ID du type de demande 'Supervision' dans GLPI

# === Récupérer l'ID de l'entité GLPI en fonction du nom ===
$EntitySearch = Invoke-RestMethod -Uri "$AppURL/Entity?searchText=$TagClient" -Method GET -Headers $Headers

if ($EntitySearch.Count -eq 0) {
    Write-Error "Entité '$TagClient' introuvable dans GLPI."
    exit
}

$EntityID = $EntitySearch&#91;0].id  # On prend le premier résultat correspondant

# === Création du ticket dans l'entité trouvée avec source Supervision ===
$TicketData = @{
    input = @{
        name = "Alerte serveur - $NomServeur"
        content = "Le serveur $NomServeur a déclenché une alerte critique. (Client : $TagClient)"
        urgency = 3
        impact = 2
        priority = 4
        status = 1
        type = 1
        requesttypes_id = $RequestTypeID  # Source : Supervision
        entities_id = $EntityID
    }
} | ConvertTo-Json -Depth 3

Invoke-RestMethod -Uri "$AppURL/Ticket" -Method POST -Headers $Headers -Body $TicketData -ContentType "application/json"

# === Fermer la session ===
Invoke-RestMethod -Uri "$AppURL/killSession" -Method GET -Headers $Headers</code></pre>



<h2 class="wp-block-heading">4. Lister les tickets ouverts d’un utilisateur</h2>



<h3 class="wp-block-heading">Objectif :</h3>



<p>Afficher tous les tickets non résolus d&rsquo;un utilisateur précis.</p>



<h3 class="wp-block-heading">Script :</h3>



<pre class="wp-block-code"><code>$UserID = 123  # Remplacez par l'ID utilisateur GLPI

$Response = Invoke-RestMethod -Uri "$AppURL/Ticket?criteria&#91;0]&#91;field]=users_id_recipient&amp;criteria&#91;0]&#91;value]=$UserID&amp;criteria&#91;1]&#91;link]=AND&amp;criteria&#91;1]&#91;field]=status&amp;criteria&#91;1]&#91;searchtype]=notcontains&amp;criteria&#91;1]&#91;value]=closed" -Method GET -Headers $Headers

foreach ($Ticket in $Response) {
    Write-Host "Ticket: $($Ticket.id) - $($Ticket.name)"
}</code></pre>



<h2 class="wp-block-heading">5. Affecter automatiquement un ticket à un technicien selon la catégorie</h2>



<h3 class="wp-block-heading">Objectif :</h3>



<p>Affecter le ticket à la bonne personne selon son type.</p>



<h3 class="wp-block-heading">Script :</h3>



<pre class="wp-block-code"><code>$TicketID = 456      # ID du ticket
$TechnicianID = 78   # ID GLPI du technicien

$AssignData = @{
    input = @{
        id = $TicketID
        users_id_assign = $TechnicianID
    }
} | ConvertTo-Json -Depth 3

Invoke-RestMethod -Uri "$AppURL/Ticket/$TicketID" -Method PUT -Headers $Headers -Body $AssignData -ContentType "application/json"</code></pre>



<h2 class="wp-block-heading">6. Créer une fiche ordinateur automatiquement via un script</h2>



<h3 class="wp-block-heading">Objectif :</h3>



<p>Ajouter une nouvelle fiche ordinateur dans GLPI quand une nouvelle machine est déployée.</p>



<h3 class="wp-block-heading">Script :</h3>



<pre class="wp-block-code"><code>$NomMachine = "PC-NEW01"
$SerialNumber = "SN12345678"

$ComputerData = @{
    input = @{
        name = $NomMachine
        serial = $SerialNumber
        comment = "Ajout automatique via PowerShell"
        entities_id = 0
    }
} | ConvertTo-Json -Depth 3

Invoke-RestMethod -Uri "$AppURL/Computer" -Method POST -Headers $Headers -Body $ComputerData -ContentType "application/json"</code></pre>



<h2 class="wp-block-heading">7. Fermer la session GLPI</h2>



<p>Toujours penser à fermer proprement la session à la fin d’un script :</p>



<pre class="wp-block-code"><code>Invoke-RestMethod -Uri "$AppURL/killSession" -Method GET -Headers $Headers</code></pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Avec ces exemples simples, vous avez toutes les bases pour automatiser GLPI avec PowerShell. Vous pouvez aller plus loin en ajoutant :</p>



<ul class="wp-block-list">
<li>Des logs d’exécution</li>



<li>Des interfaces Web internes</li>



<li>Des automatisations planifiées</li>
</ul>



<p>N’hésitez pas à adapter ces scripts à vos besoins réels. C’est un excellent point de départ pour industrialiser vos opérations IT.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://charlytissot.me/automatiser-glpi-avec-powershell-guide-complet-avec-scripts/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
