Poweshell - Использование MessageBox в методе класса - PullRequest
0 голосов
/ 23 ноября 2018

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

[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 ]

0 голосов
/ 24 ноября 2018

Я провел некоторое тестирование и определил, что этот сценарий работает только тогда, когда я вызываю сценарий в командном окне из 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

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

0 голосов
/ 23 ноября 2018

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

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

...