从powershell导出Excel命令获取其他行

从powershell导出Excel命令获取其他行,powershell,Powershell,我在下面有一个powershell脚本: $DataVariable = Invoke-Sqlcmd -ServerInstance "B1" -Database "SQL4" -Query "SELECT * FROM Table1" $DataVariable | Export-Excel -Path $OutputFile -WorkSheetname "Robert" -Title "MG" -TitleFillPattern DarkDown 如果我运行此脚本,我将获得额外的行

我在下面有一个powershell脚本:

$DataVariable = Invoke-Sqlcmd -ServerInstance "B1" -Database "SQL4" -Query "SELECT * FROM Table1"

$DataVariable | Export-Excel  -Path $OutputFile -WorkSheetname "Robert" -Title "MG" -TitleFillPattern DarkDown 
如果我运行此脚本,我将获得额外的行,即
行错误
项数组
hasrerrors


如何删除这些行?

调用sqlcmd返回额外字段,您可以使用以下方法删除这些字段:

tl;dr

我想说,您的问题更多地在于Invoke-Sqlcmd命令,而不是Export-Excel命令

  • 仅选择感兴趣的柱,然后再对其进行管道化 导出Excel的步骤

  • 或者,选择所有内容并使用
    -ExcludeProperty
    删除所需内容
    在管道传输到
    导出Excel之前不需要

事实上,我对Export Excel从
System.Data.DataRow
类型中获取值印象深刻

将脚本的修改版本抛出到变量中,并在上调用
Get Member
,这表明TypeName是
System.Data.DataRow

如果我们打开,我们会看到它具有以下属性(高亮显示是我自己的)

有错误,Item(),项目数组行错误行状态

使用
Get Member
我们看不到它们,但是如果我们将变量管道化到
Select Object-Property*
,那么我们就会看到那些隐藏的家伙

我想说,您的问题更多地在于
Invoke Sqlcmd
命令,而不是
Export Excel
命令。
快速解决方法是,在将列输送到
导出Excel
之前,只选择您感兴趣的列。或者,正如@Abhijith pk所指出的,选择所有内容并使用
-ExcludeProperty
删除您不想要的内容

$dataVar | 
  Select Col1 | 
  Export-excel `
    -Path .\testing\datavar.xlsx `
    -WorkSheetname Doug `
    -Title DougSoCool `
    -TitleFillPatten DarkDown


HTH

我使用了您的方法,但现在遇到一个错误:选择对象:找不到接受参数“System.Object[]”的位置参数。在C:\branchs\Ops\PSScripts\TestingDSTest.ps1:478 char:24+。。。t变量|选择对象[Test Code]、日志号、修订将[Test Code]更改为“Test Code”。看起来你把SQL和PowerShell搞混了:)
$dataVar | 
  Select Col1 | 
  Export-excel `
    -Path .\testing\datavar.xlsx `
    -WorkSheetname Doug `
    -Title DougSoCool `
    -TitleFillPatten DarkDown