/*============================================================================ * Copyright (c) Microsoft Corporation. All rights reserved. *============================================================================ */ #region Using directives using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Management.Automation; #endregion namespace Microsoft.Management.Infrastructure.CimCmdlets { /// /// Enables the user to remove a CimInstance. /// [Cmdlet( VerbsCommon.Remove, "CimInstance", SupportsShouldProcess=true, DefaultParameterSetName = CimBaseCommand.CimInstanceComputerSet, HelpUri = "https://go.microsoft.com/fwlink/?LinkId=227964")] public class RemoveCimInstanceCommand : CimBaseCommand { #region constructor /// /// constructor /// public RemoveCimInstanceCommand() : base(parameters, parameterSets) { DebugHelper.WriteLogEx(); } #endregion #region parameters /// /// The following is the definition of the input parameter "Session". /// CIM session used to remove the CIM Instance. /// [Parameter( Mandatory = true, ValueFromPipeline = true, ParameterSetName = CimBaseCommand.CimInstanceSessionSet)] [Parameter( Mandatory = true, ValueFromPipeline = true, ParameterSetName = CimBaseCommand.QuerySessionSet)] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] public CimSession[] CimSession { get { return cimSession; } set { cimSession = value; base.SetParameter(value, nameCimSession); } } private CimSession[] cimSession; /// /// /// The following is the definition of the input parameter "ResourceUri". /// Define the Resource Uri for which the instances are retrieved. /// /// [Parameter(ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.CimInstanceComputerSet)] [Parameter(ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.CimInstanceSessionSet)] public Uri ResourceUri { get { return resourceUri; } set { this.resourceUri = value; base.SetParameter(value, nameResourceUri); } } private Uri resourceUri; /// /// The following is the definition of the input parameter "ComputerName". /// [Alias(AliasCN, AliasServerName)] [Parameter( ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QueryComputerSet)] [Parameter( ParameterSetName = CimBaseCommand.CimInstanceComputerSet)] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] public String[] ComputerName { get { return computername; } set { computername = value; base.SetParameter(value, nameComputerName); } } private String[] computername; /// /// The following is the definition of the input parameter "Namespace". /// The Namespace used to look for the Class instances under. /// [Parameter( Position = 1, ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QuerySessionSet)] [Parameter( Position = 1, ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QueryComputerSet)] public String Namespace { get { return nameSpace; } set { nameSpace = value; base.SetParameter(value, nameNamespace); } } private String nameSpace; /// /// The following is the definition of the input parameter "OperationTimeoutSec". /// Used to set the invocation operation time out. This value overrides the /// CimSession operation timeout. /// [Alias(AliasOT)] [Parameter] public UInt32 OperationTimeoutSec { get { return operationTimeout;} set { operationTimeout = value; } } private UInt32 operationTimeout; /// /// The following is the definition of the input parameter "InputObject". /// Used to get a CimInstance using Get-CimInstance | Remove-CimInstance. /// [Parameter( Mandatory = true, Position = 0, ValueFromPipeline = true, ParameterSetName = CimBaseCommand.CimInstanceComputerSet)] [Parameter( Mandatory = true, Position = 0, ValueFromPipeline = true, ParameterSetName = CimBaseCommand.CimInstanceSessionSet)] [Alias(CimBaseCommand.AliasCimInstance)] public CimInstance InputObject { get { return cimInstance; } set { cimInstance = value; base.SetParameter(value, nameCimInstance); } } /// /// Property for internal usage purpose /// internal CimInstance CimInstance { get { return cimInstance; } } private CimInstance cimInstance; /// /// The following is the definition of the input parameter "Query". /// [Parameter( Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QueryComputerSet)] [Parameter( Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QuerySessionSet)] public String Query { get { return query;} set { query = value; base.SetParameter(value, nameQuery); } } private String query; /// /// The following is the definition of the input parameter "QueryDialect". /// Specifies the dialect used by the query Engine that interprets the Query /// string. /// [Parameter(ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QuerySessionSet)] [Parameter(ValueFromPipelineByPropertyName = true, ParameterSetName = CimBaseCommand.QueryComputerSet)] public String QueryDialect { get { return querydialect;} set { querydialect = value; base.SetParameter(value, nameQueryDialect); } } private String querydialect; #endregion #region cmdlet methods /// /// BeginProcessing method. /// protected override void BeginProcessing() { CimRemoveCimInstance cimRemoveInstance = this.GetOperationAgent(); if (cimRemoveInstance == null) { cimRemoveInstance = CreateOperationAgent(); } this.CmdletOperation = new CmdletOperationRemoveCimInstance(this, cimRemoveInstance); this.AtBeginProcess = false; }//End BeginProcessing() /// /// ProcessRecord method. /// protected override void ProcessRecord() { base.CheckParameterSet(); CimRemoveCimInstance cimRemoveInstance = this.GetOperationAgent(); cimRemoveInstance.RemoveCimInstance(this); cimRemoveInstance.ProcessActions(this.CmdletOperation); }//End ProcessRecord() /// /// EndProcessing method. /// protected override void EndProcessing() { CimRemoveCimInstance cimRemoveInstance = this.GetOperationAgent(); if (cimRemoveInstance != null) { cimRemoveInstance.ProcessRemainActions(this.CmdletOperation); } }//End EndProcessing() #endregion #region helper methods /// /// /// Get object, which is /// used to delegate all Remove-CimInstance operations. /// /// CimRemoveCimInstance GetOperationAgent() { return (this.AsyncOperation as CimRemoveCimInstance); } /// /// /// Create object, which is /// used to delegate all Remove-CimInstance operations. /// /// /// CimRemoveCimInstance CreateOperationAgent() { CimRemoveCimInstance cimRemoveInstance = new CimRemoveCimInstance(); this.AsyncOperation = cimRemoveInstance; return cimRemoveInstance; } #endregion #region private members #region const string of parameter names internal const string nameCimSession = "CimSession"; internal const string nameComputerName = "ComputerName"; internal const string nameResourceUri = "ResourceUri"; internal const string nameNamespace = "Namespace"; internal const string nameCimInstance = "InputObject"; internal const string nameQuery = "Query"; internal const string nameQueryDialect = "QueryDialect"; #endregion /// /// static parameter definition entries /// static Dictionary> parameters = new Dictionary> { { nameCimSession, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.CimInstanceSessionSet, true), new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, true), } }, { nameComputerName, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, false), new ParameterDefinitionEntry(CimBaseCommand.CimInstanceComputerSet, false), } }, { nameNamespace, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, false), new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, false), } }, { nameCimInstance, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.CimInstanceComputerSet, true), new ParameterDefinitionEntry(CimBaseCommand.CimInstanceSessionSet, true), } }, { nameQuery, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, true), new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, true), } }, { nameQueryDialect, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.QuerySessionSet, false), new ParameterDefinitionEntry(CimBaseCommand.QueryComputerSet, false), } }, { nameResourceUri, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.CimInstanceComputerSet, false), new ParameterDefinitionEntry(CimBaseCommand.CimInstanceSessionSet, false), } }, }; /// /// static parameter set entries /// static Dictionary parameterSets = new Dictionary { { CimBaseCommand.CimInstanceComputerSet, new ParameterSetEntry(1, true) }, { CimBaseCommand.CimInstanceSessionSet, new ParameterSetEntry(2) }, { CimBaseCommand.QueryComputerSet, new ParameterSetEntry(1) }, { CimBaseCommand.QuerySessionSet, new ParameterSetEntry(2) }, }; #endregion }//End Class }//End namespace