IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Comment exécuter un script PowerShell via un php - HELP


Sujet :

Scripts/Batch

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut Comment exécuter un script PowerShell via un php - HELP
    Bonjour,

    Pour vous résumer ma situation, je suis étudiante de 2e année en BTS Service informatique aux organisations, option réseaux. Je suis actuellement en stage dans un grand hôpital et ma mission est de créer, une page intranet pour les salariés de l'hôpital qui regrouperait les informations de leur pc propre.
    Pour ce faire, je me suis dirigée vers le PowerShell. Mon script étant terminé, je souhaite maintenant l'ajouter dans un fichier html/php pour la création de la page web.
    Cependant, mes connaissances en programmation sont restreintes et je ne trouve pas comment intégrer mon script.

    Auriez-vous des tutoriels, idées ou conseils à me donner ?
    Je vous remercie d'avance et n'hésiter pas à me poser des questions !

    Voici l'un de mes scripts (il y en a 8 en tout) :
    Nom : cap.PNG
Affichages : 1862
Taille : 6,3 Ko


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


    Nom : ca.PNG
Affichages : 1995
Taille : 4,6 Ko

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

    Nom : capt.PNG
Affichages : 1914
Taille : 14,1 Ko



    J'ai trouvé quelques idées sur le web, mais je ne comprends pas comment les intégrer dans mon code...
    Merci d'avance à tous !

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Salut,

    J'ai déjà fait ce genre de chose en PHP/POSH.
    Faut se lever tôt mais c'est faisable.
    Un point avant d'aller plus loin:
    Le PHP s'exécute côté serveur, cela veut dire que tes scripts seront exécutés sur ton serveur PHP.
    Autrement dit, si ça fonctionne tu donneras les infos de ton serveur à tes utilisateurs, mais pas l'inverse Le résultat sera le même à chaque fois.

    Ce que je peux te conseiller, en tant qu'admin sys moi aussi, c'est de plutôt te diriger vers un GLPI, plus pratique, et avec l'agent OCS tu pourras inventorier les PCs.
    Il existe une liaison LDAP, de fait les utilisateurs pourraient se loguer sur le site intranet du GLPI et avoir accès aux infos de leur PC.

    Cela étant dit, si tu veux passer par du code côté client, tu pourras...par Powershell
    Le plus simple serait d'utiliser POSH pour interroger les PCs et relever les infos pour enfin les inscrire dans une BDD. De cette façon tu affranchis les utilisateurs d'une partie des infos.
    Par contre, sur ton formulaire PHP, tu ne peux rien trouver depuis le navigateur...il faudra au minimum demander le nom du PC, valider le formulaire et renvoyer sur une autre page qui va piocher dans ta BDD (ça peut être un simple CSV) afin d'afficher les infos correspondantes au PC.

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Bonjour,

    Merci de ta réponse tout d'abord.
    Oui c'est exact, c'est le serveur qui donne les informations à l'utilisateur.

    Tes infos sont très pratique, mais comme je l'ai déjà expliquer, je dois faire ceci en code pure et PowerShell. J'ai déjà fait mon code html et mes scripts PowerShell, il ne me manque plu qu'à exécuter mes scripts via le code html. Je ne souhaite pas utilisé GLPI ou LDAP.
    Le but étant que les agents techniques puissent accéder rapidement à ces informations là sans avoir de connexion, clique etc à faire mais seulement en ouvrant un centre logiciel.
    Je suis dans un hôpital du coup, je peux pas faire comme bon me semble. Il faut que la page intranet soit afficher dans ce qu'on appel un "centre logiciel", du coup dans chaque PC (grace à SCCM) il y aura le lien du code qui sera retranscrit sur le centre logiciel.

    Voici un screen, où à la place de l'adresse de Google se trouvera mon code :
    Nom : Capture.PNG
