Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
RemoveCimInstanceCommand.cs387 linesDownload Raw Back to Microsoft.Management.Infrastructure.CimCmdlets
1// Copyright (c) Microsoft Corporation.2// Licensed under the MIT License.3 4#region Using directives5 6using System;7using System.Collections.Generic;8using System.Diagnostics.CodeAnalysis;9using System.Management.Automation;10 11#endregion12 13namespace Microsoft.Management.Infrastructure.CimCmdlets14{15    /// <summary>16    /// Enables the user to remove a CimInstance.17    /// </summary>18    [Alias("rcim")]19    [Cmdlet(20        VerbsCommon.Remove,21        "CimInstance",22        SupportsShouldProcess = true,23        DefaultParameterSetName = CimBaseCommand.CimInstanceComputerSet,24        HelpUri = "https://go.microsoft.com/fwlink/?LinkId=227964")]25    public class RemoveCimInstanceCommand : CimBaseCommand26    {27        #region constructor28 29        /// <summary>30        /// Initializes a new instance of the <see cref="RemoveCimInstanceCommand"/> class.31        /// </summary>32        public RemoveCimInstanceCommand()33            : base(parameters, parameterSets)34        {35            DebugHelper.WriteLogEx();36        }37 38        #endregion39 40        #region parameters41        /// <summary>42        /// The following is the definition of the input parameter "Session".43        /// CIM session used to remove the CIM Instance.44        /// </summary>45        [Parameter(46            Mandatory = true,47            ValueFromPipeline = true,48            ParameterSetName = CimBaseCommand.CimInstanceSessionSet)]49        [Parameter(50            Mandatory = true,51            ValueFromPipeline = true,52            ParameterSetName = CimBaseCommand.QuerySessionSet)]53        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]54        public CimSession[] CimSession55        {56            get57            {58                return cimSession;59            }60 61            set62            {63                cimSession = value;64                base.SetParameter(value, nameCimSession);65            }66        }67 68        private CimSession[] cimSession;69 70        /// <summary>71        /// <para>72        /// The following is the definition of the input parameter "ResourceUri".73        /// Define the Resource Uri for which the instances are retrieved.74        /// </para>75        /// </summary>76        [Parameter(ValueFromPipelineByPropertyName = true,77                   ParameterSetName = CimBaseCommand.CimInstanceComputerSet)]78        [Parameter(ValueFromPipelineByPropertyName = true,79                   ParameterSetName = CimBaseCommand.CimInstanceSessionSet)]80        public Uri ResourceUri81        {82            get83            {84                return resourceUri;85            }86 87            set88            {89                this.resourceUri = value;90                base.SetParameter(value, nameResourceUri);91            }92        }93 94        private Uri resourceUri;95 96        /// <summary>97        /// The following is the definition of the input parameter "ComputerName".98        /// </summary>99        [Alias(AliasCN, AliasServerName)]100        [Parameter(101            ValueFromPipelineByPropertyName = true,102            ParameterSetName = CimBaseCommand.QueryComputerSet)]103        [Parameter(104            ParameterSetName = CimBaseCommand.CimInstanceComputerSet)]105        [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")]106        public string[] ComputerName107        {108            get109            {110                return computername;111            }112 113            set114            {115                computername = value;116                base.SetParameter(value, nameComputerName);117            }118        }119 120        private string[] computername;121 122        /// <summary>123        /// The following is the definition of the input parameter "Namespace".124        /// The Namespace used to look for the Class instances under.125        /// </summary>126        [Parameter(127            Position = 1,128            ValueFromPipelineByPropertyName = true,129            ParameterSetName = CimBaseCommand.QuerySessionSet)]130        [Parameter(131            Position = 1,132            ValueFromPipelineByPropertyName = true,133            ParameterSetName = CimBaseCommand.QueryComputerSet)]134        public string Namespace135        {136            get137            {138                return nameSpace;139            }140 141            set142            {143                nameSpace = value;144                base.SetParameter(value, nameNamespace);145            }146        }147 148        private string nameSpace;149 150        /// <summary>151        /// The following is the definition of the input parameter "OperationTimeoutSec".152        /// Used to set the invocation operation time out. This value overrides the153        /// CimSession operation timeout.154        /// </summary>155        [Alias(AliasOT)]156        [Parameter]157        public uint OperationTimeoutSec { get; set; }158 159        /// <summary>160        /// The following is the definition of the input parameter "InputObject".161        /// Used to get a CimInstance using Get-CimInstance | Remove-CimInstance.162        /// </summary>163        [Parameter(164            Mandatory = true,165            Position = 0,166            ValueFromPipeline = true,167            ParameterSetName = CimBaseCommand.CimInstanceComputerSet)]168        [Parameter(169            Mandatory = true,170            Position = 0,171            ValueFromPipeline = true,172            ParameterSetName = CimBaseCommand.CimInstanceSessionSet)]173        [Alias(CimBaseCommand.AliasCimInstance)]174        public CimInstance InputObject175        {176            get177            {178                return CimInstance;179            }180 181            set182            {183                CimInstance = value;184                base.SetParameter(value, nameCimInstance);185            }186        }187 188        /// <summary>189        /// Property for internal usage purpose.190        /// </summary>191        internal CimInstance CimInstance { get; private set; }192 193        /// <summary>194        /// The following is the definition of the input parameter "Query".195        /// </summary>196        [Parameter(197            Mandatory = true,198            Position = 0,199            ValueFromPipelineByPropertyName = true,200            ParameterSetName = CimBaseCommand.QueryComputerSet)]201        [Parameter(202            Mandatory = true,203            Position = 0,204            ValueFromPipelineByPropertyName = true,205            ParameterSetName = CimBaseCommand.QuerySessionSet)]206        public string Query207        {208            get209            {210                return query;211            }212 213            set214            {215                query = value;216                base.SetParameter(value, nameQuery);217            }218        }219 220        private string query;221 222        /// <summary>223        /// The following is the definition of the input parameter "QueryDialect".224        /// Specifies the dialect used by the query Engine that interprets the Query225        /// string.226        /// </summary>227        [Parameter(ValueFromPipelineByPropertyName = true,228                   ParameterSetName = CimBaseCommand.QuerySessionSet)]229        [Parameter(ValueFromPipelineByPropertyName = true,230                   ParameterSetName = CimBaseCommand.QueryComputerSet)]231        public string QueryDialect232        {233            get234            {235                return querydialect;236            }237 238            set239            {240                querydialect = value;241                base.SetParameter(value, nameQueryDialect);242            }243        }244 245        private string querydialect;246 247        #endregion248 249        #region cmdlet methods250 251        /// <summary>252        /// BeginProcessing method.253        /// </summary>254        protected override void BeginProcessing()255        {256            CimRemoveCimInstance cimRemoveInstance = this.GetOperationAgent() ?? CreateOperationAgent();257 258            this.CmdletOperation = new CmdletOperationRemoveCimInstance(this, cimRemoveInstance);259            this.AtBeginProcess = false;260        }261 262        /// <summary>263        /// ProcessRecord method.264        /// </summary>265        protected override void ProcessRecord()266        {267            base.CheckParameterSet();268            CimRemoveCimInstance cimRemoveInstance = this.GetOperationAgent();269            cimRemoveInstance.RemoveCimInstance(this);270            cimRemoveInstance.ProcessActions(this.CmdletOperation);271        }272 273        /// <summary>274        /// EndProcessing method.275        /// </summary>276        protected override void EndProcessing()277        {278            CimRemoveCimInstance cimRemoveInstance = this.GetOperationAgent();279            cimRemoveInstance?.ProcessRemainActions(this.CmdletOperation);280        }281 282        #endregion283 284        #region helper methods285 286        /// <summary>287        /// <para>288        /// Get <see cref="CimRemoveCimInstance"/> object, which is289        /// used to delegate all Remove-CimInstance operations.290        /// </para>291        /// </summary>292        private CimRemoveCimInstance GetOperationAgent()293        {294            return this.AsyncOperation as CimRemoveCimInstance;295        }296 297        /// <summary>298        /// <para>299        /// Create <see cref="CimRemoveCimInstance"/> object, which is300        /// used to delegate all Remove-CimInstance operations.301        /// </para>302        /// </summary>303        /// <returns></returns>304        private CimRemoveCimInstance CreateOperationAgent()305        {306            CimRemoveCimInstance cimRemoveInstance = new();307            this.AsyncOperation = cimRemoveInstance;308            return cimRemoveInstance;309        }310 311        #endregion312 313        #region private members314 315        #region const string of parameter names316        internal const string nameCimSession = "CimSession";317        internal const string nameComputerName = "ComputerName";318        internal const string nameResourceUri = "ResourceUri";319        internal const string nameNamespace = "Namespace";320        internal const string nameCimInstance = "InputObject";321        internal const string nameQuery = "Query";322        internal const string nameQueryDialect = "QueryDialect";323        #endregion324 325        /// <summary>326        /// Static parameter definition entries.327        /// </summary>328        private static readonly Dictionary<string, HashSet<ParameterDefinitionEntry>> parameters = new()329        {330            {331                nameCimSession, new HashSet<ParameterDefinitionEntry> {332                                    new ParameterDefinitionEntry(CimBaseCommand.CimInstanceSessionSet, true),333                                    new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, true),334                                 }335            },336            {337                nameComputerName, new HashSet<ParameterDefinitionEntry> {338                                    new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, false),339                                    new ParameterDefinitionEntry(CimBaseCommand.CimInstanceComputerSet, false),340                                 }341            },342            {343                nameNamespace, new HashSet<ParameterDefinitionEntry> {344                                    new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, false),345                                    new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, false),346                                 }347            },348            {349                nameCimInstance, new HashSet<ParameterDefinitionEntry> {350                                    new ParameterDefinitionEntry(CimBaseCommand.CimInstanceComputerSet, true),351                                    new ParameterDefinitionEntry(CimBaseCommand.CimInstanceSessionSet, true),352                                 }353            },354            {355                nameQuery, new HashSet<ParameterDefinitionEntry> {356                                    new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, true),357                                    new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, true),358                                 }359            },360            {361                nameQueryDialect, new HashSet<ParameterDefinitionEntry> {362                                    new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, false),363                                    new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, false),364                                 }365            },366            {367                nameResourceUri, new HashSet<ParameterDefinitionEntry> {368                                    new ParameterDefinitionEntry(CimBaseCommand.CimInstanceComputerSet, false),369                                    new ParameterDefinitionEntry(CimBaseCommand.CimInstanceSessionSet, false),370                                 }371            },372        };373 374        /// <summary>375        /// Static parameter set entries.376        /// </summary>377        private static readonly Dictionary<string, ParameterSetEntry> parameterSets = new()378        {379            {   CimBaseCommand.CimInstanceComputerSet, new ParameterSetEntry(1, true)     },380            {   CimBaseCommand.CimInstanceSessionSet, new ParameterSetEntry(2)     },381            {   CimBaseCommand.QueryComputerSet, new ParameterSetEntry(1)     },382            {   CimBaseCommand.QuerySessionSet, new ParameterSetEntry(2)     },383        };384        #endregion385    }386}387