コード例 #1
0
        public static void EnumerateSync(CimSession cimSession, string cimNamespace, string cimClassName)
        {
            // Check Arguments
            if (cimNamespace == null)
            {
                throw new ArgumentNullException("cimNamespace");
            }

            if (cimClassName == null)
            {
                throw new ArgumentNullException("cimClassName");
            }

            try
            {
                IEnumerable <CimInstance> enumeratedInstances = cimSession.EnumerateInstances(cimNamespace, cimClassName);
                foreach (CimInstance cimInstance in enumeratedInstances)
                {
                    // Use the instance
                    PrintCimInstance(cimInstance);
                }
            }
            catch (CimException ex)
            {
                PrintCimException(ex);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #2
0
        /// <summary>
        /// Creates a new collection of <see cref="ComponentDescriptor"/> that describes
        /// the physical hard drives installed in the system associated <see cref="CimSession"/>.
        /// </summary>
        /// <param name="session">
        ///     A <see cref="CimSession session"/> used to access system details.
        /// </param>
        /// <returns>
        ///     The resulting collection of hard drive <see cref="ComponentDescriptor"/>s found.
        /// </returns>
        private static IEnumerable <ComponentDescriptor> GetHardDrives(CimSession session)
        {
            // Validate parameters.
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }


            IEnumerable <CimInstance> hddDetails = session.EnumerateInstances(@"root\cimv2", "Win32_DiskDrive");

            var results =
                hddDetails
                .Where(item => Convert.ToString(item.CimInstanceProperties["Name"].Value, CultureInfo.InvariantCulture).Contains("PHYSICAL"))
                .Select(item => new ComponentDescriptor()
            {
                Name =
                    String.Join(" ",
                                Convert.ToString(item.CimInstanceProperties["Model"].Value, CultureInfo.InvariantCulture),
                                Convert.ToInt32((((Convert.ToInt64(item.CimInstanceProperties["Size"].Value) / 1024f) / 1024f) / 1024f)) + "Gb"),
                Manufacturer = Convert.ToString(item.CimInstanceProperties["Manufacturer"].Value, CultureInfo.InvariantCulture).Trim(),
                Serial       = Convert.ToString(item.CimInstanceProperties["SerialNumber"].Value, CultureInfo.InvariantCulture).Trim(),
                Model        = Convert.ToString(item.CimInstanceProperties["Model"].Value, CultureInfo.InvariantCulture).Trim(),
                Category     = DescriptorCategories.HardDrive
            });

            return(results.ToList());
        }
コード例 #3
0
        public static void AddMembershipRule(string hostName, string userName, string passWord, string domain, string cmSite, string collectionId)
        {
            CimSession session = Connect(hostName, userName, passWord, domain);
            // Get All Collection
            //  Add Exception catching chain
            var collectionInstance = session.EnumerateInstances($"root\\sms\\site_{cmSite}", "SMS_Collection")
                                     .Where(i => i.CimInstanceProperties["CollectionId"].Value.ToString().Contains(collectionId)).ToList();

            if (!collectionInstance.Any())
            {
                return;
            }

            var ruleInstance = new CimInstance(session.GetClass($"root\\sms\\site_{cmSite}", "SMS_CollectionRuleDirect"));

            ruleInstance.CimInstanceProperties["RuleName"].Value          = "";
            ruleInstance.CimInstanceProperties["ResourceClassName"].Value = "SMS_R_System";
            ruleInstance.CimInstanceProperties["ResourceID"].Value        = 1;

            var parameters = new CimMethodParametersCollection
            {
                CimMethodParameter.Create("collectionRule", ruleInstance, CimType.Instance, 0)
            };
            CimMethodResult result = session.InvokeMethod(collectionInstance.FirstOrDefault(), "AddMembershipRule", parameters);
        }
コード例 #4
0
 private void UpdateCimInstance()
 {
     try
     {
         var enumerateInstances = _cimSession.EnumerateInstances(@"root\standardcimv2\embedded", "UWF_Filter");
         foreach (var enumerateInstance in enumerateInstances)
         {
             _cimInstance = enumerateInstance;
             break;
         }
     }
     catch (Exception e)
     {
         if (e.HResult == -2146233088)
         {
             try {
                 _cimSession.GetClass(@"root\standardcimv2\embedded", "UWF_Filter");
                 _noPermission = true;
                 return;
             } catch (Exception) { }
             Console.Error.WriteLine(e);
             Logger.Error(e);
             MessageBox.Show("Cannot find Unified Write Filter.\nPlease install Unified Write Filter then run this program again.", AppInfo.AppName, MessageBoxButtons.OK,
                             MessageBoxIcon.Error);
             Environment.Exit(1);
         }
         else
         {
             Console.Error.WriteLine(e);
             Logger.Fatal(e);
         }
     }
 }
コード例 #5
0
        /// <summary>
        /// Creates a new collection of <see cref="ComponentDescriptor"/> that describes
        /// the physical memory modules installed in the system associated <see cref="CimSession"/>.
        /// </summary>
        /// <param name="session">
        ///     A <see cref="CimSession session"/> used to access system details.
        /// </param>
        /// <returns>
        ///     The resulting collection of memory modules <see cref="ComponentDescriptor"/>s found.
        /// </returns>
        private static IEnumerable <ComponentDescriptor> GetMemory(CimSession session)
        {
            // Validate parameters.
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }

            IEnumerable <CimInstance> memoryDetails = session.EnumerateInstances(@"root\cimv2", "Win32_PhysicalMemory");

            var results =
                memoryDetails
                .Select(item => new ComponentDescriptor()
            {
                Serial = Convert.ToString(item.CimInstanceProperties["SerialNumber"].Value, CultureInfo.InvariantCulture),
                Name   =
                    String.Join(" ",
                                Convert.ToString(item.CimInstanceProperties["Manufacturer"].Value, CultureInfo.InvariantCulture).Trim(),
                                Convert.ToString(item.CimInstanceProperties["PartNumber"].Value, CultureInfo.InvariantCulture).Trim(),
                                Convert.ToString(item.CimInstanceProperties["ConfiguredClockSpeed"].Value, CultureInfo.InvariantCulture).Trim(),
                                (((Convert.ToInt64(item.CimInstanceProperties["Capacity"].Value) / 1024f) / 1024f) / 1024f) + "Gb"),
                Manufacturer = Convert.ToString(item.CimInstanceProperties["Manufacturer"].Value, CultureInfo.InvariantCulture),
                Model        = Convert.ToString(item.CimInstanceProperties["PartNumber"].Value, CultureInfo.InvariantCulture).Trim(),
                Category     = DescriptorCategories.Memory
            });

            return(results.ToList());
        }
