// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. #region Using directives using System.Collections; using System; using System.Collections.Generic; using System.Diagnostics; #endregion namespace Microsoft.Management.Infrastructure.CimCmdlets { /// /// Containing all necessary information originated from /// the parameters of /// internal class CimRemoveCimInstanceContext : XOperationContextBase { /// /// /// Constructor /// /// /// /// internal CimRemoveCimInstanceContext(string theNamespace, CimSessionProxy theProxy) { this.proxy = theProxy; this.nameSpace = theNamespace; } } /// /// /// Implements operations of remove-ciminstance cmdlet. /// /// internal sealed class CimRemoveCimInstance : CimGetInstance { /// /// /// Constructor /// /// public CimRemoveCimInstance() : base() { } /// /// /// Base on parametersetName to retrieve ciminstances /// /// /// object. public void RemoveCimInstance(RemoveCimInstanceCommand cmdlet) { DebugHelper.WriteLogEx(); IEnumerable computerNames = ConstValue.GetComputerNames( GetComputerName(cmdlet)); List proxys = new List(); switch (cmdlet.ParameterSetName) { case CimBaseCommand.CimInstanceComputerSet: foreach (string computerName in computerNames) { proxys.Add(CreateSessionProxy(computerName, cmdlet.CimInstance, cmdlet)); } break; case CimBaseCommand.CimInstanceSessionSet: foreach (CimSession session in GetCimSession(cmdlet)) { proxys.Add(CreateSessionProxy(session, cmdlet)); } break; default: break; } switch (cmdlet.ParameterSetName) { case CimBaseCommand.CimInstanceComputerSet: case CimBaseCommand.CimInstanceSessionSet: string nameSpace = null; if (cmdlet.ResourceUri != null) { nameSpace = GetCimInstanceParameter(cmdlet).CimSystemProperties.Namespace; } else { nameSpace = ConstValue.GetNamespace(GetCimInstanceParameter(cmdlet).CimSystemProperties.Namespace); } string target = cmdlet.CimInstance.ToString(); foreach (CimSessionProxy proxy in proxys) { if (!cmdlet.ShouldProcess(target, action)) { return; } proxy.DeleteInstanceAsync(nameSpace, cmdlet.CimInstance); } break; case CimBaseCommand.QueryComputerSet: case CimBaseCommand.QuerySessionSet: GetCimInstanceInternal(cmdlet); break; default: break; } } /// /// /// Remove from namespace specified in cmdlet /// /// /// internal void RemoveCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase cmdlet) { DebugHelper.WriteLogEx(); string target = cimInstance.ToString(); if (!cmdlet.ShouldProcess(target, action)) { return; } CimRemoveCimInstanceContext removeContext = context as CimRemoveCimInstanceContext; Debug.Assert(removeContext != null, "CimRemoveCimInstance::RemoveCimInstance should has CimRemoveCimInstanceContext != NULL."); CimSessionProxy proxy = CreateCimSessionProxy(removeContext.Proxy); proxy.DeleteInstanceAsync(removeContext.Namespace, cimInstance); } #region const strings /// /// Action. /// private const string action = @"Remove-CimInstance"; #endregion } }