首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PowerShell -格式化SQL输出并将其写入CSV

PowerShell -格式化SQL输出并将其写入CSV
EN

Stack Overflow用户
提问于 2012-07-24 16:54:56
回答 1查看 2.8K关注 0票数 3

我有点纠结于我的问题,在网上搜索了几个小时后,我仍然没有找到解决它的方法。

我正在尝试执行以下操作:从几个内部联接的SQL表中读取PowerShell中的信息,并将这些信息保存在DataSet中。这就是我仍然能够做到的:

代码语言:javascript
运行
复制
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $command
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

然后将其导出为CSV,如下所示:

代码语言:javascript
运行
复制
$DataSet.Tables[0] | Export-Csv -Delimiter "," C:\test.csv -Encoding "unicode"

现在问题来了。

我的CSV看起来像这样:

代码语言:javascript
运行
复制
Servername,"Administrator","Description"
SRV01,"Admin1","Description SRV01"
SRV01,"Admin2","Description SRV01"
SRV01,"Admin3","Description SRV01"
SRV02,"Admin1","Description SRV02"
SRV02,"Admin2","Description SRV02"

我的目标是得到一个看起来像这样的CSV:

代码语言:javascript
运行
复制
Servername,Administrator,Description
SRV01,Admin1 Admin2 Admin3,Description SRV01
SRV02,Admin1 Admin2,Description SRV02

我怎么才能做到这一点呢?

编辑:

Ok让它看起来像这样:

代码语言:javascript
运行
复制
Servername,Administrator,Description
SRV01,Admin1,Description SRV01
SRV01,Admin2,Description SRV01
SRV01,Admin3,Description SRV01
SRV02,Admin1,Description SRV02
SRV02,Admin2,Description SRV02

有没有人知道怎么把它转换成这样的语法:

代码语言:javascript
运行
复制
Servername,Administrator,Description
SRV01,Admin1 Admin2 Admin3,Description SRV01
SRV02,Admin1 Admin2,Description SRV02
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-24 20:40:26

试试这个:

代码语言:javascript
运行
复制
$csv = @"
Servername,Administrator,Description
SRV01,Admin1,Description SRV01
SRV01,Admin2,Description SRV01
SRV01,Admin3,Description SRV01
SRV02,Admin1,Description SRV02
SRV02,Admin2,Description SRV02
"@

$group = ConvertFrom-Csv $csv | Group-Object -Property Servername,Description

$group | select @{n='Name';e={ ($_.Name -split ",")[0] }}, @{n='Administrators';e={ ($_.Group | select -expandproperty Administrator) -join ","}},  @{n='Description';e={ ($_.Name -split ",")[1] }} |
 convertto-csv -NoTypeInformation | Foreach-Object  -begin { $start=$true }  -process { if ($start) { $start=$false } else { $_ }  } | foreach {$_ -replace '"'}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11627396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档