コード例 #6
0
        /// <summary>
        /// This is the base function for getting CIM EnumeratedInstances
        /// </summary>
        public IEnumerable <CimInstance> GetEnumeratedInstances(string className, string cimNamespace, out CimInstance firstInstance)
        {
            CimSession mySession = CimSession.Create(LocalComputer);
            IEnumerable <CimInstance> instances = mySession.EnumerateInstances(namespaceName: cimNamespace, className: className);

            firstInstance = instances.FirstOrDefault();
            return(instances);
        }
コード例 #7
0
        public static IEnumerable <CimInstance> GetAllCollections(string hostName, string userName, string passWord, string domain, string cmSite, string collectionId)
        {
            CimSession session = Connect(hostName, userName, passWord, domain);

            // Get All Collection
            //  Add Exception catching chain
            return(session.EnumerateInstances($"root\\sms\\site_{cmSite}", "SMS_Collection")
                   .Where(i => i.CimInstanceProperties["CollectionId"].Value.ToString().Contains(collectionId)).ToList());
        }
コード例 #8
0
ファイル: MMIWrapper.cs プロジェクト: manupstairs/MMIExamples
        public void GetBIOSVersion()
        {
            CimSession cimSession = CimSession.Create("localhost");
            IEnumerable <CimInstance> enumeratedInstances =
                cimSession.EnumerateInstances(@"root\cimv2", "Win32_BIOS");

            var cimInstance = enumeratedInstances.FirstOrDefault();
            var biosVersion = cimInstance?.CimInstanceProperties["SMBIOSBIOSVersion"].Value.ToString();

            Console.WriteLine("{0}", biosVersion);
        }