Affichages : 1872
Taille : 49,9 Ko

    Du coup je pense malheureusement que ta réponse ne m'aide pas....

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Aaaaaah mais c'est qu'on avait pas toutes les infos

    Du coup, si SCCM et possibilité d'avoir du code en local, pas vraiment besoin de PHP, une simple mise en forme HTML suffira.
    Le plus simple est de créer un mainscript.ps1 qui ira chercher tes autres scripts, et récupérera les informations dans une variable pour chacun.
    Ex:
    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ComputerName = $env:Computername # (oui d'ailleurs pas besoin de WMI si le code est exécuté en local, tu peux même te passer de la var $computername et juste utiliser la var environnement)
    $Domain = $env:USERDOMAIN
    $OSVersion = ....
     
    $FormatHTML = write-output @"
    <HTML>
    $($ComputerName)
    $($Domain)
    $($OSVersion)
    </HTML>
    "@
     
    $FormatHTML

    Si ça peut t'être utile

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Bah techniquement y'avait toutes les infos.

    MAIS, c'est ultra compliqué ton truc. Tu veux que je créer encore un script pour lancer mes scripts... Moi j'ai déjà mon code html et mes scripts PowerShell, je veux juste exécuter mes scripts grâce au code html...
    Et je comprends pas ton code, c'est quoi du .html ou .ps1 ??
    J'ai plus de facilité avec le wmi que j'ai déjà vue en cours donc c'est pour ça.

  6. #6
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Bah techniquement y'avait toutes les infos.
    Nope, pas souvenir d'avoir entendu parler du SCCM ni du "Centre Logiciel" Ce qui change la donne.

    MAIS, c'est ultra compliqué ton truc. Tu veux que je créer encore un script pour lancer mes scripts... Moi j'ai déjà mon code html et mes scripts PowerShell, je veux juste exécuter mes scripts grâce au code html...
    L'informatique n'est pas une affaire de simplicité
    Tu ne peux pas exécuter des scripts juste avec du HTML, ça n'est pas possible. Le problème d'un navigateur c'est que ça n'a techniquement pas vraiment accès à ton système de fichiers côté client. Donc, il faut feinter.
    Une solution:
    J'ai développer un petit quelque chose qui te permettrait de faire tout ça, cependant il faudrait que ça s'exécute en local sur la machine de la personne, si c'est possible via le centre logiciel alors ça peut fonctionner.
    Powershell-Web-GUI-Builder

    Le .ps1 est le fichier de script powershell. Lorsque tu enregistres ton script Powershell l'extension est .ps1.
    .HTML c'est un fichier HTML, un langage de balisage et non de programmation, avec du contenu statique.

    Une autre solution:
    Je te commente mon script PowerShell, c'est vrai que j'y suis allé en mode velu sans trop d'explication.
    Aussi, voici la démarche:
    1. On récupère avec un script Powershell les infos dont on a besoin sur le PC
    2. On formate les informations avec ton code HTML
    3. On affiche le résultat dans le navigateur



    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    # On récupère les variables que tu souhaites afficher dans ta page HTML.
    # Ajouter toutes les variables dont tu as besoin, en reprenant tes scripts déjà créés si tu veux. Tu peux les appeler en faisant un Invoke-Expression -Command \\chemin\vers\ton\script.ps1 voir exemple ci-après
    $ComputerName = $env:Computername # (oui d'ailleurs pas besoin de WMI si le code est exécuté en local, tu peux même te passer de la var $computername et juste utiliser la var environnement)
    $Domain = $env:USERDOMAIN
    $OSVersion = #....
    $IPetMac= Invoke-Expression -Command "\\chemin\vers\ton\ip et mac.ps1"
     
    # On va réutiliser ton code HTML, un copier/coller ci-dessous, et dans les champs où tu souhaites récupérer les infos, tu places les variables sous format $($variable) afin de l'afficher.
    # Je n'ai mis que les balises de base afin de montrer qu'il s'agit de code balisé qu'il faut utiliser. 
    $FormatHTML = Write-Output @"
    <HTML>
    $($ComputerName)
    $($Domain)
    $($OSVersion)
    </HTML>
    "@
     
    $ExportHTML = "C:\...\resultat.html"
    $FormatHTML | Out-file $ExportHTML -Encoding UTF8 # Affichage du résultat
    Start-Process -Path $ExportHTML

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Je vais voir tout ça alors.
    Je te tiens au courant du résultat bien sur.
    Oui je sais bien que .ps1 c'est PowerShell et .html un langage pour coder.. je sais quand même un minimum dans quoi je m'embarque merci.

  8. #8
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Citation Envoyé par mrtrez Voir le message

    Une autre solution:
    Je te commente mon script PowerShell, c'est vrai que j'y suis allé en mode velu sans trop d'explication.
    Aussi, voici la démarche:
    1. On récupère avec un script Powershell les infos dont on a besoin sur le PC
    2. On formate les informations avec ton code HTML
    3. On affiche le résultat dans le navigateur
    Voila le script... je suppose que j'ai mal fait beaucoup de choses, mais je t'avoue qu'après être bloquer sur ce problème depuis plus d'une semaine.. j'arrive plus à rien
    Nom : Capture.PNG
Affichages : 2014
Taille : 42,8 Ko

  9. #9
    Membre confirmé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2018
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Juin 2018
    Messages : 43
    Par défaut
    Je comprends, c'est normal. Le scripting ça fatigue assez rapidement. Encore plus quand on tourne en rond.

    le chemin de l'Invoke-Command ne doit pas fonctionner avec un chemin comme celui-ci.
    Essaye:
    - Le chemin complet
    - Un chemin relatif de type ".\ipetmax.ps1"

    Je te conseille aussi de tester en mode Debug, ligne par ligne.
    Ca t'évitera de te faire peur avec un roman rouge alors que 90% des erreurs sont liées à un soucis de dépendance aux premières lignes

  10. #10
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2019
    Messages : 11
    Par défaut
    Citation Envoyé par mrtrez Voir le message
    Je comprends, c'est normal. Le scripting ça fatigue assez rapidement. Encore plus quand on tourne en rond.

    le chemin de l'Invoke-Command ne doit pas fonctionner avec un chemin comme celui-ci.
    Essaye:
    - Le chemin complet
    - Un chemin relatif de type ".\ipetmax.ps1"

    Je te conseille aussi de tester en mode Debug, ligne par ligne.
    Ca t'évitera de te faire peur avec un roman rouge alors que 90% des erreurs sont liées à un soucis de dépendance aux premières lignes

    Bonjour,

    j'ai toujours la même erreur avec le chemin de Invoke-Command. J'ai changé par le chemin complet, avec un .\, de changer de place etc, toujours la même erreur, pourtant c'est le bon nom etc..

Discussions similaires

  1. Exécuter un script PowerShell depuis PHP
    Par user007 dans le forum Langage
    Réponses: 7
    Dernier message: 07/04/2014, 16h05
  2. Exécution de script shell via PHP
    Par Sayko dans le forum Langage
    Réponses: 1
    Dernier message: 13/03/2013, 23h17
  3. [MySQL] Comment exécuter des script php sans serveur ?
    Par dalalbay dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 09/08/2012, 18h35
  4. Réponses: 3
    Dernier message: 26/02/2007, 19h19
  5. Comment exécuter une API windows via php ?
    Par mikemead dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 31/03/2006, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo