iLO or DRAC

Does anyone know how I can remotely use a batch/vb/powershell script to turn on a bunch of servers using the HP iLO and also the Dell DRAC??  
LVL 11
loftywormAsked:
Who is Participating?
 
BSonPoshCommented:
Here is the Magic packet script. I will have to wait till tomorrow to get the CLI stuff.

It requires the MAC address but that should easy to get.
########################################################################################
param ($macString = $(throw 'mac address is required'),
       [switch]$verbose)
if($verbose){$verbosePreference = "continue"}
if($macString -notmatch ":")
{
    Write-Verbose "Converting $macstring to Mac Address"
    $macaddy = import-csv $table | ?{$_.Name -match $macString} | %{$_.Mac}
    Write-Verbose "Converted to $macaddy"
}
else
{
    $macaddy = $macString
}
 
$mac = $macaddy.split(':') | %{ [byte]('0x' + $_) }
 
if ($mac.Length -ne 6)
{
    throw 'mac address must be 6 hex numbers separated by :'
}
Write-Verbose "Creating UDP Packet"
$UDPclient = new-Object System.Net.Sockets.UdpClient
$UDPclient.Connect(([System.Net.IPAddress]::Broadcast),4000)
$packet = [byte[]](,0xFF * 6)
$packet += $mac * 16
Write-Verbose ([bitconverter]::tostring($packet))
[void] $UDPclient.Send($packet, $packet.Length)
Write-Verbose "Wake-On-Lan magic packet of length $($packet.Length) sent to $macString"
########################################################################################

Open in new window

0
 
Jay_Jay70Commented:
they are web based applications that you need to log on to - i cant imagine there is any way to do this via wmi or anything like that
0
 
BSonPoshCommented:
You can.. and I have a powershell script that does just that (at least HP.)

You can use the HP CLI or send the Magic Packet.

whats your preference... the magic packet should work for both.
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
loftywormAuthor Commented:
Both please, as this is a learning experience, I will have to see which one works best in our environment.  I am pretty sure Dell has a similar command line thing, do you know that one?

btw, magic packet is a new term for me, what is that?
0
 
Jay_Jay70Commented:
thats unreal, i am very keen to see that script
0
 
BSonPoshCommented:
I will post it a few... spending time with the wife atm :)

Magic Packet
http://en.wikipedia.org/wiki/Wake-on-LAN
0
 
BSonPoshCommented:
Here is my Invoke-iLOCommand.ps1 file. It requires CMDLets from nsoftware. If you dont want to use those you can use plink.exe

nSoftware
http://www.nsoftware.com/powershell/

Plink.exe
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Basically this will send any command you want to the iLO.
In your case
Invoke-iLOCommand.ps1 -cmd "Power On" -server x
# requires snapin Netcmdlets
# Invoke-iLOCommand
Param($cmd = $(throw '$CMD is Required'),
      $list,
      $server,
      $creds = $(Get-Credential),
      $filter = ".*"
      )
	function Ping-Server {
		Param([string]$srv)
		$pingresult = Get-WmiObject win32_pingstatus -f "address='$srv'"
		if($pingresult.statuscode -eq 0) {$true} else {$false}
	}
Write-Host
 
if(!$list -and !$Server){Write-Host "You must Provide a List of Servers or a Server" -fore Yellow}
 
if($list)
{
    if(Test-Path $list)
    {
        foreach($server in (get-Content $list))
        {
            if(Ping-Server $Server)
            {
                Write-Host " + Invoking Command:[$cmd] on Server:[$Server]" -Fore Green
                $result = Invoke-SSH -command $cmd -Server $server -Credential $creds -force 
                $result = $result | Foreach-Object{$_.Text.Split("`n")} | Where-Object{$_ -match $filter}
                $result
            }
            else
            {
                Write-Host "Ping of Server [$Server] Failed" -fore Red
            }
            Write-Host
        }
    }
    else
    {
        Write-Host "Invalid List File [$list]"  -fore Red
    }
}
 
if($server)
{
    if(Ping-Server $Server)
    {
        $result = Invoke-SSH -command $cmd -Server $server -Credential $creds -force 
        $result = $result | Foreach-Object{$_.Text.Split("`n")} | Where-Object{$_ -match $filter}
        $result
    }
    else
    {
        Write-Host "Ping of Server [$Server] Failed"  -fore Red
    }
}
Write-Host

Open in new window

0
 
loftywormAuthor Commented:
Thank you :)  I will read into this toady.  Does anyone have any additions for the Dell DRAC?
0
 
Jay_Jay70Commented:
that is freakin unreal - especially as i am about to buy a 16 blade enclosure running ILO cards - you have my thanks big time :) very cool
0
 
BSonPoshCommented:
Your welcome. :)
0
 
loftywormAuthor Commented:
Only half of my question, but a great answer all the same, ty :)
0
 
Charlesll4Commented:
How can the above Powershell script be used with Plink.exe?
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.