À des fins de tests ou comme simple stub lors de la phase de déploiement du service, j'ai régulièrement besoin d'exécuter un simple serveur Web sous Windows. Pour éviter une installation IIS complète, vous pouvez exécuter un simple serveur Web HTTP directement à partir de votre console PowerShell. Vous pouvez exécuter un tel serveur Web sur n'importe quel port TCP à l'aide duSystem.Net.HttpListenerClasse .NET.
Ouvrez votre console PowerShell et créez un écouteur HTTP :
$httpListener = New-Object System.Net.HttpListener
Spécifiez ensuite le port à écouter. Dans cet exemple, je souhaite exécuter un serveur Web HTTP sur le port 9090.
$httpListener.Prefixes.Add("https://localhost:9090/")
- Assurez-vous que ce port n'est pas utilisé par d'autres processus. Vous pouvez savoir quel processus écoute sur un TCP ou un UDP sous Windows.
- Afin d'écouter sur toutes les interfaces réseau, utilisez le
https://+:9090/adresse.
Démarrez l'écouteur :
$httpListener.Start()
Vous pouvez utiliser différents types d'authentification (Basic, Digest, Windows, Négocier ou NTLM) dans votre objet HttpListener ou lier un certificat SSL pour implémenter HTTPS.
Si vous exécutez ce code, un processus distinct en attente de connexion sur le port 9090 apparaît dans Windows. Vérifiez-le à l'aide de la commande :
nestat –na 9090
ou affichez une liste des ports ouverts à l'aide de PowerShell :
Get-NetTCPConnection -State Listen | Select-Object -Property LocalAddress, LocalPort, State | Sort-Object LocalPort |ft


N'oubliez pas d'ouvrir ce port dans le pare-feu Windows Defender. Vous pouvez créer rapidement une règle pour ouvrir un port de pare-feu à l'aide de la commande PowerShell :
New-NetFirewallRule -DisplayName "AllowTestWebServer" -Direction Inbound -Protocol TCP –LocalPort 9090 -Action Allow
Créez maintenant un fichier texte sur votre disque dur avec le HTML que vous souhaitez que votre serveur Web affiche. Par exemple:
<!DOCTYPE html>
<html>
<head>
<title>
Lightweight PowerShell Web Server</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body {background-color:#ffffff;background-repeat:no-repeat;background-position:top left;background-attachment:fixed;}
h1{font-family:Arial, sans-serif;color:#000000;background-color:#ffffff;}
p {font-family:Georgia, serif;font-size:14px;font-style:normal;font-weight:normal;color:#000000;background-color:#ffffff;}
</style>
</head>
<body>
<h1>Test web page </h1>
<p>This web page was generated by PowerShell using the System.Net.HttpListener class</p>
</body>
</html>


J'ai enregistré ce code HTML dans C:\PS\testwebpage.html avec l'encodage UTM-8.
Exécutez ensuite les commandes suivantes pour lire votre fichier HTML et envoyer une réponse au navigateur d'un utilisateur.
$context = $httpListener.GetContext()
$context.Response.StatusCode = 200
$context.Response.ContentType="text/HTML"
$WebContent = Get-Content -Path "C:\PS\testwebpage.html" -Encoding UTF8
$EncodingWebContent = [Text.Encoding]::UTF8.GetBytes($WebContent)
$context.Response.OutputStream.Write($EncodingWebContent , 0, $EncodingWebContent.Length)
$context.Response.Close()


Ouvrez l'adresse URL de votre serveur HTTP dans un navigateur (https://localhost:9090) ou utilisez PowerShell pour obtenir le contenu d'une page Web. Le script renvoie un code HTML une seule fois, après quoi votre écouteur sera automatiquement arrêté (une seule demande utilisateur est traitée).
Plus de lecture :Faits révélés sur le Dark Web : mythes et statistiques sur le Web secret
Libérez le port TCP :
$httpListener.Close()
Si vous souhaitez que le serveur HTTP continue de renvoyer votre page, vous devez ajouter du code PowerShell à la boucle. L'exemple suivant démarre un serveur HTTP dans une boucle qui se termine lorsqu'une touche est enfoncée dans la console PowerShell.
write-host "Press any key to stop the HTTP listener after next request"
while (!([console]::KeyAvailable)) {
$context = $httpListener.GetContext()
$context.Response.StatusCode = 200
$context.Response.ContentType="text/HTML"
$WebContent = Get-Content -Path "C:\PS\testwebpage.html" -Encoding UTF8
$EncodingWebContent = [Text.Encoding]::UTF8.GetBytes($WebContent)
$context.Response.OutputStream.Write($EncodingWebContent , 0, $EncodingWebContent.Length)
$context.Response.Close()
Write-Output "" # Newline
}
$httpListener.Close()
Un serveur HTTP PowerShell reste actif jusqu'à ce que vous fermiez la console PowerShell ou mettiez fin à la session à l'aide de l'outil.Closeméthode.
Vous pouvez exécuter ce script PowerShell en tant que service Windows.
Vous pouvez exécuter un serveur Web aussi léger sur n'importe quel hôte Windows sans Internet Information Services ou autre installation de logiciel tiers. Aucun privilège d'administrateur n'est requis. Vous pouvez utiliser ce HTTPListener comme simple serveur REST ou pour obtenir des informations depuis un ordinateur distant via HTTP.

![Comment installer Windows 11 sur un nouveau SSD sans USB ou DVD [étape par étape]](https://elsefix.com/tech/afton/wp-content/uploads/cache/2025/04/how-to-install-windows-11-on-a-new-ssd-without-usb.webp.webp.webp)












