#powershell #powershell-module
#powershell #powershell-модуль
Вопрос:
Ниже приводится абстрактное представление о том, что я пытаюсь сделать; все эти сценарии находятся в одной папке
# Windows Form script called gui.ps1
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$Form = New-Object system.Windows.Forms.Form
$Form.ClientSize = New-Object System.Drawing.Point(891, 414)
$Form.text = "Form"
$Form.TopMost = $false
$Label1 = New-Object system.Windows.Forms.Label
$Label1.text = "Enter the Text : "
$Label1.AutoSize = $true
$Label1.width = 25
$Label1.height = 10
$Label1.location = New-Object System.Drawing.Point(39, 188)
$Label1.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10)
$text_box = New-Object system.Windows.Forms.TextBox
$text_box.multiline = $false
$text_box.width = 695
$text_box.height = 20
$text_box.location = New-Object System.Drawing.Point(144, 183)
$text_box.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10)
$Button1 = New-Object system.Windows.Forms.Button
$Button1.text = "Submit"
$Button1.width = 106
$Button1.height = 30
$Button1.location = New-Object System.Drawing.Point(386, 239)
$Button1.Font = New-Object System.Drawing.Font('Microsoft Sans Serif', 10)
$Form.controls.AddRange(@($Label1, $text_box, $Button1))
$Button1.Add_Click({ txtInput }) # txtInput is defined in module.
# module called demo.psm1
function txtInput
{
$txt = $text_box.Text
Write-Host $txt
}
# execute.ps1
Import-Module -Name $PSScriptRootdemo.psm1
Set-Location $PSScriptRoot
. .gui.ps1 # dot sourcing
[void]$Form.ShowDialog()
Когда я запускаю скрипт execute.ps1, отображается форма. Но когда я нажимаю кнопку 1, ввод текстового поля не отображается в powershell.
Попытался определить переменную ‘txt’ в модуле как $ global: txt = $text_box.Text. Это не сработало.
Как я могу заставить это работать?
Комментарии:
1. уберите пробел перед открывающей скобкой:
$Button1.Add_Click({..})
2. сделал это. не работает.
3. Вы получаете сообщение об ошибке? Вы что-нибудь изменили в
demo.psm1
и не перезапускали PowerShell?4. сообщения об ошибках не были показаны. когда я запускаю скрипт, появляется графический интерфейс, и я ввел несколько текстов в поле и нажал кнопку отправки. но в консоли powershell ничего не отображается. предполагается, что функция в модуле принимает ввод из текстового поля и отображает его при нажатии кнопки отправки.