Рациональным подходом к созданию GUI в Powershell будет случай когда декларативное описание графического интерфейса отделяется от остального кода исполнения. Такой подход обеспечивает технология Windows Presentation Foundation (WPF).
При использовании WPF графический интерфейс описывается с помощью базирующегося на XML языка разметки XAML (Extensible Application Markup Language). Таким образом, дизайн интерфейса отделяется от логики сценария, работающего с этим интерфейсом. Для работы с объектами WPF в PowerShell нужно загрузить сборку PresentationFramework:
PS C: \Users\xenial> Add-Type -AssemblyName PresentationFramework
Создадим сначала простейшее диалоговое окно без элементов размером 300x200 пикселов и с заголовком "Форма WPF". На первом шаге с помощью here-string создадим строку $xaml с XML-разметкой, содержащей один тег <window/> с атрибутами Width, Height и Title, и преобразуем эту строку в объект XML:
PS С:\Users\xenial> [xml]$xaml = @"
<Window
xmlns="http: //schemas.microsoft.com/winfx/2006/xaml/presentation”
xmlns :x="http: //schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window" Тitle="Form WPF” Height=”200" Width=”300”
/>
"@