コード例 #9
0
        /// <summary>
        /// Creates a new <see cref="AssetDescriptor"/> that describes the specified
        /// network host-name.
        /// </summary>
        /// <param name="hostName">
        ///     The network host-name that should be described.
        /// </param>
        /// <returns>
        ///     The resulting <see cref="AssetDescriptor"/> if successful.
        /// </returns>
        public static AssetDescriptor Create(string hostName)
        {
            CimSessionOptions sessionOptions = new CimSessionOptions()
            {
            };

            sessionOptions.AddDestinationCredentials(new CimCredential(ImpersonatedAuthenticationMechanism.Negotiate));
            CimSession session = CimSession.Create(hostName, sessionOptions);

            CimInstance computerDetails = session.EnumerateInstances(@"root\cimv2", "Win32_ComputerSystem").FirstOrDefault();
            CimInstance productDetails  = session.EnumerateInstances(@"root\cimv2", "Win32_ComputerSystemProduct").FirstOrDefault();

            return(new AssetDescriptor()
            {
                Serial = Convert.ToString(productDetails.CimInstanceProperties["IdentifyingNumber"].Value, CultureInfo.InvariantCulture),
                Name = Convert.ToString(computerDetails.CimInstanceProperties["Name"].Value, CultureInfo.InvariantCulture),
                Manufacturer = Convert.ToString(computerDetails.CimInstanceProperties["Manufacturer"].Value, CultureInfo.InvariantCulture),
                Model = String.Join(" ", computerDetails.CimInstanceProperties["Manufacturer"].Value, computerDetails.CimInstanceProperties["Model"].Value),
                ModelNumber = Convert.ToString(computerDetails.CimInstanceProperties["Model"].Value, CultureInfo.InvariantCulture),
                Category = pcSystemTypeExMap[Convert.ToInt32(computerDetails.CimInstanceProperties["PCSystemTypeEx"].Value, CultureInfo.InvariantCulture)]
            });
        }
コード例 #10
0
ファイル: MMIWrapper.cs プロジェクト: manupstairs/MMIExamples
        public void GetAssetTagAndExpressServiceCode()
        {
            CimSession cimSession = CimSession.Create("localhost");
            IEnumerable <CimInstance> enumeratedInstances =
                cimSession.EnumerateInstances(@"root\cimv2", "Win32_SystemEnclosure");

            var cimInstance = enumeratedInstances.FirstOrDefault();
            var assetTag    = cimInstance?.CimInstanceProperties["SerialNumber"].Value.ToString();

            Console.WriteLine("{0}", assetTag);
            var expressCode = BN2N(assetTag, 36);

            Console.WriteLine("{0}", expressCode);
        }
コード例 #11
0
        public static void showDriversList4()
        {
            try
            {
                CimSession cimSession = CimSession.Create("localhost");
                IEnumerable <CimInstance> enumeratedInstances = cimSession.EnumerateInstances(@"root\cimv2", "win32_PNPDeviceProperty");

                foreach (CimInstance cimInstance in enumeratedInstances)
                {
                    Console.WriteLine("{0}", cimInstance.CimInstanceProperties["Name"].Value.ToString());
                }
            }
            catch (CimException ex) { Console.WriteLine(ex.Message); }
        }
コード例 #12
0
        internal static List <CimInstance> GetAndPrintInstances(CimSession cimSession, string cimNamespace, string cimClassName)
        {
            IEnumerable <CimInstance> enumeratedInstances;

            try
            {
                enumeratedInstances = cimSession.EnumerateInstances(cimNamespace, cimClassName);
            }
            catch (CimException exception)
            {
                Console.WriteLine("Unable to get instances of class {0} in namespace {1}", cimClassName, cimNamespace);
                PrintCimException(exception);
                return(null);
            }

            List <CimInstance> list = new List <CimInstance>();
            int count = 0;

            foreach (var enumeratedInstance in enumeratedInstances)
            {
                list.Add(enumeratedInstance);
                bool bSingleton    = true;
                var  keyProperties = from p in enumeratedInstance.CimInstanceProperties where ((p.Flags & CimFlags.Key) == CimFlags.Key) select p;
                foreach (var enumeratedProperty in keyProperties)
                {
                    if (bSingleton)
                    {
                        bSingleton = false;
                    }
                    Console.WriteLine(
                        "Id: {0} : Name: {1}, Type: {2}, Value: {3}",
                        count,
                        enumeratedProperty.Name,
                        enumeratedProperty.CimType,
                        enumeratedProperty.Value);
                }
                if (bSingleton)
                {
                    Console.WriteLine("Id: {0}", count);
                }

                count++;
            }

            return(list);
        }
