Question
WinRM & UserInteractive
- jerome
- Auteur du sujet
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 15 ans 1 mois #5530
par jerome
WinRM & UserInteractive a été créé par jerome
Bonjour,
J'ai configuré sur un 2003 R2 Winrm avec certificat, ca marche bien et sur une machine de rebond j'utilise winrs pour exécuter des cmdlet powershell. Jusque la tout va bien
J'ai essayé mes scripts powershell avec interfaces graphiques, mais la ca ne passe pas, il plante à l'instruction [code:1]$form1.ShowDialog[/code:1]
Je me doutais que ca ne marcherait pas mais j'avais quand même un petit espoir. Si quelqu'un a une explication, je me coucherais moins bete.
Merci
J'ai configuré sur un 2003 R2 Winrm avec certificat, ca marche bien et sur une machine de rebond j'utilise winrs pour exécuter des cmdlet powershell. Jusque la tout va bien
J'ai essayé mes scripts powershell avec interfaces graphiques, mais la ca ne passe pas, il plante à l'instruction [code:1]$form1.ShowDialog[/code:1]
Je me doutais que ca ne marcherait pas mais j'avais quand même un petit espoir. Si quelqu'un a une explication, je me coucherais moins bete.
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 1 mois #5534
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:WinRM & UserInteractive
Salut,
dje81 écrit:
Dans le même contexte, as-tu essayé de lancer notepad.exe ?
dje81 écrit:
Pour exécuter du code distant on est bien obligé de passer par un runspace PowerShell, à priori Winrm ne me semble pas concerné, mais je peux me tromper.
Le code de création de la WinForm est-il local ou transmis via Winrm ?
Et s'il est transmis as-tu essayé de l'exécuter, en l'ayant au préalable copier sur le distant ?
dje81 écrit:
Quelle est l'exception déclenchée ?il plante à l'instruction [code:1]$form1.ShowDialog[/code:1]
Dans le même contexte, as-tu essayé de lancer notepad.exe ?
dje81 écrit:
J'avais cru comprendre que Winrm était avant tout une couche de transport.je me doutais que ca ne marcherait pas
Pour exécuter du code distant on est bien obligé de passer par un runspace PowerShell, à priori Winrm ne me semble pas concerné, mais je peux me tromper.
Le code de création de la WinForm est-il local ou transmis via Winrm ?
Et s'il est transmis as-tu essayé de l'exécuter, en l'ayant au préalable copier sur le distant ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 15 ans 1 mois #5562
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:WinRM & UserInteractive
Je me répond à moi-même
Laurent Dardenne écrit:
$Session1 = new-pssession -ComputerName localhost
Enter-PSSession $session1
cd C:\Program Files\PowerShell\Add-Lib\Demos\Convert-Form\DragAndDrop
Add-PSSnapin Pscx
.\Run-STA.ps1
Error :
Invoke-Apartment : Exception lors de l'appel de « ShowDialog » avec « 0 » argument(s) : « L'affichage d'une boîte de dialogue modale
ou d'un formulaire lorsque l'application ne s'exécute pas en mode UserInteractive n'est pas une opération valide.
Spécifiez le style ServiceNotification ou DefaultDesktopOnly pour afficher une notification à partir d'une application de service. »[/code:1]
Laurent Dardenne écrit:
Laurent Dardenne écrit:
[code:1]
Enter-PSSession $session1
$process = [Diagnostics.Process]::GetCurrentProcess()
$process|Select name,MainWindowHandle
#Name MainWindowHandle
#----
#wsmprovhost 0
test-path Variable:«»PsWindowHandle
#false
[/code:1]
Il ne gére pas de handle de fenêtre, l'appel à ShowDialog ne peut donc pas fonctionner dans une session remote (distante ou locale).
On peut toutefois afficher une winform de type MessageBox, en utilisant une surchage particulière de la méthode Show, qui n'est pas dispo sur une Winform :
[code:1]
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[Windows.Forms.MessageBox]::«»Show(\"Test\", \"Demo\", \"OK\", \"Information\", \"Button1\", \"ServiceNotification\"«»)
[/code:1]
Cet appel fonctionne ( XP + PSsession locales)
Il semble qu'on puisse configurer WinRM avec un autre provider de host qui pourrait autoriser l'exécution d'un GUI, mais là on quitte le scripting.
Voir le fichier about_Remote_FAQ.txt<br><br>Message édité par: Laurent Dardenne, à: 1/11/09 17:39
Laurent Dardenne écrit:
[code:1]Quelle est l'exception déclenchée ?
$Session1 = new-pssession -ComputerName localhost
Enter-PSSession $session1
cd C:\Program Files\PowerShell\Add-Lib\Demos\Convert-Form\DragAndDrop
Add-PSSnapin Pscx
.\Run-STA.ps1
Error :
Invoke-Apartment : Exception lors de l'appel de « ShowDialog » avec « 0 » argument(s) : « L'affichage d'une boîte de dialogue modale
ou d'un formulaire lorsque l'application ne s'exécute pas en mode UserInteractive n'est pas une opération valide.
Spécifiez le style ServiceNotification ou DefaultDesktopOnly pour afficher une notification à partir d'une application de service. »[/code:1]
Laurent Dardenne écrit:
Cela ne fonctionne pas mieux car la session est exécutée dans un process nommé wsmprovhost.exeDans le même contexte, as-tu essayé de lancer notepad.exe ?
Laurent Dardenne écrit:
Le process wsmprovhost (plugin WinRM) est bien exécuté par WinRM, mais c'est lui qui ne permet pas d'interagir avec le bureau :Pour exécuter du code distant on est bien obligé de passer par un runspace PowerShell, à priori Winrm ne me semble pas concerné, mais je peux me tromper.
[code:1]
Enter-PSSession $session1
$process = [Diagnostics.Process]::GetCurrentProcess()
$process|Select name,MainWindowHandle
#Name MainWindowHandle
#----
#wsmprovhost 0
test-path Variable:«»PsWindowHandle
#false
[/code:1]
Il ne gére pas de handle de fenêtre, l'appel à ShowDialog ne peut donc pas fonctionner dans une session remote (distante ou locale).
On peut toutefois afficher une winform de type MessageBox, en utilisant une surchage particulière de la méthode Show, qui n'est pas dispo sur une Winform :
[code:1]
[void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[Windows.Forms.MessageBox]::«»Show(\"Test\", \"Demo\", \"OK\", \"Information\", \"Button1\", \"ServiceNotification\"«»)
[/code:1]
Cet appel fonctionne ( XP + PSsession locales)
Il semble qu'on puisse configurer WinRM avec un autre provider de host qui pourrait autoriser l'exécution d'un GUI, mais là on quitte le scripting.
Voir le fichier about_Remote_FAQ.txt<br><br>Message édité par: Laurent Dardenne, à: 1/11/09 17:39
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Greder
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 10
- Remerciements reçus 0
il y a 12 ans 6 mois #11814
par Greder
Réponse de Greder sur le sujet Re:WinRM & UserInteractive
Bonjour,
merci pour ce poste et les réponses apportées, ça m'a aidé.
[code:1][void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[Windows.Forms.MessageBox]::«»Show(\"Test\", \"Demo\", \"OK\", \"Information\", \"Button1\", \"ServiceNotification\"«»)[/code:1]
En effet une fois une session ouverte, l'exécution de ceci ne crée pas d'erreur. Cependant rien ne s'affiche sur le poste distant !! Il s'agit d'un processus exécuté avec un autre compte que celui utilisé pour se logué sur cette machine distante... (le processus est donc bien présent)
Bref je me suis permis de continuer ce poste car j'ai vraiment besoin de trouver un moyen d'informer un utilisateur une fois que j'ai terminé avec la PSSession.
Tout aide sera la BIENVENUE.
Merci beaucoup !
merci pour ce poste et les réponses apportées, ça m'a aidé.
[code:1][void][Reflection.Assembly]::LoadWithPartialName(\"System.Windows.Forms\"«»)
[Windows.Forms.MessageBox]::«»Show(\"Test\", \"Demo\", \"OK\", \"Information\", \"Button1\", \"ServiceNotification\"«»)[/code:1]
En effet une fois une session ouverte, l'exécution de ceci ne crée pas d'erreur. Cependant rien ne s'affiche sur le poste distant !! Il s'agit d'un processus exécuté avec un autre compte que celui utilisé pour se logué sur cette machine distante... (le processus est donc bien présent)
Bref je me suis permis de continuer ce poste car j'ai vraiment besoin de trouver un moyen d'informer un utilisateur une fois que j'ai terminé avec la PSSession.
Tout aide sera la BIENVENUE.
Merci beaucoup !
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 12 ans 6 mois #11817
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:WinRM & UserInteractive
As-tu essayé un Net Send ?
Je n'ai pas encore essayé, mais pourquoi pas
Si j'ai le temps demain j'essaie sur une plateforme de test 2008 R2.
De mon côté, et dans le même contexte, j'ai essayé d'utiliser ceci, d'une session WinRM vers ma session de dev courante :
[code:1]
[System.Diagnostics.Debugger]::Log($level, $category, $message)
[/code:1]
mais sans succès, normal.
Cela ressemble au pb d'interaction d'un service avec le bureau, depuis Seven...
Sinon le mieux est poster sur le forum US de MS dédié à Powershell. A moins que que ce soit déjà fait.
Je n'ai pas encore essayé, mais pourquoi pas
Si j'ai le temps demain j'essaie sur une plateforme de test 2008 R2.
De mon côté, et dans le même contexte, j'ai essayé d'utiliser ceci, d'une session WinRM vers ma session de dev courante :
[code:1]
[System.Diagnostics.Debugger]::Log($level, $category, $message)
[/code:1]
mais sans succès, normal.
Cela ressemble au pb d'interaction d'un service avec le bureau, depuis Seven...
Sinon le mieux est poster sur le forum US de MS dédié à Powershell. A moins que que ce soit déjà fait.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Greder
- Hors Ligne
- Nouveau membre
Réduire
Plus d'informations
- Messages : 10
- Remerciements reçus 0
il y a 12 ans 6 mois #11821
par Greder
Réponse de Greder sur le sujet Re:WinRM & UserInteractive
Merci pour ta réponse.
Je ne crois pas que ça soit possible en fait. Je me dirige vers une autre solution.
Malheureusement il s'agit d'un projet de fin d'étude et mon temps est vraiment limité, je ne peux plus chercher de soluce
Je ne crois pas que ça soit possible en fait. Je me dirige vers une autre solution.
Malheureusement il s'agit d'un projet de fin d'étude et mon temps est vraiment limité, je ne peux plus chercher de soluce
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.112 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- WinRM & UserInteractive