示例#1
0
        protected override void ProcessRecord()
        {
            if (!IsConditionScope())
            {
                throw new RuleRuntimeException(string.Format(PSRuleResources.KeywordConditionScope, LanguageKeywords.AnyOf));
            }

            var invokeResult = RuleConditionResult.Create(Body.Invoke());
            var result       = invokeResult.AnyOf();

            RunspaceContext.CurrentThread.VerboseConditionResult(condition: RuleLanguageNouns.AnyOf, pass: invokeResult.Pass, count: invokeResult.Count, outcome: result);
            WriteObject(result);
        }
示例#2
0
        protected override void ProcessRecord()
        {
            try
            {
                if (Body == null)
                {
                    return;
                }

                // Evalute type pre-condition
                if (Type != null)
                {
                    var comparer = PipelineContext.CurrentThread.Baseline.GetTargetBinding().IgnoreCase ? StringComparer.OrdinalIgnoreCase : StringComparer.Ordinal;
                    if (!Type.Contains(value: PipelineContext.CurrentThread.RuleRecord.TargetType, comparer: comparer))
                    {
                        PipelineContext.CurrentThread.Logger.DebugMessage("Target failed Type precondition");
                        return;
                    }
                }

                // Evaluate script pre-condition
                if (If != null)
                {
                    PipelineContext.CurrentThread.ExecutionScope = ExecutionScope.Precondition;

                    var ifResult = If.InvokeReturnAsIs() as PSObject;

                    if (ifResult == null || !(ifResult.BaseObject is bool) || !(bool)ifResult.BaseObject)
                    {
                        PipelineContext.CurrentThread.Logger.DebugMessage("Target failed If precondition");
                        return;
                    }
                }

                // Evaluate script block
                PipelineContext.CurrentThread.ExecutionScope = ExecutionScope.Condition;
                var invokeResult = RuleConditionResult.Create(Body.Invoke());

                WriteObject(invokeResult);
            }
            finally
            {
                PipelineContext.CurrentThread.ExecutionScope = ExecutionScope.None;
            }
        }
示例#3
0
        protected override void ProcessRecord()
        {
            try
            {
                if (Body == null)
                {
                    return;
                }

                // Evalute type pre-condition
                if (!AcceptsType())
                {
                    RunspaceContext.CurrentThread.Writer.DebugMessage("Target failed Type precondition");
                    return;
                }

                // Evaluate script pre-condition
                if (If != null)
                {
                    PipelineContext.CurrentThread.ExecutionScope = ExecutionScope.Precondition;
                    var ifResult = RuleConditionResult.Create(If.Invoke());
                    if (!ifResult.AllOf())
                    {
                        RunspaceContext.CurrentThread.Writer.DebugMessage("Target failed If precondition");
                        return;
                    }
                }

                // Evaluate script block
                PipelineContext.CurrentThread.ExecutionScope = ExecutionScope.Condition;
                var invokeResult = RuleConditionResult.Create(Body.Invoke());
                WriteObject(invokeResult);
            }
            finally
            {
                PipelineContext.CurrentThread.ExecutionScope = ExecutionScope.None;
            }
        }