我有以下powershell代码使用它将结果保存到csv文件但我无法将它们保存在csv文件中。
import numpy as np
my_list = ['foo', 'bar', 'baz', 42]
print list(np.random.permutation(my_list))
# ['bar', 'baz', '42', 'foo']
此脚本提取角色的名称以及与该角色关联的成员。一个角色可以有多个成员。
我尝试了上面的脚本,它导出角色但是在Members字段中,我看到所有角色的字符串“Microsoft.AnalysisServices.RoleMemberCollection”。
如果我不导出到csv,我可以在ps窗口或文本文件中查看成员。
我错过了什么?
答案 0 :(得分:3)
您只能将可以表示为字符串的值导出到csv文件。 Members
是一个可能包含多个RoleMember
- 对象的集合对象,因此您需要使用计算属性来访问每个Name
内的RoleMember
- 属性。如何处理这取决于所需的输出。
您可以将对象Name-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
...