コード例 #1
0
        /// <summary>
        /// Converts the <paramref name="sourceValue"/> parameter to the <paramref name="destinationType"/> parameter using formatProvider and ignoreCase.
        /// </summary>
        /// <param name="sourceValue">The value to convert from.</param>
        /// <param name="destinationType">The type to convert to.</param>
        /// <param name="formatProvider">The format provider to use like in IFormattable's ToString.</param>
        /// <param name="ignoreCase">True if case should be ignored.</param>
        /// <returns>The <paramref name="sourceValue"/> parameter converted to the <paramref name="destinationType"/> parameter using formatProvider and ignoreCase.</returns>
        /// <exception cref="InvalidCastException">If no conversion was possible.</exception>
        public override object ConvertFrom(object sourceValue, Type destinationType, IFormatProvider formatProvider, bool ignoreCase)
        {
            if (destinationType == null)
            {
                throw new ArgumentNullException("destinationType");
            }

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

            ScheduledJobTrigger originalTrigger = (ScheduledJobTrigger)sourceValue;

            using (CimSession cimSession = CimSession.Create(null))
            {
                switch (originalTrigger.Frequency)
                {
                case TriggerFrequency.Weekly:
                    return(ConvertToWeekly(originalTrigger, cimSession));

                case TriggerFrequency.Once:
                    return(ConvertToOnce(originalTrigger, cimSession));

                case TriggerFrequency.Daily:
                    return(ConvertToDaily(originalTrigger, cimSession));

                case TriggerFrequency.AtStartup:
                    return(ConvertToAtStartup(originalTrigger, cimSession));

                case TriggerFrequency.AtLogon:
                    return(ConvertToAtLogon(originalTrigger, cimSession));

                case TriggerFrequency.None:
                    return(ConvertToDefault(originalTrigger, cimSession));

                default:
                    string errorMsg = StringUtil.Format(ScheduledJobErrorStrings.UnknownTriggerFrequency,
                                                        originalTrigger.Frequency.ToString());
                    throw new PSInvalidOperationException(errorMsg);
                }
            }
        }
コード例 #2
0
        private static HvVirtualMachine GetVirtualMachine(string hvHostMachine, Guid vmGuid)
        {
            var vms = new List <HvVirtualMachine>();

            var options = new CimSessionOptions();

            using (var session = CimSession.Create(hvHostMachine, options))
            {
                var vmQuery         = string.Format("SELECT * FROM Msvm_ComputerSystem WHERE Name = '{0}'", vmGuid.ToString());
                var cimOpsOptions   = new CimOperationOptions();
                var computerSystems = session.QueryInstances(VirtualizationNamespace, "WQL", vmQuery, cimOpsOptions);
                foreach (var cs in computerSystems)
                {
                    vms.Add(new HvVirtualMachine(cs));
                    cs.Dispose();
                }
            }

            return(vms.FirstOrDefault());
        }
