private Dictionary <string, object> GetInvokerBoundParameters(StaticBindingResult bindingResult) { var dict = bindingResult.BoundParameters.Select(p => Tuple.Create(p.Key, p.Value.ConstantValue)).ToDictionary(i => i.Item1, i => i.Item2); var bindingInfo = GetBindingInfo(bindingResult); var boundArguments = (IDictionary)bindingInfo.GetInternalProperty("BoundArguments"); if (summarySensors.Count > 0 && boundArguments.Contains(nameof(Sensor))) { dict[nameof(Sensor)] = null; } return(dict); }
private string GetInvokerParameterSetName(StaticBindingResult bindingResult) { var bindingInfo = GetBindingInfo(bindingResult); var boundParameters = bindingInfo.GetInternalProperty("BoundParameters").ToIEnumerable().ToArray(); var parameterSetFlag = (uint)bindingInfo.GetInternalProperty("ValidParameterSetsFlags"); var parameterSetData = boundParameters[0] .GetInternalField("value") .GetInternalProperty("Parameter") .GetInternalProperty("ParameterSetData") .ToIEnumerable() .ToArray(); var parameterSetFlags = parameterSetData .Select(p => Tuple.Create( (string)p.GetPublicProperty("Key"), (uint)p.GetPublicProperty("Value").GetInternalProperty("ParameterSetFlag") )).ToArray(); var selectedSet = parameterSetFlags.First(f => f.Item2 == parameterSetFlag).Item1; return(selectedSet); }
private object GetBindingInfo(StaticBindingResult bindingResult) { return(bindingResult.PSGetInternalField("_bindingInfo", "bindingInfo", this)); }