Хорошо. Вот как я использую.
С теоретической точки зрения это состоит в создании интерфейса с Windows Forms и последующем размещении кода PowerSell за событием.
С технической точки зрения два решения:
1) Используйте Visual Studio Free Edition для создания интерфейса в C #, а затем инструмент преобразования для создания связанного источника PowerShell ( французская статья здесь )
2) вы можете скачать бесплатно (вам просто нужно зарегистрироваться) Sapiens PrimalFormsCE.exe (Community Edition)
![PrimalFormsCE download](https://i.stack.imgur.com/ccvzf.png)
Этот инструмент позволяет создать форму, а затем сгенерировать ассоциированный код Powershell.
![PrimalFormsCE image](https://i.stack.imgur.com/ewPO1.png)
Вы также можете создавать формы из аварийного завершения, вот пример кода:
Add-Type -AssemblyName system.Windows.Forms
# Create the form
$form = New-Object Windows.Forms.Form
$form.Text = "Test Saisie"
$form.Size = New-Object System.Drawing.Size(250,154)
# Create EntryFiel
$TB_Saisie = New-Object System.Windows.Forms.TextBox
$TB_Saisie.Location = New-Object System.Drawing.Point(50,31)
$TB_Saisie.Size = New-Object System.Drawing.Size(150,32)
# Create "Ok" Button
$PB_Ok = New-Object System.Windows.Forms.Button
$PB_Ok.Text = "Ok"
$PB_Ok.Location = New-Object System.Drawing.Point(50,62)
$PB_Ok.Size = New-Object System.Drawing.Size(50,32)
$PB_Ok.DialogResult = [System.Windows.Forms.DialogResult]::OK
# Create "Cancel" Button
$PB_Cancel = New-Object System.Windows.Forms.Button
$PB_Cancel.Text = "Cancel"
$PB_Cancel.Location = New-Object System.Drawing.Point(150,62)
$PB_Cancel.Size = New-Object System.Drawing.Size(50,32)
$PB_Cancel.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
# Add controls to the form
$form.Controls.Add($PB_Ok)
$form.Controls.Add($PB_Cancel)
$form.Controls.Add($TB_Saisie)
# Message loop
$Res = $form.ShowDialog()
If ($Res -eq [System.Windows.Forms.DialogResult]::OK)
{
Write-Host ("Accepted : {0}" -f $TB_Saisie.Text)
}
else
{
Write-Host "Cancel"
}