Я пытаюсь создать функцию, которая позволит мне вызвать всплывающее сообщение, подождите, пожалуйста, запустите еще несколько скриптов и закройте всплывающее окно
.
Function Popup-Message {
param ([switch]$show,[switch]$close)
Add-Type -AssemblyName System.Windows.Forms
# Build Form
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Test"
$objForm.Size = New-Object System.Drawing.Size(220,100)
# Add Label
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(80,20)
$objLabel.Size = New-Object System.Drawing.Size(100,20)
$objLabel.Text = "Hi there!"
$objForm.Controls.Add($objLabel)
If ($show)
{
$objForm.Show() | Out-Null
$global:test = "Show"
}
If ($close)
{
# destroy form
$objForm.Close() | Out-Null
$global:test = "Close"
}
}
Затем я могу получить всплывающее окно для отображения:
Popup-Message -show
На данный момент я вижу переменную $ test как Показать
Но когда я пытаюсь закрыть окно с помощью:
Popup-Message -close
Но всплывающее окно не закроется
Если я снова посмотрю на $ test , он отобразится как Close
Я предполагаю, что это как-то связано с сохранением функции в Global Scope, но я не могу понять, как это сделать с помощью формы