// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. #region Using directives using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using System.Management.Automation; #endregion /****************************************************************************** * warning 28750: Banned usage of lstrlen and its variants: lstrlenW is a * banned API for improved error handling purposes. *****************************************************************************/ namespace Microsoft.Management.Infrastructure.CimCmdlets { /// /// This Cmdlet allows the to remove, or terminate, one or more CimSession(s). /// [Cmdlet(VerbsCommon.Remove, "CimSession", SupportsShouldProcess = true, DefaultParameterSetName = CimSessionSet, HelpUri = "https://go.microsoft.com/fwlink/?LinkId=227968")] public sealed class RemoveCimSessionCommand : CimBaseCommand { #region constructor /// /// Constructor. /// public RemoveCimSessionCommand() : base(parameters, parameterSets) { } #endregion #region parameters /// /// The following is the definition of the input parameter "CimSession". /// Specifies one or more CimSession object to be removed from the local PS /// session/runspace. /// [Parameter( Mandatory = true, Position = 0, ValueFromPipeline = true, ValueFromPipelineByPropertyName = true, ParameterSetName = CimSessionSet)] [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 "ComputerName". /// Specified one or more computer names for which all CimSession(s) /// (connections) should be removed (terminated). /// This is the only optional parameter. If no value for this parameter is /// provided, all CimSession(s) are terminated. /// [Alias(AliasCN, AliasServerName)] [Parameter( Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = ComputerNameSet)] [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 "Id". /// Specifies the friendly Id(s) of the CimSession(s) that should be removed /// (terminated). /// [Parameter(Mandatory = true, Position = 0, ValueFromPipelineByPropertyName = true, ParameterSetName = SessionIdSet)] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] public UInt32[] Id { get { return id; } set { id = value; base.SetParameter(value, nameId); } } private UInt32[] id; /// /// The following is the definition of the input parameter "InstanceId". /// Specifies one or more automatically generated InstanceId(s) (GUIDs) of the /// CimSession(s) that should be removed (terminated). /// [Parameter( Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = InstanceIdSet)] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] public Guid[] InstanceId { get { return instanceid; } set { instanceid = value; base.SetParameter(value, nameInstanceId); } } private Guid[] instanceid; /// /// The following is the definition of the input parameter "Name". /// Specifies one or more of friendly Names of the CimSession(s) that should be /// removed (terminated). /// [Parameter( Mandatory = true, ValueFromPipelineByPropertyName = true, ParameterSetName = NameSet)] [SuppressMessage("Microsoft.Performance", "CA1819:PropertiesShouldNotReturnArrays")] public string[] Name { get { return name; } set { name = value; base.SetParameter(value, nameName); } } private string[] name; #endregion /// /// BeginProcessing method. /// protected override void BeginProcessing() { this.cimRemoveSession = new CimRemoveSession(); this.AtBeginProcess = false; } /// /// ProcessRecord method. /// protected override void ProcessRecord() { base.CheckParameterSet(); this.cimRemoveSession.RemoveCimSession(this); } #region private members /// /// object used to remove the session from /// session cache. /// private CimRemoveSession cimRemoveSession; #region const string of parameter names internal const string nameCimSession = "CimSession"; internal const string nameComputerName = "ComputerName"; internal const string nameId = "Id"; internal const string nameInstanceId = "InstanceId"; internal const string nameName = "Name"; #endregion /// /// Static parameter definition entries. /// static Dictionary> parameters = new Dictionary> { { nameCimSession, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.CimSessionSet, true), } }, { nameComputerName, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.ComputerNameSet, true), } }, { nameId, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.SessionIdSet, true), } }, { nameInstanceId, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.InstanceIdSet, true), } }, { nameName, new HashSet { new ParameterDefinitionEntry(CimBaseCommand.NameSet, true), } }, }; /// /// Static parameter set entries. /// static Dictionary parameterSets = new Dictionary { { CimBaseCommand.CimSessionSet, new ParameterSetEntry(1, true) }, { CimBaseCommand.ComputerNameSet, new ParameterSetEntry(1) }, { CimBaseCommand.SessionIdSet, new ParameterSetEntry(1) }, { CimBaseCommand.InstanceIdSet, new ParameterSetEntry(1) }, { CimBaseCommand.NameSet, new ParameterSetEntry(1) }, }; #endregion } }