Thaiadmin

รบกวนสอบถาม Script PowerShell

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ ths

  • *****
  • 242
  • 0
รบกวนสอบถาม Script PowerShell
« เมื่อ: 10 สิงหาคม 2012, 13:10:59 »
พอดีผมไปเจอ Script PowerShell เพื่อนำมาเช็ค Status Server UP/Down ซึ่งดาวน์โหลดมาไม่แน่ใจว่าต้องแก้ไข ServerName, IP Address ตรงไหนบ้างอ่ะครับ ตัวอย่าง Script PowerShell ด้านล่างครับ

<######################################################################
#                                                    
# Author       : Bhavik Solanki                              
# Date         : 28th March 2012                           
# Version      : 1.0                                    
# Desctiption  : This script will help to monitor Server availability.
#                                                   
######################################################################>
Function GetStatusCode
{
   Param([int] $StatusCode) 
   switch($StatusCode)
   {
      0       {"Success"}
      11001   {"Buffer Too Small"}
      11002   {"Destination Net Unreachable"}
      11003   {"Destination Host Unreachable"}
      11004   {"Destination Protocol Unreachable"}
      11005   {"Destination Port Unreachable"}
      11006   {"No Resources"}
      11007   {"Bad Option"}
      11008   {"Hardware Error"}
      11009   {"Packet Too Big"}
      11010   {"Request Timed Out"}
      11011   {"Bad Request"}
      11012   {"Bad Route"}
      11013   {"TimeToLive Expired Transit"}
      11014   {"TimeToLive Expired Reassembly"}
      11015   {"Parameter Problem"}
      11016   {"Source Quench"}
      11017   {"Option Too Big"}
      11018   {"Bad Destination"}
      11032   {"Negotiating IPSEC"}
      11050   {"General Failure"}
      default {"Failed"}
   }
}

Function GetUpTime
{
   param([string] $LastBootTime)
   $Uptime = (Get-Date) - [System.Management.ManagementDateTimeconverter]::ToDateTime($LastBootTime)
   "Days: $($Uptime.Days); Hours: $($Uptime.Hours); Minutes: $($Uptime.Minutes); Seconds: $($Uptime.Seconds)"
}

#Change value of the following parameter as needed
$OutputFile = "D:\Output.htm"
$ServerList = Get-Content "D:\ServerList.txt"

$Result = @()
Foreach($ServerName in $ServerList)
{
   $pingStatus = Get-WmiObject -Query "Select * from win32_PingStatus where Address='$ServerName'"
      
   $Uptime = $null
   if($pingStatus.StatusCode -eq 0)
   {
      $OperatingSystem = Get-WmiObject Win32_OperatingSystem -ComputerName $ServerName -ErrorAction SilentlyContinue
      $Uptime = GetUptime( $OperatingSystem.LastBootUpTime )
   }
   
    $Result += New-Object PSObject -Property @{
       ServerName = $ServerName
      IPV4Address = $pingStatus.IPV4Address
      Status = GetStatusCode( $pingStatus.StatusCode )
      Uptime = $Uptime
   }
}

if($Result -ne $null)
{
   $HTML = '<style type="text/css">
   #Header{font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;width:100%;border-collapse:collapse;}
   #Header td, #Header th {font-size:14px;border:1px solid #98bf21;padding:3px 7px 2px 7px;}
   #Header th {font-size:14px;text-align:left;padding-top:5px;padding-bottom:4px;background-color:#A7C942;color:#fff;}
   #Header tr.alt td {color:#000;background-color:#EAF2D3;}
   </Style>'

    $HTML += "<HTML><BODY><Table border=1 cellpadding=0 cellspacing=0 id=Header>
      <TR>
         <TH><B>Server Name</B></TH>
         <TH><B>IP Address</B></TD>
         <TH><B>Status</B></TH>
         <TH><B>Uptime</B></TH>
      </TR>"
    Foreach($Entry in $Result)
    {
        if($Entry.Status -ne "Success")
      {
         $HTML += "<TR bgColor=Red>"
      }
      else
      {
         $HTML += "<TR>"
      }
      $HTML += "
                  <TD>$($Entry.ServerName)</TD>
                  <TD>$($Entry.IPV4Address)</TD>
                  <TD>$($Entry.Status)</TD>
                  <TD>$($Entry.Uptime)</TD>
               </TR>"
    }
    $HTML += "</Table></BODY></HTML>"

   $HTML | Out-File $OutputFile
}
« แก้ไขครั้งสุดท้าย: 10 สิงหาคม 2012, 14:31:02 โดย ths »
กลุ่มผู้ดูแลระบบแห่งประเทศไทย ขอระงับการใช้ลายเซ็นต์รูปภาพ
อนุญาตให้ใช้ได้เพียง ลายเซ็นต์ที่เป็นข้อความ
จึงประกาศมาเพื่อขอความร่วมมือ จากสมาชิกทุกๆ ท่าน
ในนาม กลุ่มผู้ดูแลระบบแห่งประเทศไทย

Re: รบกวนสอบถาม Script PowerShell
« ตอบกลับ #1 เมื่อ: 7 ธันวาคม 2014, 16:29:01 »
ขอบคุณครับท่าน

ออฟไลน์ เนทแอดมิน ม.6

  • *****
  • 707
  • 17
  • เพศ: ชาย
  • www.sagurai.com
    • แบ่งปันความรู้ และประสบการณ์
Re: รบกวนสอบถาม Script PowerShell
« ตอบกลับ #2 เมื่อ: 9 ธันวาคม 2014, 13:03:11 »
ตรงบรรทัด
$ServerList = Get-Content "D:\ServerList.txt"

ต้องสร้างไฟล์ไว้ตามที่ต้องการครับ