Team Ai
Datasetpublic

MegaBites-AI/Windows-powershell

sourceHugging Facemitupdated 6mo agoView on Hugging Face
0likes372downloads
CimGetAssociatedInstance.cs138 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.Collections.Generic;7 8#endregion9 10namespace Microsoft.Management.Infrastructure.CimCmdlets11{12    /// <summary>13    /// <para>14    /// Implements operations of get-AssociatedInstance cmdlet.15    /// </para>16    /// </summary>17    internal sealed class CimGetAssociatedInstance : CimAsyncOperation18    {19        /// <summary>20        /// Initializes a new instance of the <see cref="CimGetAssociatedInstance"/> class.21        /// </summary>22        public CimGetAssociatedInstance()23            : base()24        {25        }26 27        /// <summary>28        /// <para>29        /// Base on parametersetName to retrieve associated ciminstances30        /// </para>31        /// </summary>32        /// <param name="cmdlet"><see cref="GetCimInstanceCommand"/> object.</param>33        public void GetCimAssociatedInstance(GetCimAssociatedInstanceCommand cmdlet)34        {35            IEnumerable<string> computerNames = ConstValue.GetComputerNames(cmdlet.ComputerName);36            // use the namespace from parameter37            string nameSpace = cmdlet.Namespace;38            if ((nameSpace == null) && (cmdlet.ResourceUri == null))39            {40                // try to use namespace of ciminstance, then fall back to default namespace41                nameSpace = ConstValue.GetNamespace(cmdlet.CimInstance.CimSystemProperties.Namespace);42            }43 44            List<CimSessionProxy> proxys = new();45            switch (cmdlet.ParameterSetName)46            {47                case CimBaseCommand.ComputerSetName:48                    foreach (string computerName in computerNames)49                    {50                        CimSessionProxy proxy = CreateSessionProxy(computerName, cmdlet.CimInstance, cmdlet);51                        proxys.Add(proxy);52                    }53 54                    break;55                case CimBaseCommand.SessionSetName:56                    foreach (CimSession session in cmdlet.CimSession)57                    {58                        CimSessionProxy proxy = CreateSessionProxy(session, cmdlet);59                        proxys.Add(proxy);60                    }61 62                    break;63                default:64                    return;65            }66 67            foreach (CimSessionProxy proxy in proxys)68            {69                proxy.EnumerateAssociatedInstancesAsync(70                    nameSpace,71                    cmdlet.CimInstance,72                    cmdlet.Association,73                    cmdlet.ResultClassName,74                    null,75                    null);76            }77        }78 79        #region private methods80 81        /// <summary>82        /// <para>83        /// Set <see cref="CimSessionProxy"/> properties84        /// </para>85        /// </summary>86        /// <param name="proxy"></param>87        /// <param name="cmdlet"></param>88        private static void SetSessionProxyProperties(89            ref CimSessionProxy proxy,90            GetCimAssociatedInstanceCommand cmdlet)91        {92            proxy.OperationTimeout = cmdlet.OperationTimeoutSec;93            proxy.KeyOnly = cmdlet.KeyOnly;94            if (cmdlet.ResourceUri != null)95            {96                proxy.ResourceUri = cmdlet.ResourceUri;97            }98        }99 100        /// <summary>101        /// <para>102        /// Create <see cref="CimSessionProxy"/> and set properties103        /// </para>104        /// </summary>105        /// <param name="computerName"></param>106        /// <param name="cimInstance"></param>107        /// <param name="cmdlet"></param>108        /// <returns></returns>109        private CimSessionProxy CreateSessionProxy(110            string computerName,111            CimInstance cimInstance,112            GetCimAssociatedInstanceCommand cmdlet)113        {114            CimSessionProxy proxy = CreateCimSessionProxy(computerName, cimInstance);115            SetSessionProxyProperties(ref proxy, cmdlet);116            return proxy;117        }118 119        /// <summary>120        /// Create <see cref="CimSessionProxy"/> and set properties.121        /// </summary>122        /// <param name="session"></param>123        /// <param name="cmdlet"></param>124        /// <returns></returns>125        private CimSessionProxy CreateSessionProxy(126            CimSession session,127            GetCimAssociatedInstanceCommand cmdlet)128        {129            CimSessionProxy proxy = CreateCimSessionProxy(session);130            SetSessionProxyProperties(ref proxy, cmdlet);131            return proxy;132        }133 134        #endregion135 136    }137}138