Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function Ping-Host {
  2.     Param([string]$computername)
  3.  
  4.     $PingBool= Test-Connection -Count 1 -Quiet -ComputerName $computername -ErrorAction SilentlyContinue
  5.  
  6.     Write-Output $PingBool
  7. }
  8.  
  9. function Get-OS {
  10.     Param([string]$computername)
  11.  
  12.     $Versions = @{
  13.         '10.0.17134' = 'Win10-1803'
  14.         '10.0.16299' = 'Win10-1709'
  15.         '10.0.14393' = 'Win10-1607'
  16.         '10.0.10586' = 'Win10-1511'
  17.         '10.0.10240' = 'Win10-1507'
  18.         '6.1.7601' = 'Win7'
  19.     }
  20.  
  21.     $WMIJob = Get-WmiObject -Computer $computername -Class Win32_OperatingSystem -EA SilentlyContinue -AsJob | Wait-Job -Timeout 5
  22.     if ($WMIJob.State -ne 'Completed')
  23.     {
  24.         Write-Output "N/A"
  25.     }
  26.     else
  27.     {
  28.         $Props = $WMIJob | Receive-Job
  29.         Write-Output "$($Versions.$($Props.Version))"
  30.    }
  31. }
  32.  
  33. function Get-LastBoot {
  34.     Param([string]$computername)
  35.  
  36.     $WMIJob = Get-WmiObject -Computer $computername -Class Win32_OperatingSystem -EA SilentlyContinue -AsJob | Wait-Job -Timeout 5
  37.     if ($WMIJob.State -ne 'Completed')
  38.     {
  39.         Write-Output "N/A"
  40.     }
  41.     else
  42.     {
  43.         $Props = $WMIJob | Receive-Job
  44.         Write-Output "$($Props.LastBootUpTime)"
  45.     }
  46. }
  47.  
  48. function GenerateForm {
  49.  
  50.     [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null
  51.     [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null
  52.  
  53.     $form1 = New-Object System.Windows.Forms.Form
  54.     $lblRefreshInterval = New-Object System.Windows.Forms.Label
  55.     $numInterval = New-Object System.Windows.Forms.NumericUpDown
  56.     $btnQuit = New-Object System.Windows.Forms.Button
  57.     $btnGo = New-Object System.Windows.Forms.Button
  58.     $dataGridView = New-Object System.Windows.Forms.DataGridView
  59.     $label2 = New-Object System.Windows.Forms.Label
  60.     $statusBar = New-Object System.Windows.Forms.StatusBar
  61.     $txtComputerList = New-Object System.Windows.Forms.TextBox
  62.  
  63.     $GetStatus=
  64.     {
  65.         $dataGridView.DataSource = $Null
  66.  
  67.         if($computers) { Clear-Variable computers }
  68.         $computers = Get-Content $txtComputerList.Text -ea stop | sort
  69.  
  70.         if ($computers) {
  71.  
  72.             $statusBar.Text = ("Querying computers from {0}" -f $txtComputerList.Text)
  73.             $form1.Refresh
  74.  
  75.             $griddata=@()
  76.  
  77.             foreach ($computer in $computers)
  78.             {
  79.                 $statusBar.Text=("Pinging {0}" -f $computer.toUpper())
  80.                 $obj = New-Object PSobject
  81.                 $obj | Add-Member Noteproperty Computername $computer.ToUpper()
  82.  
  83.                 if($pingResult) { Clear-Variable pingResult }
  84.                 $pingResult = Ping-Host $computer
  85.  
  86.                 if ($pingResult -eq $False)
  87.                 {
  88.  
  89.                     $obj | Add-Member Noteproperty Pinged "No"
  90.                     $obj | Add-Member Noteproperty OS "N/A"
  91.                     $obj | Add-Member Noteproperty LastBoot "N/A"
  92.                 }
  93.                 else
  94.                 {
  95.                     $obj | Add-Member Noteproperty Pinged "Yes"
  96.  
  97.                     if($os) { Clear-Variable os }
  98.                     $os = Get-OS $computer
  99.  
  100.                     if($lastboot) { Clear-Variable lastboot }
  101.                     $lastboot = Get-LastBoot $computer
  102.  
  103.                     $obj | Add-Member Noteproperty OS $os
  104.                     $obj | Add-Member Noteproperty LastBoot $lastboot
  105.                 }
  106.  
  107.                 $griddata += $obj
  108.  
  109.                 $array= New-Object System.Collections.ArrayList
  110.                 $array.AddRange($griddata)
  111.                 $DataGridView.DataSource = $array
  112.  
  113.                 $c = $dataGridView.RowCount
  114.                 for ($x = 0; $x -lt $c; $x++)
  115.                 {
  116.                     if ($dataGridView.Rows[$x].Cells[1].Value -eq "No")
  117.                     {
  118.                         $dataGridView.Rows[$x].DefaultCellStyle.Forecolor=[System.Drawing.Color]::FromArgb(255,255,0,0)
  119.                     }
  120.                 }
  121.             }
  122.  
  123.  
  124.         $statusBar.Text=("Ready. Last updated {0}" -f (Get-Date))
  125.  
  126.         }
  127.         else
  128.         {
  129.             $statusBar.Text=("Failed to find {0}" -f $txtComputerList.text)
  130.         }
  131.  
  132.        
  133.         $form1.Refresh()
  134.     }
  135.  
  136.     $Quit=
  137.     {
  138.         $form1.Close()
  139.     }
  140.  
  141.     $form1.Name = 'form1'
  142.     $form1.Text = 'Display Computer Status'
  143.     $form1.DataBindings.DefaultDataSourceUpdateMode = 0
  144.     $System_Drawing_Size = New-Object System.Drawing.Size
  145.     $System_Drawing_Size.Width = 890
  146.     $System_Drawing_Size.Height = 359
  147.     $form1.ClientSize = $System_Drawing_Size
  148.     $form1.StartPosition = 1
  149.     $form1.BackColor = [System.Drawing.Color]::FromArgb(255,185,209,234)
  150.  
  151.     $btnQuit.UseVisualStyleBackColor = $True
  152.     $btnQuit.Text = 'Close'
  153.  
  154.     $btnQuit.DataBindings.DefaultDataSourceUpdateMode = 0
  155.     $btnQuit.TabIndex = 2
  156.     $btnQuit.Name = 'btnQuit'
  157.     $System_Drawing_Size = New-Object System.Drawing.Size
  158.     $System_Drawing_Size.Width = 100
  159.     $System_Drawing_Size.Height = 25
  160.     $btnQuit.Size = $System_Drawing_Size
  161.     #$btnQuit.Anchor = 9
  162.     $System_Drawing_Point = New-Object System.Drawing.Point
  163.     $System_Drawing_Point.X = 365
  164.     $System_Drawing_Point.Y = 30
  165.     $btnQuit.Location = $System_Drawing_Point
  166.     $btnQuit.add_Click($Quit)
  167.  
  168.     $form1.Controls.Add($btnQuit)
  169.  
  170.  
  171.     $btnGo.UseVisualStyleBackColor = $True
  172.     $btnGo.Text = 'Get Status'
  173.  
  174.     $btnGo.DataBindings.DefaultDataSourceUpdateMode = 0
  175.     $btnGo.TabIndex = 1
  176.     $btnGo.Name = 'btnGo'
  177.     $System_Drawing_Size = New-Object System.Drawing.Size
  178.     $System_Drawing_Size.Width = 100
  179.     $System_Drawing_Size.Height = 25
  180.     $btnGo.Size = $System_Drawing_Size
  181.     #$btnGo.Anchor = 9
  182.     $System_Drawing_Point = New-Object System.Drawing.Point
  183.     $System_Drawing_Point.X = 233
  184.     $System_Drawing_Point.Y = 31
  185.     $btnGo.Location = $System_Drawing_Point
  186.     $btnGo.add_Click($GetStatus)
  187.  
  188.     $form1.Controls.Add($btnGo)
  189.  
  190.     $dataGridView.RowTemplate.DefaultCellStyle.ForeColor = [System.Drawing.Color]::FromArgb(255,0,128,0)
  191.     $dataGridView.Name = 'dataGridView'
  192.     $dataGridView.DataBindings.DefaultDataSourceUpdateMode = 0
  193.     $dataGridView.ReadOnly = $True
  194.     $dataGridView.AllowUserToDeleteRows = $False
  195.     $dataGridView.RowHeadersVisible = $False
  196.     $System_Drawing_Size = New-Object System.Drawing.Size
  197.     $System_Drawing_Size.Width = 870
  198.     $System_Drawing_Size.Height = 260
  199.     $dataGridView.Size = $System_Drawing_Size
  200.     $dataGridView.TabIndex = 8
  201.     $dataGridView.Anchor = 15
  202.     $dataGridView.AutoSizeColumnsMode = 16
  203.  
  204.  
  205.  
  206.     $dataGridView.AllowUserToAddRows = $False
  207.     $dataGridView.ColumnHeadersHeightSizeMode = 2
  208.     $System_Drawing_Point = New-Object System.Drawing.Point
  209.     $System_Drawing_Point.X = 13
  210.     $System_Drawing_Point.Y = 70
  211.     $dataGridView.Location = $System_Drawing_Point
  212.     $dataGridView.AllowUserToOrderColumns = $True
  213.     $dataGridView.add_CellContentDoubleClick($LaunchCompMgmt)
  214.     #$dataGridView.AutoResizeColumns([System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells]::AllCells)
  215.     #$DataGridViewAutoSizeColumnsMode.AllCells
  216.  
  217.     $form1.Controls.Add($dataGridView)
  218.  
  219.     $label2.Text = 'Machine List Path'
  220.  
  221.     $label2.DataBindings.DefaultDataSourceUpdateMode = 0
  222.     $label2.TabIndex = 7
  223.     $label2.Name = 'label2'
  224.     $System_Drawing_Size = New-Object System.Drawing.Size
  225.     $System_Drawing_Size.Width = 490
  226.     $System_Drawing_Size.Height = 23
  227.     $label2.Size = $System_Drawing_Size
  228.     $System_Drawing_Point = New-Object System.Drawing.Point
  229.     $System_Drawing_Point.X = 12
  230.     $System_Drawing_Point.Y = 7
  231.     $label2.Location = $System_Drawing_Point
  232.  
  233.     $form1.Controls.Add($label2)
  234.  
  235.     $statusBar.Name = 'statusBar'
  236.     $statusBar.DataBindings.DefaultDataSourceUpdateMode = 0
  237.     $statusBar.TabIndex = 4
  238.     $System_Drawing_Size = New-Object System.Drawing.Size
  239.     $System_Drawing_Size.Width = 428
  240.     $System_Drawing_Size.Height = 22
  241.     $statusBar.Size = $System_Drawing_Size
  242.     $System_Drawing_Point = New-Object System.Drawing.Point
  243.     $System_Drawing_Point.X = 0
  244.     $System_Drawing_Point.Y = 337
  245.     $statusBar.Location = $System_Drawing_Point
  246.     $statusBar.Text = 'Ready'
  247.  
  248.     $form1.Controls.Add($statusBar)
  249.  
  250.     $txtComputerList.Text = 'C:\Temp\Machine-List.txt'
  251.     $txtComputerList.Name = 'txtComputerList'
  252.     $txtComputerList.TabIndex = 0
  253.     $System_Drawing_Size = New-Object System.Drawing.Size
  254.     $System_Drawing_Size.Width = 198
  255.     $System_Drawing_Size.Height = 20
  256.     $txtComputerList.Size = $System_Drawing_Size
  257.     $System_Drawing_Point = New-Object System.Drawing.Point
  258.     $System_Drawing_Point.X = 13
  259.     $System_Drawing_Point.Y = 33
  260.     $txtComputerList.Location = $System_Drawing_Point
  261.     $txtComputerList.DataBindings.DefaultDataSourceUpdateMode = 0
  262.  
  263.     $form1.Controls.Add($txtComputerList)
  264.  
  265.     $form1.ShowDialog()| Out-Null
  266.  
  267. }
  268.  
  269. GenerateForm
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement