VKernel Set VM Property Action

VKernel.CapacityAnalyzer.PRO.PowerShellSetVmProperty (WriteActionModuleType)

Element properties:

TypeWriteActionModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
InputTypeSystem.BaseData

Member Modules:

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

Overrideable Parameters:

IDParameterTypeSelector
PropertyNamestring$Config/PropertyName$
PropertyValuestring$Config/PropertyValue$
VmIdstring$Config/VmId$
VmmServerNamestring$Config/VmmServerName$

Source Code:

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

$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;

if ($vm.$($PropertyName) -ne $PropertyValue)
{
$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;
}

iex "Set-VM -VM $vm -$($PropertyName) $PropertyValue";

if ($vmStatus -eq [Microsoft.VirtualManager.Utils.VMComputerSystemState]::Running)
{
Start-VM -VM $vm;
}
}
trap [Exception]
{
$oAPI.LogScriptEvent("SetVmProperty.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>
<Parameter>
<Name>PropertyName</Name>
<Value>$Config/PropertyName$</Value>
</Parameter>
<Parameter>
<Name>PropertyValue</Name>
<Value>$Config/PropertyValue$</Value>
</Parameter>
</Parameters>
<TimeoutSeconds>1800</TimeoutSeconds>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="PSSetVmProperty"/>
</Composition>
</Composite>
</ModuleImplementation>
<InputType>System!System.BaseData</InputType>
</WriteActionModuleType>