Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
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