コード例 #13
0
        private static IEnumerable <CimModule> GetCimModules(CimSession cimSession, Uri resourceUri, string cimNamespace, string moduleNamePattern, bool onlyManifests, Cmdlet cmdlet, CancellationToken cancellationToken)
        {
            Func <CimModule, CimModule> selector        = null;
            WildcardPattern             wildcardPattern = new WildcardPattern(moduleNamePattern, WildcardOptions.CultureInvariant | WildcardOptions.IgnoreCase);
            string optionValue          = WildcardPatternToDosWildcardParser.Parse(wildcardPattern);
            CimOperationOptions options = new CimOperationOptions {
                CancellationToken = new CancellationToken?(cancellationToken)
            };

            options.SetCustomOption("PS_ModuleNamePattern", optionValue, false);
            if (resourceUri != null)
            {
                options.ResourceUri = resourceUri;
            }
            if (string.IsNullOrEmpty(cimNamespace) && (resourceUri == null))
            {
                cimNamespace = "root/Microsoft/Windows/Powershellv3";
            }
            IEnumerable <CimModule> source = from cimInstance in cimSession.EnumerateInstances(cimNamespace, "PS_Module", options)
                                             select new CimModule(cimInstance) into cimModule
                                             where wildcardPattern.IsMatch(cimModule.ModuleName)
                                             select cimModule;

            if (!onlyManifests)
            {
                if (selector == null)
                {
                    selector = delegate(CimModule cimModule) {
                        cimModule.FetchAllModuleFiles(cimSession, cimNamespace, options);
                        return(cimModule);
                    };
                }
                source = source.Select <CimModule, CimModule>(selector);
            }
            return(EnumerateWithCatch <CimModule>(source, delegate(Exception exception) {
                ErrorRecord errorRecord = GetErrorRecordForRemoteDiscoveryProvider(exception);
                if (!cmdlet.MyInvocation.ExpectingInput && (((-1 != errorRecord.FullyQualifiedErrorId.IndexOf("DiscoveryProviderNotFound", StringComparison.OrdinalIgnoreCase)) || cancellationToken.IsCancellationRequested) || ((exception is OperationCanceledException) || !cimSession.TestConnection())))
                {
                    cmdlet.ThrowTerminatingError(errorRecord);
                }
                cmdlet.WriteError(errorRecord);
            }));
        }
コード例 #14
0
ファイル: ListProcesses.cs プロジェクト: flounderK/csharp
        static void Main()
        {
            string             Namespace    = @"root\cimv2";
            string             ComputerName = "127.0.0.1";
            string             ClassName    = "Win32_Process";
            DComSessionOptions DComOptions  = new DComSessionOptions();

            DComOptions.Impersonation = ImpersonationType.Impersonate;

            CimSession Session = CimSession.Create(ComputerName, DComOptions);
            IEnumerable <CimInstance> processes = Session.EnumerateInstances(Namespace, ClassName);

            foreach (CimInstance process in processes)
            {
                Console.WriteLine("{0} {1} {2} {3}",
                                  process.CimInstanceProperties["Name"],
                                  process.CimInstanceProperties["ParentProcessId"],
                                  process.CimInstanceProperties["ProcessId"],
                                  process.CimInstanceProperties["CommandLine"]);
            }
            Console.ReadLine();
        }
コード例 #15
0
 private void UpdateCimInstance()
 {
     try {
         var enumerateInstances = _cimSession.EnumerateInstances(@"root\cimv2", "Win32_OperatingSystem");
         foreach (var enumerateInstance in enumerateInstances)
         {
             _cimInstance = enumerateInstance;
             break;
         }
     } catch (Exception e) {
         if (e.HResult == -2146233088)
         {
             Console.Error.WriteLine(e);
             Logger.Error(e);
         }
         else
         {
             Console.Error.WriteLine(e);
             Logger.Fatal(e);
         }
     }
 }
コード例 #16
0
        /// <summary>
        /// Creates a new collection of <see cref="ComponentDescriptor"/> that describes
        /// the physical processors installed in the system associated <see cref="CimSession"/>.
        /// </summary>
        /// <param name="session">
        ///     A <see cref="CimSession session"/> used to access system details.
        /// </param>
        /// <returns>
        ///     The resulting collection of processors <see cref="ComponentDescriptor"/>s found.
        /// </returns>
        private static IEnumerable <ComponentDescriptor> GetProcessors(CimSession session)
        {
            // Validate parameters.
            if (session == null)
            {
                throw new ArgumentNullException("session");
            }

            IEnumerable <CimInstance> processorDetails = session.EnumerateInstances(@"root\cimv2", "Win32_Processor");

            var results =
                processorDetails
                .Where(item => Convert.ToString(item.CimInstanceProperties["ProcessorType"].Value, CultureInfo.InvariantCulture).Contains("3"))
                .Select(item => new ComponentDescriptor()
            {
                Serial       = Convert.ToString(item.CimInstanceProperties["ProcessorId"].Value, CultureInfo.InvariantCulture),
                Name         = Convert.ToString(item.CimInstanceProperties["Name"].Value, CultureInfo.InvariantCulture),
                Manufacturer = Convert.ToString(item.CimInstanceProperties["Manufacturer"].Value, CultureInfo.InvariantCulture),
                Model        = Convert.ToString(item.CimInstanceProperties["Name"].Value, CultureInfo.InvariantCulture),
                Category     = DescriptorCategories.Processor
            });

            return(results.ToList());
        }
コード例 #17
0
        private static IEnumerable <CimModule> GetCimModules(
            CimSession cimSession,
            Uri resourceUri,
            string cimNamespace,
            string moduleNamePattern,
            bool onlyManifests,
            Cmdlet cmdlet,
            CancellationToken cancellationToken)
        {
            Dbg.Assert(cimSession != null, "Caller should verify cimSession != null");
            Dbg.Assert(moduleNamePattern != null, "Caller should verify that moduleNamePattern != null");

            const WildcardOptions wildcardOptions = WildcardOptions.IgnoreCase | WildcardOptions.CultureInvariant;
            var    wildcardPattern = WildcardPattern.Get(moduleNamePattern, wildcardOptions);
            string dosWildcard     = WildcardPatternToDosWildcardParser.Parse(wildcardPattern);

            var options = new CimOperationOptions {
                CancellationToken = cancellationToken
            };

            options.SetCustomOption("PS_ModuleNamePattern", dosWildcard, mustComply: false);
            if (resourceUri != null)
            {
                options.ResourceUri = resourceUri;
            }

            if (string.IsNullOrEmpty(cimNamespace) && (resourceUri == null))
            {
                cimNamespace = DiscoveryProviderNamespace;
            }

            // TODO/FIXME: ETW for method invocation
            IEnumerable <CimInstance> syncResults = cimSession.EnumerateInstances(
                cimNamespace,
                DiscoveryProviderModuleClass,
                options);
            // TODO/FIXME: ETW for method results
            IEnumerable <CimModule> cimModules = syncResults
                                                 .Select(cimInstance => new CimModule(cimInstance))
                                                 .Where(cimModule => wildcardPattern.IsMatch(cimModule.ModuleName));

            if (!onlyManifests)
            {
                cimModules = cimModules.Select(
                    delegate(CimModule cimModule)
                {
                    cimModule.FetchAllModuleFiles(cimSession, cimNamespace, options);
                    return(cimModule);
                });
            }

            return(EnumerateWithCatch(
                       cimModules,
                       delegate(Exception exception)
            {
                ErrorRecord errorRecord = GetErrorRecordForRemoteDiscoveryProvider(exception);
                if (!cmdlet.MyInvocation.ExpectingInput)
                {
                    if (((-1) != errorRecord.FullyQualifiedErrorId.IndexOf(DiscoveryProviderNotFoundErrorId, StringComparison.OrdinalIgnoreCase)) ||
                        (cancellationToken.IsCancellationRequested || (exception is OperationCanceledException)) ||
                        (!cimSession.TestConnection()))
                    {
                        cmdlet.ThrowTerminatingError(errorRecord);
                    }
                }
                cmdlet.WriteError(errorRecord);
            }));
        }