Info PowerShell

Le
Stephane
Bonjour la foule


Je voudrai avoir des renseignements sur powershell: Gére-t-il les
connexions réseaux ?
Peut on faire une sorte de client/serveur avec ?

@+ Stephane
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques Barathon [MS]
Le #696763
"Stephane" news:ffq0br$tul$
Bonjour la foule


Je voudrai avoir des renseignements sur powershell: Gére-t-il les
connexions réseaux ?


Tu veux dire: PowerShell accepte-t-il des connexions entrantes? Oui, dans la
mesure où des classes .NET supportent cette fonctionnalité. Regarde par
exemple la doc pour System.Net.HttpListener qui permet d'accepter des
requêtes HTTP:

http://msdn2.microsoft.com/fr-fr/library/system.net.httplistener(VS.80).aspx

Mais attention, PowerShell est un langage de script qui ne marche qu'en mode
synchrone, en tout cas dans sa version actuelle. Si tu veux accepter
plusieurs connexions entrantes simultanées il te faudra autant d'instances
de PowerShell.

Il est également possible d'appeler des scripts PowerShell à partir de pages
ASP (ou ASPX) d'un serveur IIS. Je n'ai jamais testé mais il me semble qu'il
existe plusieurs exemples sur Internet.

Peut on faire une sorte de client/serveur avec ?


As-tu un exemple plus précis de ce que tu veux faire?

Jacques

Stephane
Le #696762
As-tu un exemple plus précis de ce que tu veux faire?


Oui :-)))))))))

L'idée c'est qu'un utilisateur me donne le code d'un fournisseur et
qu'en retour je lui renvoie ses stats d'achats quelques minutes après
par mail par exemple.
Actuellement je le fais en PHP et MySQL mais c'est pas du temps réel car
on remonte sur un an et les temps de calcul sont énorme.
Et d'une c'est chiant pour l'utilisateur d'attendre, de 2 le time out
l'éjecte de tout façon.
Y'a des biais détournés pour faire la même chose et ce même en vbscript
mais la notion réseau m'intéresse beaucoup.

Stephane

Jacques Barathon [MS]
Le #696533
"Stephane" news:ffq8od$1qc$
As-tu un exemple plus précis de ce que tu veux faire?


Oui :-)))))))))

L'idée c'est qu'un utilisateur me donne le code d'un fournisseur et qu'en
retour je lui renvoie ses stats d'achats quelques minutes après par mail
par exemple.
Actuellement je le fais en PHP et MySQL mais c'est pas du temps réel car
on remonte sur un an et les temps de calcul sont énorme.


Je suppose que tu as un serveur web (IIS ou Apache) qui sert de frontal à
ton utilisateur et qui exécute les scripts PHP en question.

Sans connaître les détails de ton architecture, il est difficile d'évaluer
pourquoi ta solution actuelle met plusieurs minutes pour récupérer des stats
d'achat à partir d'un code fournisseur, mais j'ai l'impression que tu as un
problème de fond à régler que le passage à une technologie (PowerShell ou
autre) ne réglera pas. A première vue je dirais qu'il suffirait de créer un
index dans ta base SQL pour pouvoir l'interroger en temps réel, mais je le
répète, il est difficile de juger vu de l'extérieur.

Et d'une c'est chiant pour l'utilisateur d'attendre, de 2 le time out
l'éjecte de tout façon.


Pourquoi penses-tu que PowerShell sera plus performant que PHP?

Jacques


Stephane
Le #696532

Sans connaître les détails de ton architecture, il est difficile
d'évaluer pourquoi ta solution actuelle met plusieurs minutes pour
récupérer des stats d'achat à partir d'un code fournisseur,


Parce que la base est énorme et que le nombre de commandes l'est aussi.
De plus, je passe toutes les commandes une par une et les lignes une par
une.

l'impression que tu as un problème de fond à régler que le passage à une
technologie (PowerShell ou autre) ne réglera pas. A première vue je
dirais qu'il suffirait de créer un index dans ta base SQL pour pouvoir


Héhé ben non je peux pas, car ma base MySQl n'est qu'une copie des
tables dont j'ai besoin de la base de notre Gestion qui est sur un
xSeries. Et je fait déjà des calculs en amont pour gagner un peu de
temps avant d'écrire dans MySQL.

Pourquoi penses-tu que PowerShell sera plus performant que PHP?


Plus performant c'est pas ce qui m'intéresse, ce que je veux c'est plus
le mode déconnecté.
Exemple:
Je demande tel fournisseur...
Quand c'est pret le programme me renvoit les stats adéquats par mail.
Et je me redis, la curiosité du programme en réseau compte beaucoup :-))

