HOWTO: Power on your IPMI connected computer using PowerShell
Microsoft PowerShell Home Lab
Published on 25 April 2016 by Christopher Lewis. Words: 416. Reading Time: 2 mins.
As part of my VMware home lab setup I wanted to be able to run a PowerCLI/PowerShell script to Power On/Off my hosts as required. The first objective was being able to power the hosts on using their IPMI interfaces.
Thankfully the Microsoft PowerShell has something that does the job quite nicely called Physical Computer System View (PCSV) Device Cmdlets.
Using Get-PcsvDevice
Using the Get-PcsvDevice
command interactively will require you to provide an IP Address/Hostname, a protocol (such as IPMI) and a set of credentials.
Just using Get-PcsvDevice <ip address>
will immediately prompt you to provide with the Windows PowerShell credential request dialog.
Even when you get passed this initial dialog, you will then need to supply the Management Protocol to be used.
However, within a PowerShell script, you can easily provide all the relevant information on a command line.
Get-PcsvDevice –TargetAddress <ipmi ip> –ManagementProtocol IPMI –Credential <credentialobject>
Whoa wait a second, How do I pass Credential Object? Well that’s easy… I’ll call my PSCredential object $Credential
$Credential = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList = <user id>, <encrypted password>
Whoa wait another goddamn second, how do i created an encrypted password to be able to create the credential object to be able to power on my server via IPMI? Well that’s easy too… I’ll call my password object $EncryptedPassword.
$EncryptedPassword = ConvertTo-SecureString –String "<password>" –AsPlainText –Force
Putting that all together within a PowerShell script, it may look something like this:
$EncryptedPassword = ConvertTo-SecureString -String "$Password" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $EncryptedPassword
Get-PcsvDevice -TargetAddress $IPAddress -ManagementProtocol IPMI -Credential $Credential
Now like most PowerShell cmdlets you use a combination of Get-PcsvDevice and pipe the output into Start-PcsvDevice
, Restart-PcsvDevice
or Stop-PcsvDevice
. If you then also add some text out to the console to show what your actually doing… it may end up looking like this.
Function StartHost ([string]$ServerName, [string]$IPAddress, [string]$Password, [string]$User)
{
$EncryptedPassword = ConvertTo-SecureString -String "$Password" -AsPlainText -Force
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, $EncryptedPassword
Write-Host "Powering on $ServerName using IPMI ($IPAddress)" -ForegroundColor Green
Get-PcsvDevice -TargetAddress $IPAddress -ManagementProtocol IPMI -Credential $Credential | Start-PcsvDevice
}
To call that function within the PowerShell script you would just use:
StartHost "<host name>" "<IPMI address>" "<user>" "<password>"
Note: the
I’m sure the PowerShell Wizards may be able to make the above code more efficient, but for my homelab environment at my current PowerShell skill level, it does the job (as part of a wider homelab startup script).
Published on 25 April 2016 by Christopher Lewis. Words: 416. Reading Time: 2 mins.
- Book Review: VMware vSphere PowerCLI Reference: Automating vSphere Administration - 2nd Edition ()
- Part 4 - Enabling the new Certificate Templates ()
- Part 3B - Creating the Microsoft CA Template for Subordinate CA certificates in vSphere 6.0 ()
- Part 3A - Creating the Microsoft CA Template for SSL certificates in vSphere 6.0 ()
- Part 2 - Configuring an Enterprise Root Certificate Authority ()
- Operating a Private Cloud - Part 3: Creating a Pricing Card in VMware Aria Automation
- Operating a Private Cloud - Part 2: Creating a Pricing Card in VMware Aria Operations
- Operating a Private Cloud - Part 1: Understanding Pricing Cards in VMware Aria
- Zero2Hero - Using Aria Automation to Deploy Multiple Machines with Multiple Disks - Part 5
- Zero2Hero - Using Aria Automation to Deploy Multiple Machines with Multiple Disks - Part 4