MegaBites-AI/Windows-powershell
0372
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4#region Using directives5 6using System.Collections.Generic;7using System.Diagnostics;8 9#endregion10 11namespace Microsoft.Management.Infrastructure.CimCmdlets12{13 /// <summary>14 /// Containing all necessary information originated from15 /// the parameters of <see cref="RemoveCimInstanceCommand"/>16 /// </summary>17 internal class CimRemoveCimInstanceContext : XOperationContextBase18 {19 /// <summary>20 /// Initializes a new instance of the <see cref="CimRemoveCimInstanceContext"/> class.21 /// </summary>22 /// <param name="theNamespace"></param>23 /// <param name="theProxy"></param>24 internal CimRemoveCimInstanceContext(string theNamespace,25 CimSessionProxy theProxy)26 {27 this.proxy = theProxy;28 this.nameSpace = theNamespace;29 }30 }31 32 /// <summary>33 /// <para>34 /// Implements operations of remove-ciminstance cmdlet.35 /// </para>36 /// </summary>37 internal sealed class CimRemoveCimInstance : CimGetInstance38 {39 /// <summary>40 /// Initializes a new instance of the <see cref="CimRemoveCimInstance"/> class.41 /// </summary>42 public CimRemoveCimInstance()43 : base()44 {45 }46 47 /// <summary>48 /// <para>49 /// Base on parametersetName to retrieve ciminstances50 /// </para>51 /// </summary>52 /// <param name="cmdlet"><see cref="GetCimInstanceCommand"/> object.</param>53 public void RemoveCimInstance(RemoveCimInstanceCommand cmdlet)54 {55 DebugHelper.WriteLogEx();56 57 IEnumerable<string> computerNames = ConstValue.GetComputerNames(58 GetComputerName(cmdlet));59 List<CimSessionProxy> proxys = new();60 switch (cmdlet.ParameterSetName)61 {62 case CimBaseCommand.CimInstanceComputerSet:63 foreach (string computerName in computerNames)64 {65 proxys.Add(CreateSessionProxy(computerName, cmdlet.CimInstance, cmdlet));66 }67 68 break;69 case CimBaseCommand.CimInstanceSessionSet:70 foreach (CimSession session in GetCimSession(cmdlet))71 {72 proxys.Add(CreateSessionProxy(session, cmdlet));73 }74 75 break;76 default:77 break;78 }79 80 switch (cmdlet.ParameterSetName)81 {82 case CimBaseCommand.CimInstanceComputerSet:83 case CimBaseCommand.CimInstanceSessionSet:84 string nameSpace = null;85 if (cmdlet.ResourceUri != null)86 {87 nameSpace = GetCimInstanceParameter(cmdlet).CimSystemProperties.Namespace;88 }89 else90 {91 nameSpace = ConstValue.GetNamespace(GetCimInstanceParameter(cmdlet).CimSystemProperties.Namespace);92 }93 94 string target = cmdlet.CimInstance.ToString();95 foreach (CimSessionProxy proxy in proxys)96 {97 if (!cmdlet.ShouldProcess(target, action))98 {99 return;100 }101 102 proxy.DeleteInstanceAsync(nameSpace, cmdlet.CimInstance);103 }104 105 break;106 case CimBaseCommand.QueryComputerSet:107 case CimBaseCommand.QuerySessionSet:108 GetCimInstanceInternal(cmdlet);109 break;110 default:111 break;112 }113 }114 115 /// <summary>116 /// <para>117 /// Remove <see cref="CimInstance"/> from namespace specified in cmdlet118 /// </para>119 /// </summary>120 /// <param name="cimInstance"></param>121 internal void RemoveCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase cmdlet)122 {123 DebugHelper.WriteLogEx();124 125 string target = cimInstance.ToString();126 if (!cmdlet.ShouldProcess(target, action))127 {128 return;129 }130 131 CimRemoveCimInstanceContext removeContext = context as CimRemoveCimInstanceContext;132 Debug.Assert(removeContext != null, "CimRemoveCimInstance::RemoveCimInstance should has CimRemoveCimInstanceContext != NULL.");133 134 CimSessionProxy proxy = CreateCimSessionProxy(removeContext.Proxy);135 proxy.DeleteInstanceAsync(removeContext.Namespace, cimInstance);136 }137 138 #region const strings139 /// <summary>140 /// Action.141 /// </summary>142 private const string action = @"Remove-CimInstance";143 #endregion144 }145}146 