Stephane

Jacques Barathon [MS]
Le #696531
"Stephane" news:ffs6t3$d81$
...
Parce que la base est énorme et que le nombre de commandes l'est aussi.
De plus, je passe toutes les commandes une par une et les lignes une par
une.


Bah, c'est quoi énorme? La plupart des bases de données en production sont
énormes du point de vue de leur propriétaire.

l'impression que tu as un problème de fond à régler que le passage à une
technologie (PowerShell ou autre) ne réglera pas. A première vue je
dirais qu'il suffirait de créer un index dans ta base SQL pour pouvoir


Héhé ben non je peux pas, car ma base MySQl n'est qu'une copie des tables
dont j'ai besoin de la base de notre Gestion qui est sur un xSeries. Et je
fait déjà des calculs en amont pour gagner un peu de temps avant d'écrire
dans MySQL.


Je ne connais pas bien MySQL mais je ne vois pas en quoi ça empêche la
création d'un index. Mais bref, ce n'est pas grave.

Pourquoi penses-tu que PowerShell sera plus performant que PHP?


Plus performant c'est pas ce qui m'intéresse, ce que je veux c'est plus le
mode déconnecté.
Exemple:
Je demande tel fournisseur...
Quand c'est pret le programme me renvoit les stats adéquats par mail.


Ok, donc le script que tu veux est assez classique: tu devrais trouver des
tas d'exemples de scripts PowerShell qui interrogent une base SQL, et
d'autres exemples en pagaille de scripts qui envoient un mail via l'objet
System.Net.Mail.

Ensuite, la façon dont tu appelles ton script dépend du serveur web. Le cas
le plus simple à concevoir, c'est un appel direct à powershell.exe avec le
nom du script et les paramètres. Le problème avec cette solution, c'est le
volume potentiel d'appels simultanés à powershell.exe, surtout si chaque
script prend plusieurs minutes à s'exécuter.

Et je me redis, la curiosité du programme en réseau compte beaucoup :-))


Dans ce contexte, je ne suis pas sûr de voir ce que la programmation réseau
avec PowerShell peut t'apporter de particulier. Tu pourrais toujours créer
un script central dont le seul rôle est d'écouter un port particulier, et
dès réception d'une requête sur ce port de lancer une autre tâche
powershell.exe avec les paramètres de la requête, le but étant que le script
central repasse le plus rapidement possible en mode écoute. Mais hormis
l'intérêt intellectuel de cet exercice, je ne vois pas en quoi ça va
résoudre ton problème.

Comme autre solution, tu pourrais implémenter un système de file d'attente:
à réception d'une requête, ton script web (PHP, PowerShell ou autre) écrit
dans un log les infos de la requête. En parallèle, tu as un script
PowerShell qui prend les infos du log au fur et à mesure et qui les traite
(éventuellement en faisant un dispatch sur un nombre d'instances de
powershell.exe contrôlé et limité). Ca, ça peut le faire.

Jacques
Jacques


MCI \(ex do ré Mi chel la si do\) [MVP]
Le #696529
Bonjour !


la base est énorme


Comme Jacques, je pense que c'est très relatif.
Perso, pour que j'estime une base grosse, il faut que plusieurs tables dépassent le million
d'enregistrement. C'est un critère comme un autre, qui n'est valable que pour mon genre de clientèle
(PME), et d'applications (gestion).


non je peux pas, car ma base MySQl n'est qu'une copie des tables ... Et je fait déjà des calculs
en amont pour gagner un peu de temps avant d'écrire dans MySQL.


Justement, dans les calculs en amont, comme dans l'architecture des tables MySql, tu peux
préparer/optimiser selon le type de requêtes envisagées et les temps de réponse souhaités.


ce que je veux c'est plus le mode déconnecté... e-mail


AMHA, c'est le langage qui reçoit la requête qui devrait préparer l'e-mail, et l'envoyer. Au pire,
il peut préparer la pièce jointe, et on peut envoyer l'e-mail avec MailCDO ou Blat.



J'ai réalisé des trucs de ce genre, pour plusieurs clients. Selon les besoins, j'ai :
- ajouté une vue dans la base de données, pour une consultation très-rapide
- lancé des procédures stockées, qui génèrent, toutes les heures, des tables temporaires, servant
de base aux consultations
- lancé, une fois par jour (par nuit), un traitement qui effectue une requête, suivie de la
génération de pages HTML consultables par des commerciaux avec des modems GSM (très lents)
- idem, mais en préparant des fichier e-mails, envoyés à la demande.

En pratique, il n'y a pas de scripting (hormis les taches planifiées).


@-salutations

Michel Claveau