コード例 #3
0
        public UWFManagement()
        {
            try
            {
                if (_cimSession != null)
                {
                    _cimSession.Close();
                }

                var sessionOptions = new DComSessionOptions();
                sessionOptions.Timeout = new TimeSpan(0, 2, 0);
                _cimSession            = CimSession.Create(@".", sessionOptions);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
            UpdateCimInstance();
        }
コード例 #4
0
        internal static CimSession CreateCimSession(
            string computerName,
            PSCredential credential,
            string authentication,
            CancellationToken cancellationToken,
            PSCmdlet cmdlet)
        {
            var sessionOptions = new CimSessionOptions();

            CimCredential cimCredentials = GetCimCredentials(authentication, credential);

            if (cimCredentials != null)
            {
                sessionOptions.AddDestinationCredentials(cimCredentials);
            }

            CimSession cimSession = CimSession.Create(computerName, sessionOptions);

            return(cimSession);
        }
コード例 #5
0
 protected override void BeginProcessing()
 {
     if (Session is null)
     {
         Session = new CimSession[]
         {
             CimSession.Create(null)
         };
         _isCimSessionOwner = true;
     }
     _cts     = new CancellationTokenSource();
     _options = new CimOperationOptions()
     {
         CancellationToken = _cts.Token,
     };
     if (!string.IsNullOrEmpty(ComputerName))
     {
         _options.SetCustomOption("ComputerName", ComputerName, true);
     }
 }
コード例 #6
0
        private static IReadOnlyCollection <HvVirtualMachine> GetVMs(string hvHostMachine)
        {
            var vms = new List <HvVirtualMachine>();

            var options = new CimSessionOptions();

            using (var session = CimSession.Create(hvHostMachine, options))
            {
                const string query           = "SELECT * FROM Msvm_ComputerSystem WHERE Caption = 'Virtual Machine'";
                var          cimOpsOptions   = new CimOperationOptions();
                var          computerSystems = session.QueryInstances(VirtualizationNamespace, "WQL", query, cimOpsOptions);

                foreach (var instance in computerSystems)
                {
                    vms.Add(new HvVirtualMachine(instance));
                    instance.Dispose();
                }
            }

            return(vms.AsReadOnly());
        }
コード例 #7
0
ファイル: FilePermissions.cs プロジェクト: lyrl/files-uwp
        private IEnumerable <string> GetGroupsForUser(string sid)
        {
            try
            {
                using var session = CimSession.Create(null);
                var user = session
                           .QueryInstances(@"root\cimv2", "WQL", $"select * from Win32_UserAccount where SID='{sid}'")
                           .FirstOrDefault();

                if (user != null)
                {
                    var groups = session.EnumerateAssociatedInstances(@"root\cimv2", user, "Win32_GroupUser", "Win32_Group", null, null);
                    return(groups.Select(x => x.CimInstanceProperties["SID"].Value as string));
                }
                return(null);
            }
            catch
            {
                return(null);
            }
        }
コード例 #8
0
        /*
         * "function Decode {If ($args[0] -is [System.Array]) {[System.Text.Encoding]::ASCII.GetString($args[0])}
         * Else {\"Not Found\"}}
         *
         *
         * $Monitors = Get-CimInstance WmiMonitorID -Namespace root\\wmi;
         * ForEach ($Monitor in $monitors) {$Serial = Decode $Monitor.SerialNumberID -notmatch 0; if($Serial -ne 0){return $Serial}}");
         */
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            string Namespace = @"root\wmi";
            string className = "WmiMonitorID";

            CimInstance myDrive = new CimInstance(className, Namespace);

            //myDrive.CimInstanceProperties.Add(CimProperty.Create("SerialNumberID", null, CimFlags.Key)); //CimProperty.Create("SerialNumberID", "C:", CimFlags.Key));

            CimSession mySession = CimSession.Create(null);

            CimInstance searchInstance = mySession.GetInstance(Namespace, myDrive);


            IEnumerable <CimInstance> queryInstances =
                mySession.QueryInstances(@"root\wmi",
                                         "WQL",
                                         @"select * from WmiMonitorID");
        }
コード例 #9
0
        /// <summary>
        /// Creates a new collection of <see cref="ComponentDescriptor"/> that describes the specified
        /// components installed in system associated with a network host-name.
        /// </summary>
        /// <param name="hostName">
        ///     The network host-name that should be described.
        /// </param>
        /// <returns>
        ///     The resulting collection of <see cref="ComponentDescriptor"/> if successful.
        /// </returns>
        public static IEnumerable <ComponentDescriptor> Create(string hostName)
        {
            // Validate parameters.
            if (String.IsNullOrWhiteSpace(hostName))
            {
                throw new ArgumentNullException("hostName");
            }

            CimSessionOptions sessionOptions = new CimSessionOptions()
            {
            };

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

            return
                (ComponentDescriptor.GetProcessors(session)
                 .Concat(ComponentDescriptor.GetMemory(session))
                 .Concat(ComponentDescriptor.GetHardDrives(session))
                 .ToList());
        }
コード例 #10
0
 /// <summary>
 /// Retrieves the duration (TickCount) since the system was last started from a remote machine.
 /// </summary>
 /// <param name="computerName">Name of computer on network to retrieve tickcount for</param>
 /// <returns>WMI Win32_OperatingSystem LocalDateTime - LastBootUpTime (ticks)</returns>
 public int? GetRemoteMachineTickCount(string computerName)
 {
     string namespaceName = @"root\cimv2";
     string queryDialect = "WQL";
     DComSessionOptions SessionOptions = new DComSessionOptions();
     SessionOptions.Impersonation = ImpersonationType.Impersonate;
     var baseLineTickCount = Environment.TickCount; // Note: to determine discrepancy
     CimSession session = CimSession.Create(computerName, SessionOptions);
     string query = "SELECT * FROM Win32_OperatingSystem";
     var cimInstances = session.QueryInstances(namespaceName, queryDialect, query);
     if (cimInstances.Any())
     {
         var lastBootUpTime = Convert.ToDateTime(cimInstances.First().CimInstanceProperties["LastBootUpTime"].Value);
         var localDateTime = Convert.ToDateTime(cimInstances.First().CimInstanceProperties["LocalDateTime"].Value);
         var timeSpan = localDateTime - lastBootUpTime;
         var tickCount = Convert.ToInt32(timeSpan.TotalMilliseconds);
         var discrepancy = tickCount - baseLineTickCount; // Note: discrepancy about +/- 100ms
         return tickCount;
     }
     return null;
 }
