Командлет Powershell C # не может получить DataTable при установке со стороны сценария - PullRequest
0 голосов
/ 13 июня 2018

У меня странная проблема с использованием DataTable, установленным с Powershell Script 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 Ответ

0 голосов
/ 14 июня 2018

Как указал mklement0 в комментариях.Мы можем получить доступ к внутреннему BaseObject PSObject, и там будет содержаться каждая вещь.

...