Executer des scripts powershell sous html- HELP

Fermé
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019 - 16 janv. 2019 à 10:58
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019 - 17 janv. 2019 à 09:04
Bonjour, 

Je dois créer une page intranet pour mes collègues d'entreprise qui regrouperait les informations de leur pc propre.

Je m'explique : pour les interventions techniques, je dois dans le centre logiciel avoir une page intranet sous html qui retranscrit des informations spécifique d'un post en temps réel (voir screen du centre logiciel) du coup dans chaque PC (grâce à SCCM) il y aura le lien du code qui sera retranscrit sur le centre logiciel.
Pour réalisé ceci, j'ai d'abord créé des scripts sous PowerShell pour récupérer les informations, puis, j'ai codé en html la page web

Maintenant que c'est fait, je souhaiterai intégrer mes scripts dans mon code, c'est-à-dire : le script est exécuter par le html qui retranscrit l'info sur la page web (dans un tableau très exactement). 
Cependant, je ne trouve pas comment intégrer mon script. J'ai lu quelques idées avec les commandes "exec","pcntl_exec","passthru" ou encore "system", mais je ne comprends pas comment les intégrer etc. 

SACHANT QUE : je dois utilisé uniquement des outils déjà installer avec l'os win10. Le centre logiciel n'affiche QUE des pages HTML, et le temps de chargement doit être rapide voir nul (pas de demande de connexion ou autres). 

Voici le centre logiciel (à la place de la page Google il y aura mon html) : 



Voici l'un de mes scripts (il y en a 8 en tout) :



Voici mon code html - Je souhaiterai ajouter le script à la place des "____" qui sont en jaunes. :


Voici le site - Et donc à la place des "____" je souhaiterai avoir le résultat du script PowerShell :



Et voici ce que m'affiche les résultats trouvés... :
 


