|
11 | 11 | //
|
12 | 12 |
|
13 | 13 | using System;
|
| 14 | +using System.Linq; |
14 | 15 | using System.Collections.Generic;
|
15 | 16 | using System.Management.Automation.Language;
|
16 | 17 | using System.Management.Automation;
|
@@ -97,19 +98,26 @@ private bool HasAcceptableExportField(string key, HashtableAst hast, string scri
|
97 | 98 | extent = null;
|
98 | 99 | foreach (var pair in hast.KeyValuePairs)
|
99 | 100 | {
|
100 |
| - if (pair.Item1 is StringConstantExpressionAst |
101 |
| - && key.Equals((pair.Item1 as StringConstantExpressionAst).Value, |
102 |
| - StringComparison.OrdinalIgnoreCase)) |
103 |
| - { |
104 |
| - //checks for wildcard in the entry. |
105 |
| - var elementWithWildcard = pair.Item2.Find(x => x is StringConstantExpressionAst |
106 |
| - && WildcardPattern.ContainsWildcardCharacters((x as StringConstantExpressionAst).Value), false); |
107 | 101 |
|
| 102 | + var keyStrConstAst = pair.Item1 is StringConstantExpressionAst ? pair.Item1 as StringConstantExpressionAst : null; |
| 103 | + |
| 104 | + if (keyStrConstAst != null && keyStrConstAst.Value.Equals(key, StringComparison.OrdinalIgnoreCase)) |
| 105 | + { |
| 106 | + // Checks for wildcard character in the entry. |
| 107 | + var strConstAstElements = from element in pair.Item2.FindAll(x => x is StringConstantExpressionAst, false) |
| 108 | + select element as StringConstantExpressionAst; |
| 109 | + var elementWithWildcard = strConstAstElements.FirstOrDefault(x => x != null |
| 110 | + && WildcardPattern.ContainsWildcardCharacters(x.Value)); |
| 111 | + |
108 | 112 | if (elementWithWildcard == null)
|
109 | 113 | {
|
110 |
| - //checks for $null in the entry. |
111 |
| - var nullAst = pair.Item2.Find(x => x is VariableExpressionAst |
112 |
| - && (x as VariableExpressionAst).ToString().Equals("$null", StringComparison.OrdinalIgnoreCase), false); |
| 114 | + // Checks for $null in the entry. |
| 115 | + var varAstElements = from element in pair.Item2.FindAll(x => x is VariableExpressionAst, false) |
| 116 | + select element as VariableExpressionAst; |
| 117 | + // VariablePath property is never null hence we don't need to check for it. |
| 118 | + var nullAst = varAstElements.FirstOrDefault(x => x != null |
| 119 | + && x.VariablePath.IsUnqualified |
| 120 | + && x.VariablePath.UserPath.Equals("null", StringComparison.OrdinalIgnoreCase)); |
113 | 121 |
|
114 | 122 | if (nullAst == null)
|
115 | 123 | {
|
|
0 commit comments