コード例 #11
0
        public TcpSettingsModel GetTcpSettings()
        {
            var session   = CimSession.Create(Server);
            var instances = session.QueryInstances(TcpSettings.SettingsClassNamespace, Wmi.QueryDialect, TcpSettings.SettingsQuery);
            var instance  = instances.FirstOrDefault();

            if (instance == null)
            {
                return(null);
            }

            var startPort  = Convert.ToInt32(instance.CimInstanceProperties[TcpSettings.DynamicPortRangeStartPortKey].Value);
            var totalPorts = Convert.ToInt32(instance.CimInstanceProperties[TcpSettings.DynamicPortRangeNumberOfPortsKey].Value);

            return(new TcpSettingsModel()
            {
                DynamicPortRangeStart = startPort,
                DynamicPortRangeEnd = startPort + totalPorts,
                TotalDynamicPorts = totalPorts
            });
        }
コード例 #12
0
        /// <summary>
        /// Retrieves the duration (TimeSpan) since the system was last started.
        /// Note: can be used on a local or a remote machine.
        /// </summary>
        /// <param name="computerName">Name of computer on network to retrieve uptime for</param>
        /// <returns>WMI Win32_OperatingSystem LocalDateTime - LastBootUpTime</returns>
        private static TimeSpan?GetSystemUptime(string computerName)
        {
            string             namespaceName  = @"root\cimv2";
            string             queryDialect   = "WQL";
            DComSessionOptions SessionOptions = new DComSessionOptions();

            SessionOptions.Impersonation = ImpersonationType.Impersonate;
            CimSession session      = CimSession.Create(computerName, SessionOptions);
            string     query        = "SELECT * FROM Win32_OperatingSystem";
            var        cimInstances = session.QueryInstances(namespaceName, queryDialect, query);

            if (cimInstances.Any())
            {
                var cimInstance    = cimInstances.First();
                var lastBootUpTime = Convert.ToDateTime(cimInstance.CimInstanceProperties["LastBootUpTime"].Value);
                var localDateTime  = Convert.ToDateTime(cimInstance.CimInstanceProperties["LocalDateTime"].Value);
                var uptime         = localDateTime - lastBootUpTime;
                return(uptime);
            }
            return(null);
        }
コード例 #13
0
ファイル: MainWindow.xaml.cs プロジェクト: ITHLB/RDSLogoff
            public void Execute(object parameter)
            {
                CimInstance TypedParameter = parameter as CimInstance;
                CimSession  cimSession     = CimSession.Create(TypedParameter.CimInstanceProperties["CSName"].Value.ToString());

                uint result = 0;

                try
                {
                    result = (uint)cimSession.InvokeMethod(TypedParameter, @"Terminate", null).ReturnValue.Value;
                }
                catch (CimException e)
                {
                    MessageBox.Show($"{e.Message} ({e.HResult})" + Environment.NewLine + "Das beenden des Prozesses schlug fehl.", "Fehler aufgetreten");
                }

                if (result != 0)
                {
                    MessageBox.Show($"Das beenden des Prozesses schlug mit Fehlercode {result} fehl.", "Fehler aufgetreten");
                }
            }
コード例 #14
0
        public static CimSession newSession(string computername, string domain, string username, string password, bool impersonate = false)
        {
            CimSession cimSession;

            if (impersonate)
            {
                DComSessionOptions options = new DComSessionOptions {
                    Impersonation = ImpersonationType.Impersonate
                };
                cimSession = CimSession.Create(computername, options);
            }
            else
            {
                CimCredential       credentials    = new CimCredential(PasswordAuthenticationMechanism.Negotiate, domain, username, Misc.CreateSecuredString(password));
                WSManSessionOptions sessionOptions = new WSManSessionOptions();
                sessionOptions.AddDestinationCredentials(credentials);
                sessionOptions.MaxEnvelopeSize = 256000;
                cimSession = CimSession.Create(computername, sessionOptions);
            }
            return(cimSession);
        }
コード例 #15
0
        private static void PrintMonitorInfos()
        {
            var mySession = CimSession.Create(null);

            var queryInstances =
                mySession.QueryInstances(@"root\wmi",
                                         "WQL",
                                         @"select * from WmiMonitorID");

            foreach (var queryInstance in queryInstances)
            {
                foreach (var cimInstanceProperty in queryInstance.CimInstanceProperties)
                {
                    var value = cimInstanceProperty.CimType == CimType.UInt16Array
                        ? ConvertUInt16ArrayToString(cimInstanceProperty)
                        : Convert.ToString(cimInstanceProperty.Value);

                    Console.WriteLine(cimInstanceProperty.Name + " " + value);
                }
            }
        }
コード例 #16
0
ファイル: HomeController.cs プロジェクト: r41162/EPSPrintMgmt
        static public List <PrintJob> GetPrintJobs(List <string> printserver)
        {
            List <PrintJob> printJobs = new List <PrintJob>();
            string          Namespace = @"root\cimv2";
            string          OSQuery   = "SELECT * FROM Win32_PrintJob";

            foreach (string ps in printserver)
            {
                CimSession mySession = CimSession.Create(ps);
                IEnumerable <CimInstance> queryInstance = mySession.QueryInstances(Namespace, "WQL", OSQuery);
                foreach (var props in queryInstance)
                {
                    var Printer = props.CimInstanceProperties["Name"].Value.ToString();
                    Printer = Printer.Substring(0, Printer.LastIndexOf(','));
                    var PrintJobID   = Int32.Parse(props.CimInstanceProperties["JobID"].Value.ToString());
                    var PrintJobName = props.CimInstanceProperties["Document"].Value.ToString();
                    var Server       = props.CimInstanceProperties["HostPrintQueue"].Value.ToString();
                    var Status       = props.CimInstanceProperties["Status"].Value.ToString();
                    var PrintDriver  = props.CimInstanceProperties["DriverName"].Value.ToString();
                    //var TimeSubmitted = ManagementDateTimeConverter.ToDateTime(props.CimInstanceProperties["StartTime"].ToString());
                    var TimeSubmitted = Convert.ToDateTime(props.CimInstanceProperties["TimeSubmitted"].Value);
                    var PagesPrinted  = Int32.Parse(props.CimInstanceProperties["PagesPrinted"].Value.ToString());
                    var TotalPages    = Int32.Parse(props.CimInstanceProperties["TotalPages"].Value.ToString());

                    printJobs.Add(new PrintJob {
                        Printer       = Printer,
                        PrintJobID    = PrintJobID,
                        PrintJobName  = PrintJobName,
                        Server        = Server,
                        Status        = Status,
                        PrintDriver   = PrintDriver,
                        TimeSubmitted = TimeSubmitted,
                        PagesPrinted  = PagesPrinted,
                        TotalPages    = TotalPages
                    });
                }
            }

            return(printJobs);
        }
コード例 #17
0
ファイル: Software.cs プロジェクト: robinrana88/SignityWMI
        public string UnInstallSoftware(string programName)
        {
            CimSession  session       = CimSession.Create("localHost");
            IEnumerable queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Product ");

            ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_Product");

            foreach (var item in mos.Get())
            {
                if (item["Name"].ToString() == programName)
                {
                    //object hr = item.InvokeMethod("Uninstall", null);
                    // return (bool)hr;
                }
            }

            foreach (CimInstance cimObj in queryInstance)
            {
                //cimObj.Uninstall();
            }
            return("");
        }
コード例 #18
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();
        }
コード例 #19
0
        private IDscRes DscResReadConfig(IHasDiagnostics result, IDscRes config)
        {
            using var ses = CimSession.Create(config.ComputerName ?? DscRes.DefaultCimHostname);
            using var cls = ses.GetClass(DscRes.DscCimNamespace, config.TypeName);
            using var cim = new CimInstance(DscRes.LcmCimClassName, DscRes.DscCimNamespace);

            var mofBody = DscRes.BuildMof(config, cls);

            _log.LogDebug("Generated MOF:\n{0}", mofBody);
            var mofBodyBytes = DscRes.ToUint8(mofBody);
            var methodParams = new CimMethodParametersCollection
            {
                CimMethodParameter.Create("ModuleName", config.ModuleName, CimFlags.None),
                CimMethodParameter.Create("ResourceType", config.TypeName, CimFlags.None),
                CimMethodParameter.Create("resourceProperty", mofBodyBytes, CimFlags.None),
            };

            CimMethodResult methodResult;

            lock (_dscSync) {
                methodResult = ses.InvokeMethod(cim, "ResourceGet", methodParams);
            }
            var dscResConfigs = (CimInstance)methodResult.OutParameters["configurations"].Value;

            var state = config;

            state.Results = new Dictionary <string, string>();
            foreach (var p in dscResConfigs.CimInstanceProperties)
            {
                state.Results[p.Name] = p.Value?.ToString() ?? string.Empty;
            }

            lock (_dscSync) {
                methodResult = ses.InvokeMethod(cim, "ResourceTest", methodParams);
            }
            state.InDesiredState = (bool)methodResult.OutParameters["InDesiredState"].Value;

            return(state);
        }
コード例 #20
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)]
            });
        }
コード例 #21
0
ファイル: HardwareInfo.cs プロジェクト: send2gopal/SysScanner
        public static List <MachineHardwareInfo> GetHardwareInfo(string computer, string domain, string username, string plaintextpassword)
        {
            MachineName = computer;
            List <MachineHardwareInfo> info = new List <MachineHardwareInfo>();

            SecureString securepassword = new SecureString();

            foreach (char c in plaintextpassword)
            {
                securepassword.AppendChar(c);
            }

            // create Credentials
            CimCredential Credentials = new CimCredential(PasswordAuthenticationMechanism.Default,
                                                          domain,
                                                          username,
                                                          securepassword);

            // create SessionOptions using Credentials
            WSManSessionOptions SessionOptions = new WSManSessionOptions();

            SessionOptions.AddDestinationCredentials(Credentials);

            // create Session using computer, SessionOptions
            using (CimSession Session = CimSession.Create(computer, SessionOptions))
            {
                var usb       = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_USBControllerDevice");
                var disks     = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_LogicalDisk");
                var ram       = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_PhysicalMemory");
                var processor = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_Processor");
                var sound     = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_SoundDevice");
                info.AddRange(RamInfo(ram));
                info.AddRange(ProcessorInfo(processor));
                info.AddRange(USBInfo(usb));
                info.AddRange(DiskInfo(disks));
            }
            return(info);
        }
コード例 #22
0
ファイル: Accounts.cs プロジェクト: robinrana88/SignityWMI
        public string GetAccounts()
        {
            //CimSession session = CimSession.Create("ROBINDEVIL");
            string             computer    = "ROBINDEVIL";
            DComSessionOptions DComOptions = new DComSessionOptions();

            DComOptions.Impersonation = ImpersonationType.Impersonate;
            CimSession session = CimSession.Create(computer, DComOptions);


            IEnumerable queryInstance = session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_ComputerSystem");

            StringBuilder sb = new StringBuilder();

            foreach (CimInstance cimObj in queryInstance)
            {
                sb.Append("computer name :" + cimObj.CimInstanceProperties["Name"].ToString() + Environment.NewLine);
                sb.Append("computer Domain :" + cimObj.CimInstanceProperties["Domain"].ToString() + Environment.NewLine);
                //Console.WriteLine(cimObj.CimInstanceProperties["Name"].ToString());// to get computer name
                //Console.WriteLine(cimObj.CimInstanceProperties["Domain"].ToString());// to get domain name
            }
            return(sb.ToString());
        }
コード例 #23
0
 public static string GetCurrentUser()
 {
     try
     {
         if (OSUtils.IsWindows)
         {
             var session        = CimSession.Create(null);
             var computerSystem = session.EnumerateInstances("root\\cimv2", "CIM_ComputerSystem");
             var username       = computerSystem.FirstOrDefault().CimInstanceProperties["UserName"].Value ?? "";
             return(username as string);
         }
         else if (OSUtils.IsLinux)
         {
             var users    = OSUtils.StartProcessWithResults("users", "");
             var username = users?.Split()?.FirstOrDefault()?.Trim();
             return($"{Environment.UserDomainName}\\{username}");
         }
         throw new Exception("Unsupported operating system.");
     }
     catch
     {
         return("Error Retrieving");
     }
 }
