// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft. All rights reserved.
namespace Microsoft.Samples.HyperV.Networking
{
using System;
using System.Management;
using System.Globalization;
using Microsoft.Samples.HyperV.Common;
static class DeleteSwitchSample
{
///
/// Deletes the specified switch. Note that this can be used to delete any type of switch.
/// Any ports connected to external or internal resources are also deleted.
///
/// The name of the switch to delete.
static void
DeleteSwitch(
string switchName)
{
ManagementScope scope = new ManagementScope(@"root\virtualization\v2");
//
// Find the switch that we want to delete.
//
using (ManagementObject ethernetSwitch = NetworkingUtilities.FindEthernetSwitch(switchName, scope))
//
// Now that we have the switch object we can delete it.
//
using (ManagementObject switchService = NetworkingUtilities.GetEthernetSwitchManagementService(scope))
using (ManagementBaseObject inParams = switchService.GetMethodParameters("DestroySystem"))
{
inParams["AffectedSystem"] = ethernetSwitch.Path.Path;
using (ManagementBaseObject outParams = switchService.InvokeMethod("DestroySystem", inParams, null))
{
WmiUtilities.ValidateOutput(outParams, scope);
}
}
Console.WriteLine(string.Format(CultureInfo.CurrentCulture,
"The switch '{0}' was deleted successfully.", switchName));
}
///
/// Entry point for the DeleteSwitch sample.
///
/// The command line arguments.
internal static void
ExecuteSample(
string[] args)
{
if (args.Length != 1 || (args.Length > 0 && args[0] == "/?"))
{
Console.WriteLine("Usage: DeleteSwitch SwitchName\n");
Console.WriteLine("Example: DeleteSwitch MySwitch");
return;
}
try
{
DeleteSwitch(args[0]);
}
catch (Exception ex)
{
Console.WriteLine("Failed to delete the switch. Error message details:\n");
Console.WriteLine(ex.Message);
}
}
}
}