@@ -367,7 +367,7 @@ private IProcessHandle CreateProcess(
367367 /// Builds PowerShell command-line parameter arguments from a JSON object.
368368 /// Converts parameter names to PowerShell naming convention (camelCase to PascalCase).
369369 /// </summary>
370- /// <param name="parameters">The parameters object to convert.</param>
370+ /// <param name="parameters">The parameters object to convert (can be an object or JSON string) .</param>
371371 /// <returns>PowerShell parameter string (e.g., "-ThreadId '5' -Verbose $true").</returns>
372372 private string BuildPowerShellParameterArguments ( object parameters )
373373 {
@@ -376,11 +376,42 @@ private string BuildPowerShellParameterArguments(object parameters)
376376
377377 var argumentsBuilder = new StringBuilder ( ) ;
378378
379- // Serialize to JSON and deserialize to JsonElement for easy property access
380- var json = JsonSerializer . Serialize ( parameters ) ;
379+ // Log parameter type for debugging
380+ m_Logger . LogDebug ( "BuildPowerShellParameterArguments called with type: {Type}, value: {Value}" ,
381+ parameters . GetType ( ) . FullName , parameters ) ;
382+
383+ // Handle case where parameters might be a JsonElement, JSON string, or object
384+ string json ;
385+ if ( parameters is JsonElement jsonElement )
386+ {
387+ m_Logger . LogDebug ( "Parameters is a JsonElement, type: {Type}" , jsonElement . ValueKind ) ;
388+ json = jsonElement . GetRawText ( ) ;
389+ }
390+ else if ( parameters is string jsonString )
391+ {
392+ m_Logger . LogDebug ( "Parameters is already a JSON string: {Json}" , jsonString ) ;
393+ json = jsonString ;
394+ }
395+ else
396+ {
397+ m_Logger . LogDebug ( "Parameters is an object, serializing to JSON" ) ;
398+ json = JsonSerializer . Serialize ( parameters ) ;
399+ m_Logger . LogDebug ( "Serialized JSON: {Json}" , json ) ;
400+ }
401+
381402 using var doc = JsonDocument . Parse ( json ) ;
382403 var root = doc . RootElement ;
383404
405+ m_Logger . LogDebug ( "JSON root element type: {Type}" , root . ValueKind ) ;
406+
407+ // If root is a string (not an object), we can't enumerate properties
408+ if ( root . ValueKind != JsonValueKind . Object )
409+ {
410+ m_Logger . LogWarning ( "Parameters is not a JSON object, cannot convert to PowerShell arguments. Type: {Type}, Raw JSON: {Json}" ,
411+ root . ValueKind , json ) ;
412+ return string . Empty ;
413+ }
414+
384415 foreach ( var property in root . EnumerateObject ( ) )
385416 {
386417 // Convert camelCase to PascalCase for PowerShell convention
@@ -426,7 +457,9 @@ private string BuildPowerShellParameterArguments(object parameters)
426457 }
427458 }
428459
429- return argumentsBuilder . ToString ( ) ;
460+ var result = argumentsBuilder . ToString ( ) ;
461+ m_Logger . LogDebug ( "Built PowerShell arguments: {Arguments}" , result ) ;
462+ return result ;
430463 }
431464
432465 /// <summary>
0 commit comments