@@ -144,51 +144,41 @@ private static RuntimeDefinedParameterDictionary ParseTemplateAndExtractParamete
144
144
}
145
145
if ( templateParameterObject != null )
146
146
{
147
- UpdateParametersWithObject ( dynamicParameters , templateParameterObject ) ;
147
+ UpdateParametersWithObject ( staticParameters , dynamicParameters , templateParameterObject ) ;
148
148
}
149
149
if ( templateParameterFilePath != null && FileUtilities . DataStore . FileExists ( templateParameterFilePath ) )
150
150
{
151
151
var parametersFromFile = ParseTemplateParameterFileContents ( templateParameterFilePath ) ;
152
- UpdateParametersWithObject ( dynamicParameters , new Hashtable ( parametersFromFile ) ) ;
152
+ UpdateParametersWithObject ( staticParameters , dynamicParameters , new Hashtable ( parametersFromFile ) ) ;
153
153
}
154
154
if ( templateParameterFilePath != null && Uri . IsWellFormedUriString ( templateParameterFilePath , UriKind . Absolute ) )
155
155
{
156
156
var parametersFromUri = ParseTemplateParameterContent ( GeneralUtilities . DownloadFile ( templateParameterFilePath ) ) ;
157
- UpdateParametersWithObject ( dynamicParameters , new Hashtable ( parametersFromUri ) ) ;
157
+ UpdateParametersWithObject ( staticParameters , dynamicParameters , new Hashtable ( parametersFromUri ) ) ;
158
158
}
159
159
return dynamicParameters ;
160
160
}
161
161
162
- private static void UpdateParametersWithObject ( RuntimeDefinedParameterDictionary dynamicParameters , Hashtable templateParameterObject )
162
+ private static void UpdateParametersWithObject ( string [ ] staticParameters , RuntimeDefinedParameterDictionary dynamicParameters , Hashtable templateParameterObject )
163
163
{
164
+ const string duplicatedParameterSuffix = "FromTemplate" ;
165
+
164
166
if ( templateParameterObject != null )
165
167
{
166
- foreach ( KeyValuePair < string , RuntimeDefinedParameter > dynamicParameter in dynamicParameters )
168
+ foreach ( string paramName in templateParameterObject . Keys )
167
169
{
168
- try
169
- {
170
- foreach ( string key in templateParameterObject . Keys )
171
- {
172
- if ( key . Equals ( dynamicParameter . Key , StringComparison . InvariantCultureIgnoreCase ) )
173
- {
174
- if ( templateParameterObject [ key ] is TemplateFileParameterV1 )
175
- {
176
- dynamicParameter . Value . Value = ( templateParameterObject [ key ] as TemplateFileParameterV1 ) . Value ;
177
- }
178
- else
179
- {
180
- dynamicParameter . Value . Value = templateParameterObject [ key ] ;
181
- }
182
- dynamicParameter . Value . IsSet = true ;
183
- ( ( ParameterAttribute ) dynamicParameter . Value . Attributes [ 0 ] ) . Mandatory = false ;
184
- }
185
- }
186
- }
187
- catch
170
+ string dynamicParamName = staticParameters . Contains ( paramName , StringComparer . OrdinalIgnoreCase )
171
+ ? paramName + duplicatedParameterSuffix
172
+ : paramName ;
173
+
174
+ if ( dynamicParameters . TryGetValue ( dynamicParamName , out RuntimeDefinedParameter dynamicParameter ) )
188
175
{
189
- throw new ArgumentException ( string . Format ( ProjectResources . FailureParsingTemplateParameterObject ,
190
- dynamicParameter . Key ,
191
- templateParameterObject [ dynamicParameter . Key ] ) ) ;
176
+ dynamicParameter . Value = templateParameterObject [ paramName ] is TemplateFileParameterV1 templateFileParameterV1
177
+ ? templateFileParameterV1 . Value
178
+ : templateParameterObject [ paramName ] ;
179
+
180
+ dynamicParameter . IsSet = true ;
181
+ ( ( ParameterAttribute ) dynamicParameter . Attributes [ 0 ] ) . Mandatory = false ;
192
182
}
193
183
}
194
184
}
@@ -249,8 +239,7 @@ internal static RuntimeDefinedParameter ConstructDynamicParameter(string[] stati
249
239
RuntimeDefinedParameter runtimeParameter = new RuntimeDefinedParameter ( )
250
240
{
251
241
// For duplicated template parameter names, add a suffix FromTemplate to distinguish them from the cmdlet parameter.
252
- Name = staticParameters . Any ( n => n . StartsWith ( name , StringComparison . OrdinalIgnoreCase ) )
253
- ? name + duplicatedParameterSuffix : name ,
242
+ Name = staticParameters . Contains ( name , StringComparer . OrdinalIgnoreCase ) ? name + duplicatedParameterSuffix : name ,
254
243
ParameterType = GetParameterType ( parameter . Value . Type ) ,
255
244
Value = defaultValue
256
245
} ;
0 commit comments