How would I return an object or multiple values from PowerShell to executing C# code

后端 未结 3 1435
忘掉有多难
忘掉有多难 2021-01-30 17:22

Some C# code executes a powershell script with arguments. I want to get a returncode and a string back from Powershell to know, if everything was ok inside the Powershell script

3条回答
  •  礼貌的吻别
    2021-01-30 17:42

    CB.'s answer worked great for me with a minor change. I did not see this posted anywhere (in regards to C# and PowerShell) so I wanted to post it.

    In my PowerShell script I created created a Hashtable, stored 2 values in it (a Boolean and an Int) and then converted that into a PSObject:

    $Obj = @{}
    
    if($RoundedResults -ilt $Threshold)
    {
        $Obj.bool = $true
        $Obj.value = $RoundedResults
    }
    else
    {
        $Obj.bool = $false
        $Obj.value = $RoundedResults
    }
    
    $ResultObj = (New-Object PSObject -Property $Obj)
    
    return $ResultObj
    

    And then in my C# code I did the same thing that CB. did but I had to use Convert.ToString in order to successfully get the values back:

    ReturnInfo ri = new ReturnInfo();
    foreach (PSObject p in psObjects)
       {
         ri.ReturnCode = Convert.ToBoolean(p.Properties["ReturnCode"].Value;)
         ri.ReturnText = Convert.ToString(p.Properties["ReturnString"].Value;)
       }
    

    I found the answer to this via the following StackOverflow post: https://stackoverflow.com/a/5577500

    Where Kieren Johnstone says:

    Use Convert.ToDouble(value) rather than (double)value. It takes an object and supports all of the types you asked for! :)

提交回复
热议问题