Auriez-vous des tutoriels, idées ou conseils à me donner ? Ou une autre façon de le faire autre que html, ou encore php. Voir un exemple de code directement (ce qui m'aiderai beaucoup car je suis novice en code)... OU BIEN est ce que je peux récupérer ses informations et les retranscrire uniquement avec HTML (sans passer par PowerShell) ?  

Je vous remercie d'avance et n'hésiter pas à me poser des questions 
Je m'excuse par avance si je ne suis pas dans le bon forum.

3 réponses

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 16 janv. 2019 à 14:45
Salut allybrbs,

Comme tes fichiers html semblent déjà faits, tu pourrais y insérer des marqueurs à la place des informations à afficher, et utiliser Powershell pour remplacer les marqueurs par les informations que tu veux y mettre et t'en servir comme modèles. Tu te sers ainsi de tes fichiers html comme de templates, pour générer les fichiers html remplis des informations souhaitées.

Par exemple, disons que le fichier
template-infos.html
contient un
<div>
devant comporter le nom de la machine. Tu mets
zzzNOMMACHINEzzz
à l'endroit où celui-ci doit apparaître.

Ensuite, dans ton script Powershell où tu détermines le nom de la machine que tu mets dans une variable nommée, par exemple,
$nommachine
, tu fais quelque chose comme :

cat template-infos.html | %{$_ -replace "zzzNOMMACHINEzzz",$nommachine} > infos.html

(non testé, je ne suis pas sous Windows)

et tu as créé un fichier
infos.html
pouvant être affiché par un navigateur ou un interpréteur html, intégrant les informations en dur dans cette page statique, et cela à partir de
template-infos.html
.

C'est juste une idée.. pour faire ce que tu veux à partir de ce que tu sembles avoir déjà fait.

Dal
2
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019
16 janv. 2019 à 15:14
Tout d'abord merci beaucoup, ton idée est superbe !

Cependant, j'ai testé et rien ne ressort, je m'explique : dans mon html j'ai intégré "nom" à la place des "____"
Puis dans un script PowerShell j'ai fait la ligne suivante : cat web.html | %{$_ -replace "Nom",$nommachine} > web.html
(je n'ai pas de infos.html car je ne vois pas quoi mettre dedans.. alors j'ai remis mon html de base qui est web.html) et ensuite une fois que je lance la page, cela m'affiche "Nom" et rien d'autres...
Et plus quand je lance le script PowerShell, cela ne fait rien, et n'affiche aucun nom.
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 16 janv. 2019 à 16:34
Mon idée est, à la base, la même que celle de jordane45. C'est ton script Powershell qui produit le html souhaité, sauf que ce que je te propose c'est de réutiliser tes fichiers existants pour en faire des modèles.

ok, supposons que tu aies un fichier
template-info.html
, qui contienne ceci :

<!doctype html>
<html lang=fr>
<head>
<meta charset=utf-8>
<title>Infos</title>
</head><body>
<div class="row">
<div class="cell">NOM de la machine</div>
<div class="cell">zzzNOMMACHINEzzz</div>
</div>
</body>
</html>

et un script Powershell dans le même répertoire contenant ceci :

$nommachine = 'Allybrbs'
cat template-infos.html | %{$_ -replace "zzzNOMMACHINEzzz",$nommachine} > infos.html

l'exécution du script Powershell devrait produire un fichier
infos.html
dans le même répertoire contenant :

<!doctype html>
<html lang=fr>
<head>
<meta charset=utf-8>
<title>Infos</title>
</head><body>
<div class="row">
<div class="cell">NOM de la machine</div>
<div class="cell">Allybrbs</div>
</div>
</body>
</html>

Tu auras donc deux fichiers. Un fichier
template-info.html
contenant ton modèle intact et un fichier
infos.html
qui est le fichier distinct produit à partir du premier contenant les informations en dur.

Je te donne un exemple, avec des noms pris comme exemples, et un nom de machine prédéterminé, à toi de l'adapter à ton code.

Plusieurs remarques :
  • cat template-infos.html
    lit le contenu du fichier
    template-infos.html
    dans le répertoire courant et l'envoie vers la sortie standard - ce fichier doit donc exister
  • |
    redirige la sortie standard vers la commande chaînée qui suit
  • %{$_ -replace "zzzNOMMACHINEzzz",$nommachine}
    recherche toutes les occurrences de
    zzzNOMMACHINEzzz
    et les remplace par le contenu de la variable
    $nommachine
    - la recherche est sensible à la casse ("nom" est différent de "Nom"), vu que tu remplaces toutes les occurrences, il faut utiliser un marqueur consistant en une chaîne qui ne sera pas utilisée par accident ailleurs
  •  > infos.html
    crée un nouveau fichier dans le répertoire courant dénommé
    infos.html
    contenant le résultat - tu ne peux pas mettre le même nom de fichier, de plus tu auras besoin du template d'origine si tu veux regénérer le fichier parce que telle ou telle caractéristique de la machine a pu changer


Tu peux voir le code en action sur ce Try It Online simulant la lecture du fichier avec un echo et sans la partie d'écriture du fichier (le résultat est juste en output, compte tenu des limitations de l'interpréteur en ligne).

Je ne suis pas un expert de Powershell et il y a sans doutes des façons différentes et tirant d'avantage partie de ses possibilités, ou plus orthodoxes (là j'ai mélangé des commandes accessibles en batch classique avec du Powershell). Les commentaires d'autres contributeurs sont les bienvenus.

De plus, étant sous Linux, mes moyens de tester mes propres suggestions sont limités :-)

Bonne chance dans ton projet !
1
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 16 janv. 2019 à 17:03
Ces procédés génèrent de l'information statique, le contenu du fichier html ne changeant pas lorsque les caractéristiques de la machine changent, à moins de générer de nouveau des fichiers html à partir des modèles.

Tu devrais t'intéresser au lien donné par jordane45, si tu veux lier du html sous forme de fichier .hta à l'exécution de Powershell.

