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