protected void GetAutomationElements(classic.TreeScope scope) { if (!CheckAndPrepareInput(this)) { return; } foreach (IUiElement inputObject in InputObject) { var searchResults = new List <IUiElement>(); if (scope == classic.TreeScope.Children || scope == classic.TreeScope.Descendants) { // WriteVerbose(this, "selected TreeScope." + scope.ToString()); var controlSearch = AutomationFactory.GetSearcherImpl <ControlSearcher>() as ControlSearcher; classic.Condition conditions = ControlSearcher.GetWildcardSearchCondition( controlSearch.ConvertCmdletToControlSearcherData(this)); IUiEltCollection temporaryResults = null; if (conditions != null) { temporaryResults = inputObject.FindAll( scope, conditions); searchResults.AddRange(temporaryResults.Cast <IUiElement>()); } else { // WriteVerbose(this, "no conditions. Performing search with TrueCondition"); temporaryResults = inputObject.FindAll( scope, classic.Condition.TrueCondition); if (temporaryResults.Count > 0) { // WriteVerbose(this, // "returned " + // temporaryResults.Count.ToString() + // " results"); searchResults.AddRange(temporaryResults.Cast <IUiElement>()); } } // WriteVerbose(this, "results found: " + searchResults.Count.ToString()); WriteObject(this, searchResults.ToArray()); } if (null != searchResults) { searchResults.Clear(); searchResults = null; } if (scope != classic.TreeScope.Parent && scope != classic.TreeScope.Ancestors) { continue; } IUiElement[] outResult = inputObject.GetParentOrAncestor(scope); WriteObject(this, outResult); if (null != outResult) { outResult = null; } } }