VKernel Shutdown VM Action

VKernel.CapacityAnalyzer.PRO.PowerShellShutdownVm (WriteActionModuleType)

Element properties:

TypeWriteActionModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
InputTypeSystem.BaseData

Member Modules:

ID Module Type TypeId RunAs 
PSShutdownVmAction WriteAction Microsoft.Windows.PowerShellPropertyBagWriteAction Default

Overrideable Parameters:

IDParameterTypeSelector
VmIdstring$Config/VmId$
VmmServerNamestring$Config/VmmServerName$

Source Code:

<WriteActionModuleType ID="VKernel.CapacityAnalyzer.PRO.PowerShellShutdownVm" Accessibility="Internal" Batching="false">
<Configuration>
<xsd:element minOccurs="1" name="VmId" type="xsd:string"/>
<xsd:element minOccurs="1" name="VmmServerName" type="xsd:string"/>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="VmId" Selector="$Config/VmId$" ParameterType="string"/>
<OverrideableParameter ID="VmmServerName" Selector="$Config/VmmServerName$" ParameterType="string"/>
</OverrideableParameters>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<WriteAction ID="PSShutdownVmAction" TypeID="Windows!Microsoft.Windows.PowerShellPropertyBagWriteAction">
<ScriptName>PowerShellShutdownVm.ps1</ScriptName>
<ScriptBody><Script>
Param($VmmServerName, $VmId)

$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop;
$oAPI = new-object -comObject "MOM.ScriptAPI";
$bag = $oAPI.CreatePropertyBag();

Import-Module VirtualMachineManager

Get-VMMServer -computername $VmmServerName;

$vm= Get-VM -ID $VmId;
$vmStatus = $vm.Status;
if ($vmStatus -eq [Microsoft.VirtualManager.Utils.VMComputerSystemState]::Running)
{
if ($vm.HasVMAdditions -eq $False)
{
$bag.AddValue("Error", "Virtual Guest Services are not installed");
$bag;
break;
}
Shutdown-VM -VM $vm;
}
trap
{
$oAPI.LogScriptEvent("PowerShutdownVm.ps1", 101, 1, $_.Exception.Message);
break;
}

$bag
</Script></ScriptBody>
<Parameters>
<Parameter>
<Name>VmmServerName</Name>
<Value>$Config/VmmServerName$</Value>
</Parameter>
<Parameter>
<Name>VmId</Name>
<Value>$Config/VmId$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>1800</TimeoutSeconds>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="PSShutdownVmAction"/>
</Composition>
</Composite>
</ModuleImplementation>
<InputType>System!System.BaseData</InputType>
</WriteActionModuleType>