Командлет Powershell C# не может получить DataTable при установке со стороны сценария
У меня странная проблема с использованием DataTable
это установлено из Powershell
скрипт Commandlet
в C#
, Я не знаю, почему правильно построен DataTable
выдвигается как серия DataTableRow
как данные, а не полностью упакованные DataTable
, Это мешает мне обрабатывать что-либо дальше. Ниже C# commandlet
,
[Cmdlet(VerbsCommon.Set, "LinkParameter")]
public class SetLinkParameter : PSCmdlet
{
[Parameter(Position = 0)]
public string ParameterName { get; set; }
[Parameter(Position = 1, Mandatory = true, ValueFromPipeline = false)]
public object ParameterValue { get; set; }
protected override void ProcessRecord()
{
base.ProcessRecord();
var setParameterValue = ParameterValue
// This never comes in proper DataTable format rather than appears as System.Data.DataRow System.Data.DataRow System.Data.DataRow
.............
............
}
Выше System.Data.Row
будет равно количеству строк данных, содержащихся в таблице данных. Я не могу поставить DataTable
как тип параметра, потому что я должен установить все стандартные значения типа данных вместе с DataTable
также.
Ниже Powershell
скрипт.
$table = New-Object system.Data.DataTable
$col1 = $table.Columns.Add( "Col1", [string])
$col2 = $table.Columns.Add( "Col2", [int])
$table.Rows.Add( "bar", 0 )
$table.Rows.Add( "beer", 1 )
$table.Rows.Add( "baz", 2 )
Set-LinkParameter "CreatedData" $table
Set-LinkParameter "SetTestMessage" "testMessage" // can also be set.
Как решить эту проблему?
1 ответ
Решение
Как указал mklement0 в комментариях. Мы можем получить доступ к внутреннему объекту PSObject BaseObject, и там будет содержаться все.