Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function Ping-Host {
- Param([string]$computername)
- $PingBool= Test-Connection -Count 1 -Quiet -ComputerName $computername -ErrorAction SilentlyContinue
- Write-Output $PingBool
- }
- function Get-OS {
- Param([string]$computername)
- $Versions = @{
- '10.0.17134' = 'Win10-1803'
- '10.0.16299' = 'Win10-1709'
- '10.0.14393' = 'Win10-1607'
- '10.0.10586' = 'Win10-1511'
- '10.0.10240' = 'Win10-1507'
- '6.1.7601' = 'Win7'
- }
- $WMIJob = Get-WmiObject -Computer $computername -Class Win32_OperatingSystem -EA SilentlyContinue -AsJob | Wait-Job -Timeout 5
- if ($WMIJob.State -ne 'Completed')
- {
- Write-Output "N/A"
- }
- else
- {
- $Props = $WMIJob | Receive-Job
- Write-Output "$($Versions.$($Props.Version))"
- }
- }
- function Get-LastBoot {
- Param([string]$computername)
- $WMIJob = Get-WmiObject -Computer $computername -Class Win32_OperatingSystem -EA SilentlyContinue -AsJob | Wait-Job -Timeout 5
- if ($WMIJob.State -ne 'Completed')
- {
- Write-Output "N/A"
- }
- else
- {
- $Props = $WMIJob | Receive-Job
- Write-Output "$($Props.LastBootUpTime)"
- }
- }
- function GenerateForm {
- [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
- [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
- $form1 = New-Object System.Windows.Forms.Form
- $lblRefreshInterval = New-Object System.Windows.Forms.Label
- $numInterval = New-Object System.Windows.Forms.NumericUpDown
- $btnQuit = New-Object System.Windows.Forms.Button
- $btnGo = New-Object System.Windows.Forms.Button
- $dataGridView = New-Object System.Windows.Forms.DataGridView
- $label2 = New-Object System.Windows.Forms.Label
- $statusBar = New-Object System.Windows.Forms.StatusBar
- $txtComputerList = New-Object System.Windows.Forms.TextBox
- $GetStatus=
- {
- $dataGridView.DataSource = $Null
- if($computers) { Clear-Variable computers }
- $computers = Get-Content $txtComputerList.Text -ea stop | sort
- if ($computers) {
- $statusBar.Text = ("Querying computers from {0}" -f $txtComputerList.Text)
- $form1.Refresh
- $griddata=@()
- foreach ($computer in $computers)
- {
- $statusBar.Text=("Pinging {0}" -f $computer.toUpper())
- $obj = New-Object PSobject
- $obj | Add-Member Noteproperty Computername $computer.ToUpper()
- if($pingResult) { Clear-Variable pingResult }
- $pingResult = Ping-Host $computer
- if ($pingResult -eq $False)
- {
- $obj | Add-Member Noteproperty Pinged "No"
- $obj | Add-Member Noteproperty OS "N/A"
- $obj | Add-Member Noteproperty LastBoot "N/A"
- }
- else
- {
- $obj | Add-Member Noteproperty Pinged "Yes"
- if($os) { Clear-Variable os }
- $os = Get-OS $computer
- if($lastboot) { Clear-Variable lastboot }
- $lastboot = Get-LastBoot $computer
- $obj | Add-Member Noteproperty OS $os
- $obj | Add-Member Noteproperty LastBoot $lastboot
- }
- $griddata += $obj
- $array= New-Object System.Collections.ArrayList
- $array.AddRange($griddata)
- $DataGridView.DataSource = $array
- $c = $dataGridView.RowCount
- for ($x = 0; $x -lt $c; $x++)
- {
- if ($dataGridView.Rows[$x].Cells[1].Value -eq "No")
- {
- $dataGridView.Rows[$x].DefaultCellStyle.Forecolor=[System.Drawing.Color]::FromArgb(255,255,0,0)
- }
- }
- }
- $statusBar.Text=("Ready. Last updated {0}" -f (Get-Date))
- }
- else
- {
- $statusBar.Text=("Failed to find {0}" -f $txtComputerList.text)
- }
- $form1.Refresh()
- }
- $Quit=
- {
- $form1.Close()
- }
- $form1.Name = 'form1'
- $form1.Text = 'Display Computer Status'
- $form1.DataBindings.DefaultDataSourceUpdateMode = 0
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 890
- $System_Drawing_Size.Height = 359
- $form1.ClientSize = $System_Drawing_Size
- $form1.StartPosition = 1
- $form1.BackColor = [System.Drawing.Color]::FromArgb(255,185,209,234)
- $btnQuit.UseVisualStyleBackColor = $True
- $btnQuit.Text = 'Close'
- $btnQuit.DataBindings.DefaultDataSourceUpdateMode = 0
- $btnQuit.TabIndex = 2
- $btnQuit.Name = 'btnQuit'
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 100
- $System_Drawing_Size.Height = 25
- $btnQuit.Size = $System_Drawing_Size
- #$btnQuit.Anchor = 9
- $System_Drawing_Point = New-Object System.Drawing.Point
- $System_Drawing_Point.X = 365
- $System_Drawing_Point.Y = 30
- $btnQuit.Location = $System_Drawing_Point
- $btnQuit.add_Click($Quit)
- $form1.Controls.Add($btnQuit)
- $btnGo.UseVisualStyleBackColor = $True
- $btnGo.Text = 'Get Status'
- $btnGo.DataBindings.DefaultDataSourceUpdateMode = 0
- $btnGo.TabIndex = 1
- $btnGo.Name = 'btnGo'
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 100
- $System_Drawing_Size.Height = 25
- $btnGo.Size = $System_Drawing_Size
- #$btnGo.Anchor = 9
- $System_Drawing_Point = New-Object System.Drawing.Point
- $System_Drawing_Point.X = 233
- $System_Drawing_Point.Y = 31
- $btnGo.Location = $System_Drawing_Point
- $btnGo.add_Click($GetStatus)
- $form1.Controls.Add($btnGo)
- $dataGridView.RowTemplate.DefaultCellStyle.ForeColor = [System.Drawing.Color]::FromArgb(255,0,128,0)
- $dataGridView.Name = 'dataGridView'
- $dataGridView.DataBindings.DefaultDataSourceUpdateMode = 0
- $dataGridView.ReadOnly = $True
- $dataGridView.AllowUserToDeleteRows = $False
- $dataGridView.RowHeadersVisible = $False
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 870
- $System_Drawing_Size.Height = 260
- $dataGridView.Size = $System_Drawing_Size
- $dataGridView.TabIndex = 8
- $dataGridView.Anchor = 15
- $dataGridView.AutoSizeColumnsMode = 16
- $dataGridView.AllowUserToAddRows = $False
- $dataGridView.ColumnHeadersHeightSizeMode = 2
- $System_Drawing_Point = New-Object System.Drawing.Point
- $System_Drawing_Point.X = 13
- $System_Drawing_Point.Y = 70
- $dataGridView.Location = $System_Drawing_Point
- $dataGridView.AllowUserToOrderColumns = $True
- $dataGridView.add_CellContentDoubleClick($LaunchCompMgmt)
- #$dataGridView.AutoResizeColumns([System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells]::AllCells)
- #$DataGridViewAutoSizeColumnsMode.AllCells
- $form1.Controls.Add($dataGridView)
- $label2.Text = 'Machine List Path'
- $label2.DataBindings.DefaultDataSourceUpdateMode = 0
- $label2.TabIndex = 7
- $label2.Name = 'label2'
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 490
- $System_Drawing_Size.Height = 23
- $label2.Size = $System_Drawing_Size
- $System_Drawing_Point = New-Object System.Drawing.Point
- $System_Drawing_Point.X = 12
- $System_Drawing_Point.Y = 7
- $label2.Location = $System_Drawing_Point
- $form1.Controls.Add($label2)
- $statusBar.Name = 'statusBar'
- $statusBar.DataBindings.DefaultDataSourceUpdateMode = 0
- $statusBar.TabIndex = 4
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 428
- $System_Drawing_Size.Height = 22
- $statusBar.Size = $System_Drawing_Size
- $System_Drawing_Point = New-Object System.Drawing.Point
- $System_Drawing_Point.X = 0
- $System_Drawing_Point.Y = 337
- $statusBar.Location = $System_Drawing_Point
- $statusBar.Text = 'Ready'
- $form1.Controls.Add($statusBar)
- $txtComputerList.Text = 'C:\Temp\Machine-List.txt'
- $txtComputerList.Name = 'txtComputerList'
- $txtComputerList.TabIndex = 0
- $System_Drawing_Size = New-Object System.Drawing.Size
- $System_Drawing_Size.Width = 198
- $System_Drawing_Size.Height = 20
- $txtComputerList.Size = $System_Drawing_Size
- $System_Drawing_Point = New-Object System.Drawing.Point
- $System_Drawing_Point.X = 13
- $System_Drawing_Point.Y = 33
- $txtComputerList.Location = $System_Drawing_Point
- $txtComputerList.DataBindings.DefaultDataSourceUpdateMode = 0
- $form1.Controls.Add($txtComputerList)
- $form1.ShowDialog()| Out-Null
- }
- GenerateForm
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement