我正在使用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输出,所以如果这不是最好的方法,我会对如何构建该表的其他想法持开放态度。
答案 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)
}