从powershell导出Excel命令获取其他行
我在下面有一个powershell脚本:从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 如果我运行此脚本,我将获得额外的行
$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之前不需要
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