-1
votes

Pourquoi OpenFileDialog a-t-il trouvé s'il s'exécutent d'ISE mais pas de CMD?

J'ai une interface graphique, je souhaite ouvrir un dossier et sélectionner un fichier. Lorsque j'exécute mon code d'ISE, cela fonctionne. Mais lorsque je cours à partir d'un autre environnement avec cmd, il montre une erreur xxx

ceci est mon code mis à jour. Cela fonctionne en utilisant PS Isee, mais j'ai essayé de l'exécuter à partir de l'environnement WinPe, il montre ces erreurs ci-dessus. Quelqu'un pourrait-il m'aider, s'il vous plaît. Merci


5 commentaires

Débarrassez-vous des «citations intelligentes» laides et utilisez-les droites. Aussi, montrez-nous comment vous appelez cette fonction PowerShell de CMD.


Je change les citations. Ceci comment j'appelle le PowerShell PowerShell.exe -executionPasse de bypasspolicy -file% ~ dp0 \ gui.ps1


L'ISE charge automatiquement le sous-système GUI - c'est lui-même une application d'interface graphique. Vous devrez ajouter les commandes à charger les assemblys nécessaires.


Vous voulez dire ajouter ce add-type -assemblyname system.windows.forms ? @Lee_dailey


@Sbr - Veuillez jeter un oeil à mon poste de réponse. Il fonctionne quand appelé à partir de CDM.exe via PowerShell.exe -file fiename.ps1 .


3 Réponses :


1
votes

Je crois que ça va fonctionner si vous supprimez | Out-Null code> à partir de cette ligne

$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog | Out-Null


4 commentaires

Je supprimai le Out-Null et cela me donne une erreur appelant "showdialog" avec "0" argument (s) "Création d'une instance du composant COM avec CLSID ..... < / code>


Oui, je ne sais pas comment tu as fini là-bas, mais je vous suggère de commencer par une nouvelle session PowerShell afin de ne pas avoir beaucoup de malbouffe cachée dans la variable.


Vous n'avez pas mentionné à quel point il y avait plus de choses sur le script et le fait que vous l'exécutez dans WinPe.


Je ne comprends pas ce que tu veux dire



1
votes

Cela fonctionne ... mais je pense que l'utilisation de loadwithpartialname a été obsolète. Je ne trouve pas la "nouvelle façon" à ce moment-là, tho. [ blush ] xxx


0 commentaires

0
votes

Juste besoin d'ajouter cela, ça fonctionne bien. Merci pour toute la contribution

 $OpenFileDialog.AutoUpgradeEnabled =$false


0 commentaires