AlertMailSMTPSecure.psm1
<#
.SYNOPSIS Retrieves HPe ILO SMTP Secure Email Connection Setting on ILO 5. .DESCRIPTION Retrieves HPe ILO SMTP Secure Email Connection Setting on ILO 5 only. Not Applicable to ILO 4 and lower; will return Not Attempted. Returns an object of Hostname and AlertMailSMTPSecureEnabled. Requires Credential Object generated from Get-Credential. Requires Module HPERedfishCmdlets: https://www.powershellgallery.com/packages/HPERedfishCmdlets/1.0.0.2 Optionally sends a test email when complete. .PARAMETER ILO FQDN of ILO(s). .PARAMETER Credential PSCredential generated from Get-Credential. .PARAMETER TestEmail Use if a post configuration test email is desired. .OUTPUTS PSCUSTOMOBJECT SupSkiFun.SMTPSecureEnabledInfo .LINK https://www.powershellgallery.com/packages/HPERedfishCmdlets/1.0.0.2 .EXAMPLE Get AlertMailSMTPSecureEnabled setting for one host: $creds = Get-Credential Get-AlertMailSMTPSecure -ILO MyHost-ilo.example.com -Credential $creds .EXAMPLE Get AlertMailSMTPSecureEnabled setting for two hosts, returning object into a variable, sending a test email when complete: $creds = Get-Credential $MyVar = Get-AlertMailSMTPSecure -ILO Host01ilo , Host02ilo -Credential $creds -TestEmail .NOTES These functions were written as a "stop-gap" measure until HPEiLOCmdlets contains an update to the Get/Set HPEilLOAlertMailSetting. The current version (2.0.0.1) of the HPEilLOAlertMailSetting Cmdlets appears to use an ILO4 class, which doesn't contain a property for AlertMailSMTPSecure. This is a property on ILO5 which can be read / altered via REST/Redish. Ideally this "function"-ality (ugh) will be incorporated in a future HPe release, obviating the need for the functions in this module. These functions were written and tested using HPERedfishCmdlets Version 1.0.0.2. #> function Get-AlertMailSMTPSecure { [CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string[]]$ILO, [Alias("Name")] [Parameter(Mandatory = $true)] [pscredential]$Credential, [Parameter(Mandatory = $false)] [switch]$TestEmail ) Process { foreach ($i in $ilo) { #Error Checking Anyone? $c = Connect-HPERedfish -Address $i -Credential $credential $m = Get-HPERedfishDataRaw -Odataid '/redfish/v1/managers/' -Session $c # Loop for more members? $md = Get-HPERedfishDataRaw -Odataid $m.Members.'@odata.id' -Session $c $iv = $md.FirmwareVersion.Split()[1] if($iv -ne "5") { $loopobj = [pscustomobject]@{ HostName = $i AlertMailSMTPSecureEnabled = "Not attempted - ILO $iv detected" } $loopobj.PSObject.TypeNames.Insert(0,'SupSkiFun.SMTPSecureEnabledInfo') $loopobj } else { $ns = Get-HPERedfishDataRaw -Odataid $md.NetworkProtocol.'@odata.id' -Session $c $g = Get-HPERedfishDataRaw -Odataid $md.NetworkProtocol.'@odata.id' -Session $c $loopobj = [pscustomobject]@{ HostName = $i AlertMailSMTPSecureEnabled = ($g.oem.hpe.AlertMailSMTPSecureEnabled).ToString().Trim() } $loopobj.PSObject.TypeNames.Insert(0,'SupSkiFun.SMTPSecureEnabledInfo') $loopobj } if($TestEmail -and $iv -eq "5") { Invoke-HPERedfishAction -Odataid $ns.Oem.Hpe.Actions.'#HpeiLOManagerNetworkService.SendTestAlertMail'.target -Session $c | Out-Null } Disconnect-HPERedfish -Session $c } } } <# .SYNOPSIS Enables or Disables HPe ILO SMTP Secure Email Connection Setting on ILO 5. .DESCRIPTION Enables or Disables HPe ILO SMTP Secure Email Connection Setting on ILO 5 only. Not Applicable to ILO 4 and lower; will return Not Attempted. Future: Will need to modify for ILO 6. Returns an object of Hostname, Result, and AlertMailSMTPSecureEnabled. Requires Credential Object generated from Get-Credential. Requires Module HPERedfishCmdlets: https://www.powershellgallery.com/packages/HPERedfishCmdlets/1.0.0.2 Optionally sends a test email when complete. If enabling secure, the mail relay must accept secure connections. .PARAMETER ILO FQDN of ILO(s). .PARAMETER Credential PSCredential generated from Get-Credential. .PARAMETER State State to set AlertMailSMTPSecureEnabled. Enabled or Disabled. .PARAMETER TestEmail Use if a post configuration test email is desired. .OUTPUTS PSCUSTOMOBJECT SupSkiFun.SMTPSecureEnabledInfo .LINK https://www.powershellgallery.com/packages/HPERedfishCmdlets/1.0.0.2 .EXAMPLE Set AlertMailSMTPSecureEnabled for one host to true (enabled): $creds = Get-Credential Set-AlertMailSMTPSecure -ILO MyHost-ilo.example.com -Credential $creds -State Enabled .EXAMPLE Set AlertMailSMTPSecureEnabled for two hosts to false (disabled), returning object into a variable, sending a test email when complete: $creds = Get-Credential $MyVar = Set-AlertMailSMTPSecure -ILO Host01ilo , Host02ilo -Credential $creds -State Disabled -TestEmail .NOTES These functions were written as a "stop-gap" measure until HPEiLOCmdlets contains an update to the Get/Set HPEilLOAlertMailSetting. The current version (2.0.0.1) of the HPEilLOAlertMailSetting Cmdlets appears to use an ILO4 class, which doesn't contain a property for AlertMailSMTPSecure. This is a property on ILO5 which can be read / altered via REST/Redish. Ideally this "function"-ality (ugh) will be incorporated in a future HPe release, obviating the need for the functions in this module. These functions were written and tested using HPERedfishCmdlets Version 1.0.0.2. #> function Set-AlertMailSMTPSecure { [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact='high')] param ( [Parameter(Mandatory = $true)] [string[]]$ILO, [Alias("Name")] [Parameter(Mandatory = $true)] [pscredential]$Credential, [Parameter(Mandatory = $true)] [ValidateSet("Enabled" , "Disabled")] [string]$State, [Parameter(Mandatory = $false)] [switch]$TestEmail ) Begin { if($state -eq "Enabled") { $s = $true } elseif($state -eq "Disabled") { $s = $false } else { Write-Output "State to set undetermined. Terminating." } $z = @{"AlertMailSMTPSecureEnabled" = $s} $y = @{"Hpe" = $z} $x = @{"Oem" = $y } } Process { foreach ($i in $ilo) { #Error Checking At Some Point if($PSCmdlet.ShouldProcess("$i to $($state)")) { $c = Connect-HPERedfish -Address $i -Credential $credential $m = Get-HPERedfishDataRaw -Odataid '/redfish/v1/managers/' -Session $c $md = Get-HPERedfishDataRaw -Odataid $m.Members.'@odata.id' -Session $c # Loop for more members? $iv = $md.FirmwareVersion.Split()[1] if($iv -ne "5") { $loopobj = [pscustomobject]@{ HostName = $i Result = "Not Attempted; ILO $iv detected" AlertMailSMTPSecureEnabled = "Only Valid for ILO 5" } $loopobj.PSObject.TypeNames.Insert(0,'SupSkiFun.SMTPSecureEnabledInfo') $loopobj } else { $ns = Get-HPERedfishDataRaw -Odataid $md.NetworkProtocol.'@odata.id' -Session $c $r = Set-HPERedfishData -Odataid $ns.'@odata.id' -Setting $x -Session $c $g = Get-HPERedfishDataRaw -Odataid $md.NetworkProtocol.'@odata.id' -Session $c $loopobj = [pscustomobject]@{ HostName = $i Result = ($r.error.'@Message.ExtendedInfo').MessageId.ToString().Trim() AlertMailSMTPSecureEnabled = ($g.oem.hpe.AlertMailSMTPSecureEnabled).ToString().Trim() } $loopobj.PSObject.TypeNames.Insert(0,'SupSkiFun.SMTPSecureEnabledInfo') $loopobj } if($TestEmail -and $iv -eq "5") { Invoke-HPERedfishAction -Odataid $ns.Oem.Hpe.Actions.'#HpeiLOManagerNetworkService.SendTestAlertMail'.target -Session $c | Out-Null } Disconnect-HPERedfish -Session $c } } } } |