Je ne suis pas familier de ces technologies Microsoft, mais cet article explique comment faire cela en passant par du code VBScript. Tu devrais probablement creuser la question, car cela pourrait te permettre de faire une vraie page dynamique, dont le contenu affiché changerait si les caractéristiques de la machine ont changé.

lien de jordane45 : https://social.technet.microsoft.com/wiki/contents/articles/2166.how-to-add-a-graphical-user-interface-to-a-powershell-script-by-using-html-applications.aspx
0
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019
17 janv. 2019 à 09:04
Bonjour,

C'est justement le but... Sur chaque pc l'info est différente (logique) donc il faudrait que le fichier change également, du coup si avec ta technique cela ne change pas, malheureusement ça ne m'aidera pas..

Oui, je travaille deja sur le lien de jordane.

Encore merci pour ton idée, que je vais garder en stock car elle est très bonne ! :)
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 janv. 2019 à 11:32
Bonjour,

Déjà... le html n'exécute aucun script ...
Le html est un langage de description (pas de programmation) permettant d'indiquer à un navigateur internet comment est structuré le contenu à afficher.

Ensuite, je vois que dans ton code tu as du PHP.
Là.. il faut savoir que le php s'exécute côté SERVEUR et pas côté poste utilisateur.

Pour ce qui est de récupérer directement les informations du poste utilisateur... aucune page web, pour des raisons de sécurité évidentes..., ne peut le faire !

Ce que j'ai du mal à comprendre.. c'est que tu veuilles "récupérer" les infos lorsque l'utilisateur ira sur la page .. c'est bien ça ??
Dans la logique, pour une gestion de parc, les scripts de récupération d'info (comme ceux que tu as écris en powershell) sont exécutés automatiquement sur tous les postes utilisateur (via une GPAO -> active directory) ou à la limité en effectuant ce lancement au démarrage de l'ordinateur.
Ces informations sont ensuite centralisées dans une base de données
De là.. tu peux récupérer les infos (en php par exemple) et les afficher dans ta page web .
Mais quand je vois l'exemple de résultat retourné.. j'ai l'impression que le php n'est pas interprété...
Tes pages web.. sont hébergées en local sur l'ordi de l'utilisateur.. ou sur un serveur ? serveur sur lequel un apache/php a été installé et est en fonctionnement ??

bref... beaucoup d'incohérences dans ta demande, et certainement dans tes recherches/tests ...

Merci de clarifier au mieux :
- Les besoins
- Les contraintes
- L'environnement ( OS... serveur web..., emplacement des fichiers..... etc ...)


0
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019
Modifié le 16 janv. 2019 à 11:45
Bonjour Jordane45,

