У меня есть графический интерфейс, и он вызывает функцию в зависимости от нажатой кнопки.Я хотел бы, чтобы выходные данные функции отображались в командном окне powershell при запуске графического интерфейса.Код ниже содержит 5 кнопок, когда я запускаю скрипт powershell и нажимаю на любую из 5 кнопок, ничего не происходит и просто зависает, пока я не закрываюсь.
# This is code for the GUI ▼
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$Form = New-Object system.Windows.Forms.Form
$Form.ClientSize = '406,414'
$Form.text = "Post DC Patching Checker"
$Form.TopMost = $false
$Check_NetLogon = New-Object system.Windows.Forms.Button
$Check_NetLogon.text = "Check Netlogon"
$Check_NetLogon.width = 340
$Check_NetLogon.height = 50
$Check_NetLogon.location = New-Object System.Drawing.Point(15,17)
$Check_NetLogon.Font = 'Microsoft Sans Serif,10'
$Ping = New-Object system.Windows.Forms.Button
$Ping.text = "Ping Servers / Workstations"
$Ping.width = 340
$Ping.height = 50
$Ping.location = New-Object System.Drawing.Point(16,97)
$Ping.Font = 'Microsoft Sans Serif,10'
$ShowReplication = New-Object system.Windows.Forms.Button
$ShowReplication.text = "Show Replication"
$ShowReplication.width = 340
$ShowReplication.height = 50
$ShowReplication.location = New-Object System.Drawing.Point(16,183)
$ShowReplication.Font = 'Microsoft Sans Serif,10'
$DiskSpace = New-Object system.Windows.Forms.Button
$DiskSpace.text = "Disk Space"
$DiskSpace.width = 340
$DiskSpace.height = 50
$DiskSpace.location = New-Object System.Drawing.Point(15,267)
$DiskSpace.Font = 'Microsoft Sans Serif,10'
$CheckDNSsuffix = New-Object system.Windows.Forms.Button
$CheckDNSsuffix.text = "Check IP Configuration"
$CheckDNSsuffix.width = 340
$CheckDNSsuffix.height = 50
$CheckDNSsuffix.location = New-Object System.Drawing.Point(17,350)
$CheckDNSsuffix.Font = 'Microsoft Sans Serif,10'
$Form.controls.AddRange(@($Check_NetLogon,$Ping,$ShowReplication,$DiskSpace,$CheckDNSsuffix))
$Check_NetLogon.Add_Click({ CheckNetLogon })
$Ping.Add_Click({ PingServersAndWorkstations })
$ShowReplication.Add_Click({ ShowReplicationOnServers })
$DiskSpace.Add_Click({ ShowDiskSpace })
$CheckDNSsuffix.Add_Click({ ShowIPconfig })
# This is code for the GUI ▲
# Check the netlogon service ▼
function CheckNetLogon {
$netLogon =Get-Service -DisplayName netlogon
if ($netLogon.Status -eq "Running"){
$netLogon.DisplayName + 'Service is running already'}
}
# Check the netlogon service ▲
# Ping's several workstations and servers ▼
function PingServersAndWorkstations {
ping test2
ping test3
ping test4
ping test5
}
# Ping's several workstations and servers ▲
# Shows replication ▼
function ShowReplicationOnServers {
repadmin /showrepl
}
# Shows replication ▲
# Shows disk space ▼
function ShowDiskSpace {
Get-WmiObject -Class Win32_logicaldisk |
Select-Object -Property DeviceID, DriveType, VolumeName,
@{L='FreeSpaceGB';E={"{0:N2}" -f ($_.FreeSpace /1GB)}}
}
# Shows replication ▲
# Shows IP config ▼
function ShowIPconfig {
ipconfig
}
# Shows IP config ▲
[void]$Form.ShowDialog()