VIVE LA RÉVOLUTION
Accueil du site > Comment publier un article > Que fait IRM dans Powershell sous Windows ?

Que fait IRM dans Powershell sous Windows ?

mercredi 3 juin 2026, par anonyme (Date de rédaction antérieure : 3 juin 2026).

Que fait irm dans powershell ?
 

Dans PowerShell, irm est l'alias de la commande Invoke-RestMethod.

Cette commande sert à envoyer des requêtes HTTP vers des API web (GET, POST, PUT, DELETE, etc.) et à récupérer automatiquement les données retournées.

Exemple simple

irm https://api.github.com/repos/PowerShell/PowerShell

PowerShell envoie une requête GET à l'URL et convertit automatiquement la réponse JSON en objet PowerShell.

Équivalent complet

Invoke-RestMethod https://api.github.com/repos/PowerShell/PowerShell

Cas d'usage courants

Récupérer des données d'une API :

$meteo = irm "https://wttr.in/Lugano?format=j1"
$meteo.current_condition

Envoyer des données (POST) :

$body = @{
name = "Test"
} | ConvertTo-Json

irm -Uri "https://example.com/api" `
-Method Post `
-Body $body `
-ContentType "application/json"

Différence avec iwr

  • irm (Invoke-RestMethod) : interprète automatiquement les réponses JSON ou XML et renvoie des objets PowerShell.
  • iwr (Invoke-WebRequest) : renvoie davantage d'informations sur la requête/réponse HTTP et est souvent utilisé pour télécharger des fichiers ou analyser du contenu HTML.

Par exemple :

irm https://api.github.com/users/octocat

renvoie directement un objet avec des propriétés comme login, id, etc., alors que :

iwr https://api.github.com/users/octocat

renvoie un objet de réponse HTTP contenant le contenu brut et les métadonnées de la requête.

IRM va donc sur internet ?

Oui. irm (Invoke-RestMethod) effectue une requête réseau vers l'URL que vous lui fournissez.

Par exemple :

irm https://api.github.com

PowerShell se connecte à Internet (ou à un serveur interne si l'URL pointe vers votre réseau local) et récupère la réponse.

Quelques précisions :

  • Si l'URL est publique (https://...), irm utilise Internet.
  • Si l'URL est interne (http://serveur-intranet/...), la requête reste sur votre réseau local.
  • irm peut également télécharger et exécuter du contenu si ce contenu est ensuite transmis à une autre commande.

Par exemple, cette commande souvent vue dans des scripts :

irm https://exemple.com/script.ps1 | iex

fait deux choses :

  1. irm télécharge le contenu du script depuis le site web.
  2. iex (Invoke-Expression) exécute immédiatement ce qui a été téléchargé.

C'est pourquoi les commandes contenant irm (surtout lorsqu'elles sont combinées avec iex) doivent être examinées attentivement avant d'être exécutées.

Dans quel répertoire irm place ce qu'il a téléchargé ?

Par défaut, irm ne place rien dans un répertoire.

Invoke-RestMethod télécharge la réponse en mémoire et la renvoie directement à PowerShell sous forme d'objet ou de texte. Aucun fichier n'est créé automatiquement.

Exemple :

$data = irm https://api.github.com/repos/PowerShell/PowerShell

Les données sont stockées dans la variable $data, pas dans un fichier sur le disque.

Pour enregistrer le contenu dans un fichier

Il faut le faire explicitement :

irm https://example.com/fichier.txt | Out-File .\fichier.txt

ou

(irm https://example.com/fichier.txt) > .\fichier.txt

Le fichier sera alors créé dans le répertoire courant (celui indiqué par Get-Location).

Cas particulier : irm ... | iex

irm https://example.com/script.ps1 | iex

Ici, le script est téléchargé en mémoire puis exécuté immédiatement. En principe, aucun fichier n'est enregistré sur le disque par irm lui-même.

Si vous avez une commande précise contenant irm, je peux l'analyser et vous dire exactement où vont les données et ce qu'elle fait.

Est-ce que « irm https://example.com/ | Out-File .\fichier.txt » fonctionne ?

Oui, cela fonctionne généralement, à condition que la réponse de l'URL soit du texte ou puisse être convertie en texte.

irm https://example.com/ | Out-File .\fichier.txt

Dans cet exemple :

  1. irm télécharge le contenu de la page.
  2. PowerShell convertit le résultat en texte.
  3. Out-File écrit ce texte dans fichier.txt dans le répertoire courant.

Pour une page HTML comme https://example.com/, le fichier contiendra le code HTML de la page.

Attention aux API JSON

Si l'URL renvoie du JSON, irm le convertit automatiquement en objet PowerShell. Dans ce cas, le résultat écrit par Out-File peut ne pas ressembler au JSON d'origine.

Par exemple :

irm https://api.github.com/users/octocat | Out-File .\user.txt

écrira une représentation textuelle de l'objet, pas forcément le JSON brut.

Si vous voulez conserver le JSON tel qu'il a été interprété, utilisez plutôt :

irm https://api.github.com/users/octocat |
ConvertTo-Json -Depth 10 |
Out-File .\user.json

Ou utilisez iwr (Invoke-WebRequest) et enregistrez directement le contenu brut :

(iwr https://api.github.com/users/octocat).Content |
Out-File .\user.json

Donc la commande que vous proposez est valide, mais le résultat dépend du type de contenu renvoyé par l'URL.



Qu'est-ce qu'un json ?

Un JSON (JavaScript Object Notation) est un format texte très utilisé pour échanger des données entre applications, serveurs web et API.

Il représente des données sous forme de paires clé–valeur et de listes.

Exemple simple

{
"nom": "Alice",
"age": 30,
"ville": "Bellinzona"
}

Ici :

  • nom"Alice"
  • age30
  • ville"Bellinzona"

Avec une liste

{
"nom": "Alice",
"langues": ["français", "italien", "anglais"]
}

Pourquoi est-il utilisé ?

Quand une API renvoie des données, elle les envoie souvent en JSON parce que :

  • c'est lisible par les humains ;
  • c'est facile à traiter par les programmes ;
  • il est indépendant du langage de programmation.

Par exemple, une API météo pourrait renvoyer :

{
"temperature": 22,
"conditions": "ensoleillé"
}

Dans PowerShell

Si vous faites :

irm https://api.example.com/meteo

et que l'API renvoie le JSON ci-dessus, PowerShell le transforme automatiquement en objet :

$resultat.temperature

renverra :

22

C'est l'un des avantages de irm : il convertit automatiquement le JSON en objets PowerShell faciles à utiliser.

Vous pouvez aussi convertir un objet PowerShell en JSON avec :

$obj = @{
nom = "Alice"
age = 30
}

$obj | ConvertTo-Json

Résultat :

{
"nom": "Alice",
"age": 30
}

En résumé, le JSON est simplement une façon standardisée de représenter des données structurées sous forme de texte.

Répondre à cet article