Bonjour,
Est-il possible de faire en sorte qu'en cliquant sur lien dans un mail qu'on reçoit (bien sur le mail est envoyé par moi) un script PowerShell est exécuté sur un serveur donné ?
Version imprimable
Bonjour,
Est-il possible de faire en sorte qu'en cliquant sur lien dans un mail qu'on reçoit (bien sur le mail est envoyé par moi) un script PowerShell est exécuté sur un serveur donné ?
Surement.
La théorie
Dans le principe, le clique sur le lien doit réaliser une action (notification).
Le serveur doit intercepter la notification et réaliser l'action que tu as définis (lancer le script).
Il dois y avoir 50 façon de le faire, le mieux est de s'adapter à ce que le serveur propose déjà comme service (API REST, partage de fichier...)
La tu va avoir un peu d'ingénierie.
Justement je suis à court d'idées et je cherche une étincelle.
Voici une bonne idée, écouter sur un port spécifique du protocole HTTP (dans le script, interface localhost pour le test)
Tu lance le script et dans ton navigateur tu tape http://localhost:9999/blabliblou
J'espère t'avoir donner l'étincelle.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 $HttpListener = New-Object System.Net.HttpListener # Définit l'url d'écoute # Utiliser + pour écouter sur toutes les interfaces (au lieu de localhost) (nécessite les droits admin) $HttpListener.Prefixes.Add('http://localhost:9999/') $HttpListener.Start() While ($HttpListener.IsListening) { $HttpContext = $HttpListener.GetContext() $HttpRequest = $HttpContext.Request $RequestUrl = $HttpRequest.Url.OriginalString Write-Output "$RequestUrl" #if($HttpRequest.HasEntityBody) { # $Reader = New-Object System.IO.StreamReader($HttpRequest.InputStream) # Write-Output $Reader.ReadToEnd() #} $HttpResponse = $HttpContext.Response $HttpResponse.Headers.Add("Content-Type","text/plain") $HttpResponse.StatusCode = 200 $ResponseBuffer = [System.Text.Encoding]::UTF8.GetBytes("La demande est prise en compte sur le serveur`nURL : $RequestUrl") $HttpResponse.ContentLength64 = $ResponseBuffer.Length $HttpResponse.OutputStream.Write($ResponseBuffer,0,$ResponseBuffer.Length) $HttpResponse.Close() # Exécution de ton script. Ne dois pas bloquer le thread si plusieurs exécution en parallèle sont nécessaire # .... Write-Output "" } $HttpListener.Stop()