コード例 #24
0
        public static void CreateSnapshot()
        {
            const string hvNamespace = @"root\virtualization\v2";

            var sessionOptions = new DComSessionOptions
            {
                Timeout = TimeSpan.FromSeconds(30)
            };

            var cimSession = CimSession.Create("localhost", sessionOptions);

            // Get an instance of the VM to snapshot
            var vm = cimSession.QueryInstances(hvNamespace, "WQL", $"SELECT * FROM CIM_ComputerSystem WHERE ElementName = 'MyTestVM'").First();

            // Get the instance of Msvm_VirtualSystemSnapshotService. There is only one.
            var vmSnapshotService = cimSession.EnumerateInstances(hvNamespace, "Msvm_VirtualSystemSnapshotService").First();

            // Set the snapshot parameters by creating a Msvm_VirtualSystemSnapshotSettingData
            var snapshotSettings = new CimInstance("Msvm_VirtualSystemSnapshotSettingData");

            snapshotSettings.CimInstanceProperties.Add(CimProperty.Create("ConsistencyLevel", 1, CimType.UInt8, CimFlags.ReadOnly));
            snapshotSettings.CimInstanceProperties.Add(CimProperty.Create("IgnoreNonSnapshottableDisks", true, CimFlags.ReadOnly));

            // Put all of these things into a CimMethodParametersCollection.
            // Note; no need to specify the "Out" parameters. They will be returned by the call to InvokeMethod.
            var methodParameters = new CimMethodParametersCollection
            {
                CimMethodParameter.Create("AffectedSystem", vm, CimType.Reference, CimFlags.In),
                CimMethodParameter.Create("SnapshotSettings", snapshotSettings.ToString(), CimType.String, CimFlags.In),
                CimMethodParameter.Create("SnapshotType", 2, CimType.UInt16, CimFlags.In),
            };

            cimSession.InvokeMethod(hvNamespace, vmSnapshotService, "CreateSnapshot", methodParameters);

            Console.WriteLine($"Snapshot created!");
        }
コード例 #25
0
        private bool DscResTestConfig(IHasDiagnostics result, IDscRes config)
        {
            using var ses = CimSession.Create(config.ComputerName ?? DscRes.DefaultCimHostname);
            using var cls = ses.GetClass(DscRes.DscCimNamespace, config.TypeName);
            using var cim = new CimInstance(DscRes.LcmCimClassName, DscRes.DscCimNamespace);

            var mofBody = DscRes.BuildMof(config, cls);

            _log.LogDebug("Generated MOF:\n{0}", mofBody);
            var mofBodyBytes = DscRes.ToUint8(mofBody);
            var methodParams = new CimMethodParametersCollection
            {
                CimMethodParameter.Create("ModuleName", config.ModuleName, CimFlags.None),
                CimMethodParameter.Create("ResourceType", config.TypeName, CimFlags.None),
                CimMethodParameter.Create("resourceProperty", mofBodyBytes, CimFlags.None),
            };

            CimMethodResult methodResult;

            lock (_dscSync) {
                methodResult = ses.InvokeMethod(cim, "ResourceTest", methodParams);
            }
            return((bool)methodResult.OutParameters["InDesiredState"].Value);
        }
コード例 #26
0
ファイル: Program.cs プロジェクト: jaredcatkinson/MMI_Issue
        static void Main(string[] args)
        {
            // Create a CimSession with the remote system
            CimSessionOptions options = new DComSessionOptions();
            //options.AddDestinationCredentials(cimCreds);
            CimSession session = CimSession.Create("localhost", options);

            // Create a CimMethodParametersCollection to pass to method invocation
            CimMethodParametersCollection collection = new CimMethodParametersCollection();

            collection.Add(CimMethodParameter.Create("CommandLine", "calc.exe", CimFlags.None));

            // Invoke the Win32_Process classes Create method to start a calc.exe process on a remote system
            CimMethodResult result = session.InvokeMethod("root/cimv2", "Win32_Process", "Create", collection);

            if (result.ReturnValue.ToString() == "0")
            {
            }
            else
            {
            }

            session.Dispose();
        }
コード例 #27
0
 private static CimSession CreateDefaultCimSession()
 {
     return(CimSession.Create(null));
 }
