gpt4 book ai didi

csv - 使用Powershell将集合保存到CSV时出现问题

转载 作者:行者123 更新时间:2023-12-03 01:12:14 25 4
gpt4 key购买 nike

我在下面的powershell代码中使用该代码将结果保存到csv文件中,但无法将其保存在csv文件中。

[Reflection.Assembly]::LoadWithPartialName("Microsoft.AnalysisServices")

$SSASServerName = "SSAS_ServerName"
$SSASDB = "TESTDB"

$SSASServer = New-Object Microsoft.AnalysisServices.Server
$SSASServer.Connect($SSASServerName)
$SSASDatabase = $SSASServer.Databases.Item($SSASDB)
$SSASDatabase.Roles | Select-Object Name, Members | Export-Csv C:\dev\psout\test.Csv
pause

该脚本提取角色的名称以及与该角色关联的成员。一个角色可以有多个成员。

我尝试了上面的脚本,它导出了角色,但在“成员”字段中,所有角色都看到字符串“Microsoft.AnalysisServices.RoleMemberCollection”。

如果不导出到csv,则可以在ps窗口或文本文件中查看成员。

我想念什么?

最佳答案

您只能将可以用字符串表示的值导出到csv文件。 Members是一个可能包含多个RoleMember -objects的集合对象,因此您需要使用计算所得的属性来访问每个Name中的RoleMember -property。如何实现这一点取决于所需的输出。

您可以将对象名称属性连接到单个字符串

$SSASDatabase.Roles |
Select-Object Name, @{n="Members";e={ ($_.Members | % { $_.Name }) -join '; '}} |
Export-Csv C:\dev\psout\test.Csv -NoTypeInformation


Role1,"User1; User2"
Role2,"User3; User4"

或者,您可以在csv文件中按“每个成员每行”排列一行,我通常更喜欢这样做,因为这样可以更轻松地在Excel中进行过滤。
$SSASDatabase.Roles | ForEach-Object {
#Store role-reference so we can access it later inside the member-foreach
$r = $_
$r.Members | ForEach-Object {
#Store member-reference so it's available inside Selec-Object
$m = $_
$r | Select-Object Name, @{n="Member";e={ $m.Name }}
}
} | Export-Csv C:\dev\psout\test.Csv -NoTypeInformation


Role1,User1
Role1,User2
Role2,User3
...

关于csv - 使用Powershell将集合保存到CSV时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37167924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com