Et bien je pense que les besoins contraintes etc sont bien défini : je dois créer une page web sous html qui affiche (dans mon tableau) des informations techniques d'une machine pour les équipes d'intervention. cette page sera ensuite afficher dans le centre logiciel (qui n'affiche que des pages html). je dois uniquement utilisé du matériel qui est déjà de base sur le pc sous win10 (donc pas de logiciel ou autres et certains pc sont en win7) et l'emplacement des fichiers sera sur chaque machines grâce à SCCM comme je l'ai dis précédemment.
Je ne vois pas ce que je devrais rajouter, tout a déjà été dit..

Pourtant toutes les pages web, récupères les infos de nos pc, toutes sans exceptions. Si d'autres peuvent le faire, je dois pouvoir le faire aussi.. Surtout que ici, ce sont des employés donc il n'y a aucuns souci de sécurité, c'est seulement des informations randoms comme le nom de la machine, l'adresse ip, capacités des disques etc.

Je ne vois pas ce que tu ne comprends pas.. Lors que l'utilisateur se rendra dans le centre logiciel, toutes les infos seront regroupées, qu'est ce qui n'est pas clair ???

Encore une fois, il n'y a pas de serveur, car c'est une page en local sur chaque pc via le SCCM.
Si il n'y a pas de BDD je vois pas comment je peux utilisé ta technique, surtout que je dois restée sur le principe d'une page intranet.

Je crois que tu as dû mal lire mon tropic parce que la plus part des choses que tu demandes son déjà données ou spécifiées.

Merci de me donner ta solution concrète si tu en as une, car pour l'instant je ne comprends pas où tu veux en venir malheureusement...
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019
16 janv. 2019 à 12:17
Donc...

Encore une fois, il n'y a pas de serveur, car c'est une page en local sur chaque pc via le SCCM.
Si il n'y a pas de BDD je vois pas comment je peux utilisé ta technique, surtout que je dois restée sur le principe d'une page intranet.

Donc tu ne peux pas faire tourner de langage tel que le php (comme dans les exemples que tu as testé ).

Sachant que juste avant tu as indiqué

avoir une page intranet

Regarde ce que intranet signifie...

Je crois que tu as dû mal lire mon tropic parce que la plus part des choses que tu demandes son déjà données ou spécifiées.

Tu peux comprendre ma mauvaise compréhension vu les erreurs que tu as introduit dans ton explication..
Sans parler des exemples que tu as testé contenant du php...



Pourtant toutes les pages web, récupères les infos de nos pc, toutes sans exceptions. Si d'autres peuvent le faire, je dois pouvoir le faire aussi..

Les pages web .. lesquelles ???


Mais vu que les fichiers html seront placés directement sur le poste de l'utilisateur...
Ne crois tu pas que tu prends le problème à l'envers...
Je pense que ce sont les scripts qui créént les fichier html ... et pas le html qui "appelle" les scripts....
0
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
16 janv. 2019 à 12:28
Mais justement, je n'utilise PAS de serveur vue que la page sera stock au niveau de SCCM, donc je vois pas où est le problème. Je sais ce que signifie intranet, et j'en ai une ! je ne suis pas bête non plus, merci.

Certes il y a des erreurs, c'est normal c'est pour ça que je suis ici, mais toutes les infos avaient déjà été donné...

Quand je dis toutes les pages web, c'est toutes. n'importe quel site.

Je n'en sert rien, je ne connais pas, je demande de l'aide, donc je ne sais pas.
Je n'ai jamais créer de html avec du PowerShell, je ne savais pas que c'était possible et je t'avoue que j'ai du mal à l'imaginer..
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019
16 janv. 2019 à 12:32
Donc NON toutes les pages web ne récupèrent pas des infos de ton ordi.... loin de la
Elle peuvent connaitre
Le navigateur / os utilisé (via du Javascript par exemple )
L'adresse ip PUBLIQUE (ça c'est côté langage serveur.. comme en php )
Et c'est tout...
pas d'adresse mac
Pas la taille de tes disques
Pas la consomation cpu / ram ... ou toute autre information de ce genre....



Je n'ai jamais créer de html avec du PowerShell, je ne savais pas que c'était possible et je t'avoue que j'ai du mal à l'imaginer..

Un fichier html n'est rien d'autre qu'un fichier text écrit d'une certaine façon..
Donc on peut créer des fichiers text en powershell sans souci...

mais bon.. regarde le lien que je t'ai donné pour les hta.
Ca pourrait résoudre ton souci.
0
allybrbs Messages postés 6 Date d'inscription mercredi 16 janvier 2019 Statut Membre Dernière intervention 17 janvier 2019 > jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024
16 janv. 2019 à 13:10
Sur ce point je ne suis absolument pas d'accord, mais ce n'est pas le sujet là.

Je SAIS ce qu'un html, j'ai dis que je ne savais pas que c'était possible d'en faire un en PowerShell. Tu sais, j'ai des compétences de bases et je sais des choses, donc tu n'es pas obligé de me faire passé pour une bê-bête.

Merci pour le lien.
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 janv. 2019 à 12:26
0