SCVMM 2008 : C# and the SDK

All i wanted to do was to run SCVMM cmdlets from within my C# Application, here's my example on how to get this done,

=============================================

using System;

using System.Collections.ObjectModel;

using System.Collections.Generic;

using System.Text;

using System.Management;

using System.Management.Automation;

using System.Management.Automation.Runspaces;

namespace blogsvcmm

{

class Program

{

static void Main(string[] args)

{

// supplyin SCVMM Server Name as Parameter

string vmserver = "imanlab2";

// This is two line script

// we could provision this to be read from DB or a file

string scriptText = "$vmserver=Get-VMMServer " +vmserver +"\n";

scriptText = scriptText + "echo $vmserver";

RunspaceConfiguration runSpaceConfig = RunspaceConfiguration.Create();

PSSnapInException snapInException = null;

PSSnapInInfo info = runSpaceConfig.AddPSSnapIn("Microsoft.SystemCenter.VirtualMachineManager", out snapInException);

Runspace rspace = RunspaceFactory.CreateRunspace(runSpaceConfig);

rspace.Open();

Pipeline pipeline = rspace.CreatePipeline();

pipeline.Commands.AddScript(scriptText);

pipeline.Commands.Add("Out-String");

Collection<PSObject> results = null;

try

{

results = pipeline.Invoke();

}

catch (Exception p)

{

Console.WriteLine(p.Message);

}

rspace.Close();

StringBuilder stringBuilder = new StringBuilder();

foreach (PSObject obj in results)

{

stringBuilder.AppendLine(obj.ToString());

}

Console.WriteLine(stringBuilder.ToString());

Console.WriteLine("\n Press Any key to exit");

Console.ReadLine();

}

}

}

=============

Sample Output

=============

Name : <scvmmserver>

IsConnected : True

ServerInterfaceVersion : 2.0.0

Profile : Administrator

FullyQualifiedDomainName : <scvmmserver fqdn>

FQDN : <scvmmserver fqdn>

Channel : Microsoft.VirtualManager.Remoting.IVirtualManager

Service

ObjectCache : \Microsoft.SystemCenter.VirtualMachineManager.Clie

ntCache

MOMReportingEnabled : False

OpsMgrReportingEnabled : False

MOMReportingServerURL :

OpsMgrReportingServerURL :

OpsMgrServer :

SelfServiceContactEmail :

PlacementGoal : LoadBalance

MemoryPriority : 8

DiskIOPriority : 2

CPUPriority : 8

NetworkPriority : 2

CEIPOptIn : True

VMRCAccessAccount :

VMRCDefaultPort : 5900

VMConnectDefaultPort : 2179

MinimumSupportedAgentVersion : 2.0.3444.0

LibraryRefresherEnabled : True

LibraryRefresherFrequency : 1

PROMonitoringLevel : Off

PROAutomationLevel : Off

PhysicalAddressRangeStart : 00:1D:D8:B7:1C:00

PhysicalAddressRangeEnd : 00:1D:D8:F4:1F:FF

DatabaseServerName : <scvmmserver fqdn>

DatabaseInstanceName : MICROSOFT$VMM$

DatabaseName : VirtualManagerDB

UserName : Windows User

CompanyName :

ProductVersion : 2.0.3444.0

ProductID : 00683-030-3201177-82230

IsEvaluationVersion : False

IsWorkgroupEdition : False

EvaluationDaysLeft : 0

Hope you find this post useful, Cheers !!!

Jeevan Bisht : Support Escalation Engineer