当SQL查询没有返回任何内容时,向PowerShell表添加空行

时间:2015-12-17 01:04:54

标签: powershell

我正在使用PowerShell SQL查询a在数据库中执行服务器查找,如下所示:

$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$command = $connection.CreateCommand()

$table = new-object “System.Data.DataTable”
$ServerArray = "Server1", "Server2", "Server3"

$ServerArray | ForEach-Object {
    $query = "SELECT * FROM dbo.tablename where System_Name = '$_'"
    $command.CommandText  = $query
    $result = $command.ExecuteReader()
    $table.Load($result)
}
$table | export-csv -path c:\temp\serverlookup.csv

这大部分工作正常 - 我从dbo.tablename获取了每个服务器匹配的所有相关信息,并且表格格式正确。

但是,dbo.tablename中可能不存在某些服务器,但我希望输出包含空白行。这有助于在粘贴回Excel文档时将事情排除在外。

我能够从查询中检测到空白/不返回以下内容:

if (!$result.Read())

但是如何让它为$ table添加一个空白行以进行最终的CSV导出?

最终我正在尝试使用来自dbo.tablename的数据为每个服务器构建一个csv输出,所以如果这不是最好的方法,我会对如何构建该表的其他想法持开放态度。

2 个答案:

答案 0 :(得分:0)

之前从未使用过这个,但你可以试试这个。可能不仅仅是这一行。你必须检查链接。

$chroot() {
> /bin/chroot "$@"
> echo goodby
> }
$ chroot /
exit
goodby

如此处所示 How to insert 'Empty' field in ComboBox bound to DataTable

答案 1 :(得分:0)

我能够使用以下方法让它工作:

$ServerArray | ForEach-Object {
    $query = "SELECT * FROM dbo.tablename where System_Name = '$_'"
    $command.CommandText  = $query
    $result = $command.ExecuteReader()

    if (!$result.HasRows) {
        $table.Rows.Add()
    }
    $table.Load($result)
}