internal PropertySettingJob(CimJobContext jobContext, bool passThru, CimInstance objectToModify, MethodInvocationInfo methodInvocationInfo) : base( jobContext, passThru, objectToModify.ToString(), methodInvocationInfo) { }
internal DeleteInstanceJob(CimJobContext jobContext, bool passThru, CimInstance objectToDelete, MethodInvocationInfo methodInvocationInfo) : base( jobContext, passThru, objectToDelete.ToString(), methodInvocationInfo) { Dbg.Assert(objectToDelete != null, "Caller should verify objectToDelete != null"); _objectToDelete = objectToDelete; }
internal InstanceMethodInvocationJob(CimJobContext jobContext, bool passThru, CimInstance targetInstance, MethodInvocationInfo methodInvocationInfo) : base( jobContext, passThru, targetInstance.ToString(), methodInvocationInfo) { Dbg.Assert(targetInstance != null, "Caller should verify targetInstance != null"); _targetInstance = targetInstance; }
internal void RemoveCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase cmdlet) { DebugHelper.WriteLogEx(); string str = cimInstance.ToString(); if (cmdlet.ShouldProcess(str, "Remove-CimInstance")) { CimRemoveCimInstanceContext cimRemoveCimInstanceContext = context as CimRemoveCimInstanceContext; CimSessionProxy cimSessionProxy = base.CreateCimSessionProxy(cimRemoveCimInstanceContext.Proxy); cimSessionProxy.DeleteInstanceAsync(cimRemoveCimInstanceContext.Namespace, cimInstance); return; } else { return; } }
/// <summary> /// <para> /// Remove <see cref="CimInstance"/> from namespace specified in cmdlet /// </para> /// </summary> /// <param name="cimInstance"></param> internal void RemoveCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase cmdlet) { DebugHelper.WriteLogEx(); string target = cimInstance.ToString(); if (!cmdlet.ShouldProcess(target, action)) { return; } CimRemoveCimInstanceContext removeContext = context as CimRemoveCimInstanceContext; Debug.Assert(removeContext != null, "CimRemoveCimInstance::RemoveCimInstance should has CimRemoveCimInstanceContext != NULL."); CimSessionProxy proxy = CreateCimSessionProxy(removeContext.Proxy); proxy.DeleteInstanceAsync(removeContext.Namespace, cimInstance); }
public void InvokeCimMethodOnCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase operation) { DebugHelper.WriteLogEx(); CimInvokeCimMethod.CimInvokeCimMethodContext cimInvokeCimMethodContext = context as CimInvokeCimMethod.CimInvokeCimMethodContext; object[] methodName = new object[1]; methodName[0] = cimInvokeCimMethodContext.MethodName; string str = string.Format(CultureInfo.CurrentUICulture, "Invoke-CimMethod: {0}", methodName); if (operation.ShouldProcess(cimInstance.ToString(), str)) { CimSessionProxy cimSessionProxy = base.CreateCimSessionProxy(cimInvokeCimMethodContext.Proxy); cimSessionProxy.InvokeMethodAsync(cimInvokeCimMethodContext.Namespace, cimInstance, cimInvokeCimMethodContext.MethodName, cimInvokeCimMethodContext.ParametersCollection); return; } else { return; } }
/// <summary> /// <para> /// Set <see cref="CimInstance"/> with properties specified in cmdlet /// </para> /// </summary> /// <param name="cimInstance"></param> public void SetCimInstance(CimInstance cimInstance, CimSetCimInstanceContext context, CmdletOperationBase cmdlet) { DebugHelper.WriteLog("CimSetCimInstance::SetCimInstance", 4); if (!cmdlet.ShouldProcess(cimInstance.ToString(), action)) { return; } Exception exception = null; if (!SetProperty(context.Property, ref cimInstance, ref exception)) { cmdlet.ThrowTerminatingError(exception, action); return; } CimSessionProxy proxy = CreateCimSessionProxy(context.Proxy, context.PassThru); proxy.ModifyInstanceAsync(cimInstance.CimSystemProperties.Namespace, cimInstance); }
/// <summary> /// <para> /// Invoke cimmethod on given <see cref="CimInstance"/> /// </para> /// </summary> /// <param name="cimInstance"></param> public void InvokeCimMethodOnCimInstance(CimInstance cimInstance, XOperationContextBase context, CmdletOperationBase operation) { DebugHelper.WriteLogEx(); CimInvokeCimMethodContext cimInvokeCimMethodContext = context as CimInvokeCimMethodContext; Debug.Assert(cimInvokeCimMethodContext != null, "CimInvokeCimMethod::InvokeCimMethodOnCimInstance should has CimInvokeCimMethodContext != NULL."); string action = string.Format(CultureInfo.CurrentUICulture, actionTemplate, cimInvokeCimMethodContext.MethodName); if (!operation.ShouldProcess(cimInstance.ToString(), action)) { return; } CimSessionProxy proxy = CreateCimSessionProxy(cimInvokeCimMethodContext.Proxy); proxy.InvokeMethodAsync( cimInvokeCimMethodContext.Namespace, cimInstance, cimInvokeCimMethodContext.MethodName, cimInvokeCimMethodContext.ParametersCollection); }
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!"); }
/// <summary> /// <para> /// Base on parametersetName to create ciminstances, /// either remotely or locally /// </para> /// </summary> /// <param name="cmdlet"><see cref="GetCimInstanceCommand"/> object.</param> public void NewCimInstance(NewCimInstanceCommand cmdlet) { DebugHelper.WriteLogEx(); string nameSpace; CimInstance cimInstance = null; try { switch (cmdlet.ParameterSetName) { case CimBaseCommand.ClassNameComputerSet: case CimBaseCommand.ClassNameSessionSet: { nameSpace = ConstValue.GetNamespace(cmdlet.Namespace); cimInstance = CreateCimInstance(cmdlet.ClassName, nameSpace, cmdlet.Key, cmdlet.Property, cmdlet); } break; case CimBaseCommand.ResourceUriSessionSet: case CimBaseCommand.ResourceUriComputerSet: { nameSpace = cmdlet.Namespace; // passing null is ok for resourceUri set cimInstance = CreateCimInstance("DummyClass", nameSpace, cmdlet.Key, cmdlet.Property, cmdlet); } break; case CimBaseCommand.CimClassComputerSet: case CimBaseCommand.CimClassSessionSet: { nameSpace = ConstValue.GetNamespace(cmdlet.CimClass.CimSystemProperties.Namespace); cimInstance = CreateCimInstance(cmdlet.CimClass, cmdlet.Property, cmdlet); } break; default: return; } } catch (ArgumentNullException e) { cmdlet.ThrowTerminatingError(e, action); return; } catch (ArgumentException e) { cmdlet.ThrowTerminatingError(e, action); return; } // return if create client only ciminstance if (cmdlet.ClientOnly) { cmdlet.CmdletOperation.WriteObject(cimInstance, null); return; } string target = cimInstance.ToString(); if (!cmdlet.ShouldProcess(target, action)) { return; } // create ciminstance on server List <CimSessionProxy> proxys = new(); switch (cmdlet.ParameterSetName) { case CimBaseCommand.ClassNameComputerSet: case CimBaseCommand.CimClassComputerSet: case CimBaseCommand.ResourceUriComputerSet: { IEnumerable <string> computerNames = ConstValue.GetComputerNames( cmdlet.ComputerName); foreach (string computerName in computerNames) { proxys.Add(CreateSessionProxy(computerName, cmdlet)); } } break; case CimBaseCommand.CimClassSessionSet: case CimBaseCommand.ClassNameSessionSet: case CimBaseCommand.ResourceUriSessionSet: foreach (CimSession session in cmdlet.CimSession) { proxys.Add(CreateSessionProxy(session, cmdlet)); } break; } foreach (CimSessionProxy proxy in proxys) { proxy.ContextObject = new CimNewCimInstanceContext(proxy, nameSpace); proxy.CreateInstanceAsync(nameSpace, cimInstance); } }
internal DeleteInstanceJob(CimJobContext jobContext, bool passThru, CimInstance objectToDelete, MethodInvocationInfo methodInvocationInfo) : base(jobContext, passThru, objectToDelete.ToString(), methodInvocationInfo) { this.objectToDelete = objectToDelete; }
internal InstanceMethodInvocationJob(CimJobContext jobContext, bool passThru, CimInstance targetInstance, MethodInvocationInfo methodInvocationInfo) : base(jobContext, passThru, targetInstance.ToString(), methodInvocationInfo) { this.targetInstance = targetInstance; }
public void NewCimInstance(NewCimInstanceCommand cmdlet) { string @namespace; DebugHelper.WriteLogEx(); CimInstance cimInstance = null; try { string parameterSetName = cmdlet.ParameterSetName; string str = parameterSetName; if (parameterSetName != null) { if (str == "ClassNameComputerSet" || str == "ClassNameSessionSet") { @namespace = ConstValue.GetNamespace(cmdlet.Namespace); cimInstance = this.CreateCimInstance(cmdlet.ClassName, @namespace, cmdlet.Key, cmdlet.Property, cmdlet); } else if (str == "ResourceUriSessionSet" || str == "ResourceUriComputerSet") { @namespace = cmdlet.Namespace; cimInstance = this.CreateCimInstance("DummyClass", @namespace, cmdlet.Key, cmdlet.Property, cmdlet); } else if (str == "CimClassComputerSet" || str == "CimClassSessionSet") { @namespace = ConstValue.GetNamespace(cmdlet.CimClass.CimSystemProperties.Namespace); cimInstance = this.CreateCimInstance(cmdlet.CimClass, cmdlet.Property, cmdlet); } else { return; } goto Label0; } } catch (ArgumentNullException argumentNullException1) { ArgumentNullException argumentNullException = argumentNullException1; cmdlet.ThrowTerminatingError(argumentNullException, "New-CimInstance"); } catch (ArgumentException argumentException1) { ArgumentException argumentException = argumentException1; cmdlet.ThrowTerminatingError(argumentException, "New-CimInstance"); } return; Label0: if (!cmdlet.ClientOnly) { string str1 = cimInstance.ToString(); if (cmdlet.ShouldProcess(str1, "New-CimInstance")) { List <CimSessionProxy> cimSessionProxies = new List <CimSessionProxy>(); string parameterSetName1 = cmdlet.ParameterSetName; string str2 = parameterSetName1; if (parameterSetName1 != null) { if (str2 == "ClassNameComputerSet" || str2 == "CimClassComputerSet" || str2 == "ResourceUriComputerSet") { IEnumerable <string> computerNames = ConstValue.GetComputerNames(cmdlet.ComputerName); foreach (string computerName in computerNames) { cimSessionProxies.Add(this.CreateSessionProxy(computerName, cmdlet)); } } else { if (str2 == "CimClassSessionSet" || str2 == "ClassNameSessionSet" || str2 == "ResourceUriSessionSet") { CimSession[] cimSession = cmdlet.CimSession; for (int i = 0; i < (int)cimSession.Length; i++) { CimSession cimSession1 = cimSession[i]; cimSessionProxies.Add(this.CreateSessionProxy(cimSession1, cmdlet)); } } } } foreach (CimSessionProxy cimSessionProxy in cimSessionProxies) { cimSessionProxy.ContextObject = new CimNewCimInstanceContext(cimSessionProxy, @namespace); cimSessionProxy.CreateInstanceAsync(@namespace, cimInstance); } return; } else { return; } } else { cmdlet.CmdletOperation.WriteObject(cimInstance, null); return; } }