1

关于DataTablePowershellScript设置CommandletC#. 我不知道为什么一个正确构造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.

如何解决这个问题?

4

1 回答 1

1

正如 mklement0 在评论中指出的那样。我们可以访问 PSObject 内部的 BaseObject,所有东西都会被包含在内。

于 2018-06-14T11:58:48.843 回答