Powershell Windows Uptime in einer Gui
Guten Morgen,
ich versuche für verschieden Server Remote die Windows Uptime auszulesen (ich möchte gerne wissen wann ein Server neu gestartet wurde).
Das ganze möchte ich gerne in einer Gui erfassen.
Hierzu habe ich mir folgendes Skript gebaut:
Das Skript funktioniert soweit auch ganz gut. Die Computernamen werden geladen und können im Dropdownfeld angezeigt und ausgewählt werden.
Was ich gerne als finish machen würde ist mir die Uptime die ich ja mit dem Klick auf den OK Button ausgeben lassen möchte, diese auch grafisch anzeigen zu lassen. Gerne auch über ein extra Fenster.
Ich dachte hier dies evtl. so zu machen:
[void] [Windows.Forms.MessageBox]::Show("........,
[Windows.Forms.MessageBoxButtons]::ok, [Windows.Forms.MessageBoxIcon]::Error)
Ich weiß nun nur nicht wie ich das beim auslösen des OK Buttons mit auslöse und wie ich den eigentlichen Wert der Uptime mitgeben kann.
Hat hierzu evtl. einer eine Idee oder einen Tipp für mich?
Vielen Dank
ich versuche für verschieden Server Remote die Windows Uptime auszulesen (ich möchte gerne wissen wann ein Server neu gestartet wurde).
Das ganze möchte ich gerne in einer Gui erfassen.
Hierzu habe ich mir folgendes Skript gebaut:
# Load ActiveDirectory module
Import-Module ActiveDirectory
# Load Exchange environment
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$objForm = New-Object System.Windows.Forms.Form
# Hintergrundfarbe für das Fenster festlegen
$objForm.Backcolor=“white“
# Position des Fensters festlegen
$objForm.StartPosition = "CenterScreen"
# Fenstergröße festlegen
$objForm.Size = New-Object System.Drawing.Size(800,500)
# Titelleiste festlegen
$objForm.Text = "Windows uptime
#############################################################################################################
# Vorhandene Computer auslesen
$Computer = Get-ADComputer -Filter * -Properties * | select * -ExpandProperty cn
#############################################################################################################
#Computer aus dem Ad anzeigen
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(300,60)
$objLabel.Size = New-Object System.Drawing.Size(1000,20)
$objLabel.Text = "Bitte Benutzernamen wählen:"
$objForm.Controls.Add($objLabel)
$objCombobox = New-Object System.Windows.Forms.Combobox
$objCombobox.Location = New-Object System.Drawing.Size(300,80)
$objCombobox.Size = New-Object System.Drawing.Size(200,20)
$objCombobox.Height = 70
$objForm.Controls.Add($objCombobox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
$objCombobox.Items.AddRange($computer)
$objCombobox.SelectedItem
$objCombobox.Add_SelectedIndexChanged({ })
#OK Button anzeigen lassen
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(500,420)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Name = "OK"
$OKButton.DialogResult = "OK"
$OKButton.Add_Click({$wmi=Get-WmiObject -computername $objCombobox.SelectedItem -Class Win32_OperatingSystem
$wmi.converttodatetime($wmi.lastbootuptime)})
$objForm.Controls.Add($OKButton)
#Abbrechen Button
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(600,420)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Abbrechen"
$CancelButton.Name = "Abbrechen"
$CancelButton.DialogResult = "Cancel"
$CancelButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($CancelButton)
$objForm.Controls.Add($HelpButton)
######################################################################################################
[void] $objForm.ShowDialog()
Das Skript funktioniert soweit auch ganz gut. Die Computernamen werden geladen und können im Dropdownfeld angezeigt und ausgewählt werden.
Was ich gerne als finish machen würde ist mir die Uptime die ich ja mit dem Klick auf den OK Button ausgeben lassen möchte, diese auch grafisch anzeigen zu lassen. Gerne auch über ein extra Fenster.
Ich dachte hier dies evtl. so zu machen:
[void] [Windows.Forms.MessageBox]::Show("........,
[Windows.Forms.MessageBoxButtons]::ok, [Windows.Forms.MessageBoxIcon]::Error)
Ich weiß nun nur nicht wie ich das beim auslösen des OK Buttons mit auslöse und wie ich den eigentlichen Wert der Uptime mitgeben kann.
Hat hierzu evtl. einer eine Idee oder einen Tipp für mich?
Vielen Dank
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 339526
Url: https://administrator.de/forum/powershell-windows-uptime-in-einer-gui-339526.html
Ausgedruckt am: 22.12.2024 um 19:12 Uhr
8 Kommentare
Neuester Kommentar
Achtung hier kommt ein vollidiot
Gruß
function GenerateForm {
#region Import the Assemblies
[reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
[reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
#endregion
#region Generated Form Objects
$form1 = New-Object System.Windows.Forms.Form
$label1 = New-Object System.Windows.Forms.Label
$comboServer = New-Object System.Windows.Forms.ComboBox
$InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState
#endregion Generated Form Objects
$handler_form1_Load=
{
$comboServer.Items.AddRange((Get-AdComputer -Filter * | select -Expand Name))
}
$handler_comboServer_SelectedIndexChanged=
{
$wmi = gwmi win32_OperatingSystem -ComputerName $comboServer.SelectedItem
$lastbootup = $wmi.ConvertToDateTime($wmi.lastBootUptime).toString('G')
[System.Windows.Forms.MessageBox]::Show($lastbootup)
}
$OnLoadForm_StateCorrection=
{#Correct the initial state of the form to prevent the .Net maximized form issue
$form1.WindowState = $InitialFormWindowState
}
#----------------------------------------------
#region Generated Form Code
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 59
$System_Drawing_Size.Width = 277
$form1.ClientSize = $System_Drawing_Size
$form1.DataBindings.DefaultDataSourceUpdateMode = 0
$form1.Name = "form1"
$form1.Text = "Demo"
$form1.add_Load($handler_form1_Load)
$label1.DataBindings.DefaultDataSourceUpdateMode = 0
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 12
$System_Drawing_Point.Y = 15
$label1.Location = $System_Drawing_Point
$label1.Name = "label1"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 23
$System_Drawing_Size.Width = 90
$label1.Size = $System_Drawing_Size
$label1.TabIndex = 1
$label1.Text = "Choose Server"
$form1.Controls.Add($label1)
$comboServer.DataBindings.DefaultDataSourceUpdateMode = 0
$comboServer.FormattingEnabled = $True
$System_Drawing_Point = New-Object System.Drawing.Point
$System_Drawing_Point.X = 108
$System_Drawing_Point.Y = 12
$comboServer.Location = $System_Drawing_Point
$comboServer.Name = "comboServer"
$System_Drawing_Size = New-Object System.Drawing.Size
$System_Drawing_Size.Height = 21
$System_Drawing_Size.Width = 157
$comboServer.Size = $System_Drawing_Size
$comboServer.TabIndex = 0
$comboServer.add_SelectedIndexChanged($handler_comboServer_SelectedIndexChanged)
$form1.Controls.Add($comboServer)
#endregion Generated Form Code
#Save the initial state of the form
$InitialFormWindowState = $form1.WindowState
#Init the OnLoad event to correct the initial state of the form
$form1.add_Load($OnLoadForm_StateCorrection)
#Show the Form
$form1.ShowDialog()| Out-Null
} #End Function
GenerateForm