Я использую этот код для загрузки блока .NET в PowerShell:
[System.Reflection.Assembly]::Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089") | out-null
[System.Windows.Forms.MessageBox]::Show("Hello world")
Могу я устанавливать псевдоним для блока (например: 'Система. Windows. Формы = 'Формы') так, чтобы я не вводил полное имя блока при вызове статических методов как MessageBox. Показать ()?
Хотя вы не можете создать какой-то псевдоним пространства имен как таковой, вы можете использовать следующий трюк (взят из Поваренной книги PowerShell Ли Холмса):
$namespace = "System.Windows.Forms.{0}"
$form = New-Object ($namespace -f "Form")
Но это будет работать только с New-Object
, поскольку это принимает строку для имени класса. Вы не можете использовать этот синтаксис с именем типа в квадратных скобках.
Однако вы можете опустить часть системы
, которая подразумевается:
[Windows.Forms.MessageBox]::Show("Hello World!")
Делает ее немного короче.
Вы можете сохранить тип в переменной и использовать переменную
$forms = [System.Windows.Forms.MessageBox]
$forms::Show('Hello')
. В этом случае вы можете загрузить сборку следующим образом:
Add-Type –assembly system.windows.forms