PowerShell 函数返回 DataTable 中的重复项

标签 powershell

我有一个 PowerShell 5.0 函数,我试图用它来返回在某些下游事件中使用的数据表。但是,每次我将其放入变量时,它似乎都会返回重复项,如下所示:

function GetTable {

    $tbl = New-Object "System.Data.DataTable" 
    $tbl.Columns.Add("testNum").DataType = [string]

    for($i=0; $i -lt 3; $i++){
            $tbl.Rows.Add($i)
    }
    Write-Host $tbl.Rows.Count
    return $tbl
}

$test = GetTable
$test.Rows.Count

输出:

3
6

为什么函数返回数据表时会重复数据?

最佳答案

这是因为 Add 方法返回添加的元素,因此它也会到达管道。您可以通过将结果通过管道传输到 Out-Null 来简单地解决此问题:

function GetTable {

    $tbl = New-Object "System.Data.DataTable" 
    $tbl.Columns.Add("testNum").DataType = [string]

    for($i=0; $i -lt 3; $i++){
            $tbl.Rows.Add($i) | Out-Null
    }
    Write-Host $tbl.Rows.Count
    return $tbl
}

$test = GetTable
$test.Rows.Count

关于PowerShell 函数返回 DataTable 中的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48721593/

相关文章:

powershell - 错误计数和$Error自动变量不一致

powershell - 如何将十六进制编码的字符串转换为十六进制整数

PowerShell:Get-Item 与 Get-ChildItem 输出类型

powershell - 将 curl 转换为 PowerShell Invoke-WebRequest

powershell - 哪个 PowerShell 版本引入了给定的 cmdlet?

powershell - 为什么 PowerShell 脚本在提示输入时会暂停?

powershell - 无法在启用 MSI 的函数应用中使用 PowerShell 连接到 Azure SQL

powershell - 将字符串转换为时间跨度

validation - PowerShell : GetNewClosure() and Cmdlets with validation

azure - 如何在计划中的azure函数中运行powershell脚本