Eaton UPS Power Failure Critical Recovery
EatonPROManagementPack.UPSPowerFailureCriticalRecovery (Recovery)
Element properties:
Member Modules:
Source Code:
<Recovery ID="EatonPROManagementPack.UPSPowerFailureCriticalRecovery" Accessibility="Public" Enabled="false" Target="MicrosoftSystemCenterVirtualMachineManagerPro2008Library!Microsoft.SystemCenter.VirtualMachineManager.Pro.2008.Server" Monitor="EatonPROManagementPack.UPSPowerFailureCriticalMonitor" ResetMonitor="false" ExecuteOnState="Error" Remotable="true" Timeout="300">
<Category>Custom</Category>
<WriteAction ID="UpdatPROTipRecoveryCritical" TypeID="System!System.CommandExecuter">
<ApplicationName>%SystemRoot%\system32\windowspowershell\v1.0\powershell.exe</ApplicationName>
<WorkingDirectory/>
<CommandLine>"& '$file/ImplementActionScriptCritical.ps1$' '$Data/StateChange/DataItem/EventOriginId$' '$Target/Property[Type="MicrosoftSystemCenterVirtualMachineManagerPro2008Library!Microsoft.SystemCenter.VirtualMachineManager.Pro.2008.Base"]/VMMServer$' '$Data/StateChange/DataItem/Context/DataItem/EventDescription$' "</CommandLine>
<TimeoutSeconds>600</TimeoutSeconds>
<RequireOutput>true</RequireOutput>
<Files>
<File>
<Name>ImplementActionScriptCritical.ps1</Name>
<Contents><Script>
# this PowerShell Script is expecting the following 3 parameters
Param($ProtipId, $VMMServerName, $EventData);
add-pssnapin Microsoft.SystemCenter.VirtualMachineManager
#$Error.Clear()
# get a connection to the VMM server
$c = get-vmmserver -ComputerName $VMMServerName
$tip=Set-PROTip -PROTipId $ProtipId -TipStatus Running;
Write-Output "Script is running Pro tip id" + $ProtipId >> C:\test.txt
# if ($Error.Count -ne 0)
# {
# CreateEventLogGenericError "Failed to get a connection to #the VMM server host: " + $Error[0]
# return;
# }
$date=Get-Date
Write-Output $date >> C:\test.txt
Write-Output $EventData >> C:\test.txt
$EventSplit=$EventData.split(":")
$Arg1=$EventSplit[0]
$Arg2=$EventSplit[1]
Write-Output " Hostname " + $Arg1 >> C:\test.txt
Write-Output " Msg " + $Arg2 >> C:\test.txt
#connect to host
$VMHost = Get-VMHost -ComputerName $Arg1
if($VMHost.OverallState -ne "MaintenanceMode")
{
if(($VMHost.SupportsLiveMigration) -and ($VMHost.VirtualizationPlatform -ne "VMWareESX"))
{
Disable-VMHost $VMHost -MoveWithinCluster
}
else
{
Disable-VMHost $VMHost
}
}
Write-Output "Script has already run,Pro tip id" + $ProtipId >> C:\test.txt
$tip=Set-PROTip -PROTipId $ProtipId -TipStatus Resolved;
Write-Output "Script is resolved Pro tip id" + $ProtipId >> C:\test.txt
</Script></Contents>
</File>
</Files>
</WriteAction>
</Recovery>