Выполнить сценарий PowerShell из командной строки Windows - PullRequest
0 голосов
/ 14 сентября 2018

У меня установлена ​​текущая версия 64-битной Windows 10.

Я могу открыть окно Windows PowerShell и ввести следующую команду для выполнения сценария PowerShell.Сценарий выполняется без ошибок.

PS C:\Users\david\Desktop\test> ./messagebox.ps1

Я хочу выполнить тот же сценарий из окна командной строки Windows.Когда я ввожу следующую команду, я получаю отображаемые сообщения об ошибках.

C:\Users\david\Desktop\test>powershell -ExecutionPolicy Bypass -file messagebox.ps1
At C:\Users\david\Desktop\test\messagebox.ps1:81 char:14
+ Class Form : System.Windows.Forms.Form
+              ~~~~~~~~~~~~~~~~~~~~~~~~~
Unable to find type [System.Windows.Forms.Form].
At C:\Users\david\Desktop\test\messagebox.ps1:102 char:21
+             return [System.Windows.Forms.MessageBox]::Show($messsage, ...
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unable to find type [System.Windows.Forms.MessageBox].
At C:\Users\david\Desktop\test\messagebox.ps1:108 char:21
+             return [System.Windows.Forms.MessageBox]::Show($messsage, ...
+                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Unable to find type [System.Windows.Forms.MessageBox].
    + CategoryInfo          : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : TypeNotFound

Сценарий содержит следующие строки, которые, как я думал, будут содержать правильную сборку.

$n = new-object System.Reflection.AssemblyName("System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
[System.AppDomain]::CurrentDomain.Load($n) | Out-Null

1 Ответ

0 голосов
/ 14 сентября 2018

Вы не опубликовали достаточно кода, чтобы воспроизвести проблему, но это работает для меня:

Add-Type -AssemblyName System.Windows.Forms | Out-Null
[System.Windows.Forms.MessageBox]::Show("Hello World")

Полагаю, вы можете расширить это до любой версии Show (), которая вам нужна.

См. Также Журнал PowerShell

...