Stephane
Le #696309
Bah, c'est quoi énorme? La plupart des bases de données en production
sont énormes du point de vue de leur propriétaire.


en gros le pré-calcul avant de rentrer les infos dans mysql prend 1h1/2
environ !! Je calcul les stats d'achats mois par mois pour chaque
fournisseur et chaque article.

Je ne connais pas bien MySQL mais je ne vois pas en quoi ça empêche la
création d'un index. Mais bref, ce n'est pas grave.


Parce que c'est une copie journalière de la base et le but ce serait de
pouvoir faire du temps réél directement sur l'AS.

écoute. Mais hormis l'intérêt intellectuel de cet exercice, je ne vois
pas en quoi ça va résoudre ton problème.


T'es en plein dedans c'est exactement de la curiosité et trouver un
thème pour se lancer dans le powershell.

Stephane

Stephane
Le #696308
Perso, pour que j'estime une base grosse, il faut que plusieurs tables
dépassent le million d'enregistrement. C'est un critère comme un autre,


On est en est presque à 2 (de millions) et c'est pas la plus grosse.

Justement, dans les calculs en amont, comme dans l'architecture des
tables MySql, tu peux préparer/optimiser selon le type de requêtes
envisagées et les temps de réponse souhaités.


ce que je veux c'est plus le mode déconnecté... e-mail


AMHA, c'est le langage qui reçoit la requête qui devrait préparer
l'e-mail, et l'envoyer. Au pire, il peut préparer la pièce jointe, et on
peut envoyer l'e-mail avec MailCDO ou Blat.


Oui complètement



J'ai réalisé des trucs de ce genre, pour plusieurs clients. Selon les
besoins, j'ai :
- ajouté une vue dans la base de données, pour une consultation
très-rapide
- lancé des procédures stockées, qui génèrent, toutes les heures, des
tables temporaires, servant de base aux consultations
- lancé, une fois par jour (par nuit), un traitement qui effectue une
requête, suivie de la génération de pages HTML consultables par des
commerciaux avec des modems GSM (très lents)


En gros c'est ce que je fait actuellement, sauf que moi tout le monde
est sédentaire et on me demande régulièrement de pouvoir avoir ca en
temps réél.
Les contraintes ne sont plus du tout les mêmes. Comme le délai est long
pour le calcul, je ne peux pas passer par un serveur web.
D'ou l'idée: le client envoie le code fournisseur au serveur, le serveur
effectue ses calcul, dès qu'il a fini il envoie le résultat au client
soit sous forme de pièce jointe PDF ou unepage web mise à dispo.

Sinon je n'ai aucune psossiblité de modifier la bdd sur l'AS et
heureusement d'ailleurs. Je ne peux que la consulter.

Stephane


Le #703073
"Jacques Barathon [MS]" message de news:
"Stephane" news:ffq8od$1qc$
As-tu un exemple plus précis de ce que tu veux faire?


Oui :-)))))))))

L'idée c'est qu'un utilisateur me donne le code d'un fournisseur et qu'en
retour je lui renvoie ses stats d'achats quelques minutes après par mail
par exemple.
Actuellement je le fais en PHP et MySQL mais c'est pas du temps réel car
on remonte sur un an et les temps de calcul sont énorme.


Je suppose que tu as un serveur web (IIS ou Apache) qui sert de frontal à
ton utilisateur et qui exécute les scripts PHP en question.

Sans connaître les détails de ton architecture, il est difficile d'évaluer
pourquoi ta solution actuelle met plusieurs minutes pour récupérer des
stats d'achat à partir d'un code fournisseur, mais j'ai l'impression que
tu as un problème de fond à régler que le passage à une technologie
(PowerShell ou autre) ne réglera pas. A première vue je dirais qu'il
suffirait de créer un index dans ta base SQL pour pouvoir l'interroger en
temps réel, mais je le répète, il est difficile de juger vu de
l'extérieur.

Et d'une c'est chiant pour l'utilisateur d'attendre, de 2 le time out
l'éjecte de tout façon.


Pourquoi penses-tu que PowerShell sera plus performant que PHP?

Jacques



Hello
ce que je fais moi, c'est que ma page web aspx lance un process
"powershell.exe" et comme parametres le reste de la ligne de commande
powershell (ex : "script.ps1 arg1 arg2 ") pour lancer le script sur le
serveur

je pense que c'est ce que tu veux faire.
Par ailleurs, pas de pb pour aller interroger une base mysql, il y a pas mal
de scripts de ce type sur le net (je le sais, j'en ai utilisé il y a pas
longtps :o) ).

Bye
Nico



Publicité
Poster une réponse
Anonyme