Poweshell - использование MessageBox в методе класса

У меня была функция Powershell, которая отлично работала там, где я использовал окно сообщения, чтобы предоставить пользователю некоторую обратную связь. Однако я хотел добавить функцию в класс. Метод класса отлично работает, за исключением случаев, когда я оставляю строку ниже:

[system.windows.forms.messagebox] :: show («Путь к папке содержит правильные параметры»).

Он продолжает давать мне ошибку Невозможно найти тип:

[System.Windows.Forms.Messagebox]

Я пробовал все, что мог найти в сети. Я создал действительно простой класс, как показано ниже, который отобразит окно сообщения в ISE, но не тогда, когда я запустил его в окне PowerShell.

Я просто не знаю, почему.

class test {

[void]ok() {

 Add-Type -AssemblyName "System.Windows.Form"
 [void][System.Windows.Forms.Messagebox]::Show("This works in ISE but not powershell window")
}
}

$e = [test]::new()
$e.ok()

Я уверен, что есть простой ответ на этот вопрос, но я не знаю, что это такое.

Всего 2 ответа


О да, вы правы, ответ на самом деле прост. Сборка, которую вы хотите загрузить, называется «System.Windows.Form s »

Хороших выходных!


Я провел некоторое тестирование и обнаружил, что этот скрипт работает только при вызове сценария в окне команд из Powershell (x86), выполняемого как «Администратор». Когда я вызываю скрипт из любой другой версии Powershell, включая только что щелкнув по сценарию и предлагая запустить его в PowerShell, он дает мне ошибку:

Не удалось найти тип [System.Windows.Forms.Messagebox]

class test {

[void]ok() {

 Add-Type -AssemblyName "System.Windows.Forms"
 [void][System.Windows.Forms.Messagebox]::Show("This works in ISE but not powershell window")
}
}

$e = [test]::new()
$e.ok()

Однако, когда я превращаю это в функцию, как показано ниже, он отлично работает.

function test {

 Add-Type -AssemblyName "System.Windows.Forms"
 [void][System.Windows.Forms.Messagebox]::Show("This works in ISE but not powershell window")
}

test

Может ли кто-нибудь пролить свет на то, что вызывает такое поведение?


Есть идеи?

10000