コード例 #28
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            //string computer = "ILPT2113";
            //string domain = "ICERTIS.COM";
            //string username = @"*****@*****.**";

            string computer = "myfirstvm";
            string domain   = "";
            string username = "******";


            string plaintextpassword;

            Console.WriteLine("Enter password:"******"root\cimv2", "WQL", "SELECT * FROM Win32_Directory");
            var allPDisks  = Session.QueryInstances(@"root\cimv2", "WQL", "SELECT * FROM Win32_DiskDrive");

            // Loop through all volumes
            foreach (CimInstance oneVolume in allVolumes)
            {
                // Show volume information

                if (oneVolume.CimInstanceProperties["DriveLetter"].ToString()[0] > ' ')
                {
                    Console.WriteLine("Volume ‘{0}’ has {1} bytes total, {2} bytes available",
                                      oneVolume.CimInstanceProperties["DriveLetter"],
                                      oneVolume.CimInstanceProperties["Size"],
                                      oneVolume.CimInstanceProperties["SizeRemaining"]);
                }
            }

            // Loop through all physical disks
            foreach (CimInstance onePDisk in allPDisks)
            {
                // Show physical disk information
                Console.WriteLine("Disk {0} is model {1}, serial number {2}",
                                  onePDisk.CimInstanceProperties["DeviceId"],
                                  onePDisk.CimInstanceProperties["Model"].ToString().TrimEnd(),
                                  onePDisk.CimInstanceProperties["SerialNumber"]);
            }



            Console.ReadKey();
        }
コード例 #29
0
ファイル: frmLockout.cs プロジェクト: radtek/ADLockAudit
        private CimInstance[] GetServices(string szMachine, string szUsername, CancellationToken _cancel)
        {
            bool _exceptionThrown       = false;
            List <CimInstance> _results = new List <CimInstance>();

            if (!_cancel.IsCancellationRequested)
            {
                try
                {
                    string     Namespace = @"root\cimv2";
                    string     OSQuery   = "SELECT * FROM Win32_Service";
                    CimSession mySession = CimSession.Create(szMachine);
                    IEnumerable <CimInstance> queryInstance = mySession.QueryInstances(Namespace, "WQL", OSQuery);
                    foreach (CimInstance _svc in queryInstance)
                    {
                        if (_cancel.IsCancellationRequested)
                        {
                            break;
                        }

                        string szServiceName = _svc.CimInstanceProperties["StartName"].Value as string;
                        if (!string.IsNullOrWhiteSpace(szServiceName))
                        {
                            if (szServiceName.ToLower().Contains(szUsername.ToLower()))
                            {
                                _results.Add(_svc);
                            }
                        }
                    }
                }
                catch (CimException _cex)
                {
                    switch (_cex.HResult)
                    {
                    case unchecked ((int)0x80338126):
                    case unchecked ((int)0x80131500):
                        Status($"Error Gathering Service Accounts ({szMachine}) - most likely offline / firewall");
                        break;

                    case unchecked ((int)0x80070005):
                        Status($"Error Gathering Service Accounts ({szMachine}) - invalid permissions");
                        break;

                    default:
                        if (System.Diagnostics.Debugger.IsAttached)
                        {
                            System.Diagnostics.Debugger.Break();
                        }

                        Status($"Error Gathering Service Accounts ({szMachine}) - PROVIDE TO SUPPORT - CIM UNKNKOWN ({_cex.HResult})");
                        break;
                    }
                    _exceptionThrown = true;
                }
                catch (Exception _ex)
                {
                    if (System.Diagnostics.Debugger.IsAttached)
                    {
                        System.Diagnostics.Debugger.Break();
                    }

                    Status($"Error Gathering Service Accounts ({szMachine}) - PROVIDE TO SUPPORT - UNKNKOWN ({_ex.GetType().Name}:{_ex.HResult})");
                    _exceptionThrown = true;
                }
                if (_exceptionThrown)
                {
                    _results.Clear();                    // clear results so we do not error and can continue.
                    System.Threading.Thread.Sleep(5000); // give them time to see the error
                }
            }
            return(_results.ToArray());
        }
コード例 #30
0
ファイル: Program.cs プロジェクト: williamhhk/Utility
 public static IEnumerable <CimInstance> Query(string nameSpace, string queryExpression)
 {
     return(CimSession.Create(null).QueryInstances(nameSpace, "WQL", queryExpression));
 }