我有一个存储为System.Array的变量,显示为;
Site : https://value.sharepoint.com/
Email : value@value.co.uk
DisplayName : value
UniqueId : value
AcceptedAs : value@value.co.uk
WhenCreated : 24/01/2019 06:02:45
InvitedBy : value_value.co.uk#ext#@value.onmicrosoft.com
当我尝试将此变量导出为文件时,它以相同的格式显示。由于这不是表格的正确结构(如下所示),因此当我尝试在Power BI中使用该数据时,将无法使用该数据。
Site Email ect
---- ---- ----
https://value.sharepoint.com/ value@value.co.uk ect
我需要将数据放入上面显示的结构中。我已经尝试过;
$Test = New-Object -TypeName PSObject -Property $ExternalUsers
但这会导致以下错误;
New-Object : Cannot convert 'System.Object[]' to the type 'System.Collections.IDictionary' required by parameter 'Property'. Specified method is not supported.
然后我尝试遍历数组中的所有项目,然后为每个项目创建一个对象,然后再将其添加到“主对象”中;
foreach($var in $ExternalUsers){
$Test = New-Object -TypeName PSObject -Property $ExternalUsers
$Test | Add-Member -MemberType NoteProperty -Name Site -Value $var.Site
$Test | Add-Member -MemberType NoteProperty -Name Email -Value $var.Email
$TestObject += $Test
}
这使每个项目都具有正确的结构,但是当我尝试将所有项目重新添加到一个变量中时,我得到了错误;
Method invocation failed because [System.Management.Automation.PSObject] does not contain a method named 'op_Addition'.
有什么想法可以解决这个问题吗?
答案 0 :(得分:1)
在我看来,您好像有一个数组(System.Object[]
),其中包含具有属性Site
,Email
等的PSObjects。
像这样的结构非常适合导出到CSV文件,然后您可以将其导入到Excel等电子表格应用程序中。
为此,您可以使用cmdlet Export-Csv
,如下所示:
$ExternalUsers | Export-Csv -Path 'PATH AND FILENAME FOR THE OUTPUT CSV FILE' -NoTypeInformation
如果显示的输出是完整的,则似乎数组中只有一个元素。您可以通过查看$ExternalUsers.Count
进行检查。
我不太确定您的意思是“因为这不是表格的正确结构” ,因为您可以很容易地使用
将其显示为表格$ExternalUsers | Format-Table -AutoSize
控制台窗口上的输出:
Site Email DisplayName UniqueId AcceptedAs WhenCreated InvitedBy
---- ----- ----------- -------- ---------- ----------- ---------
https://value.sharepoint.com/ value@value.co.uk value value value@value.co.uk 24/01/2019 06:02:45 value_value.co.uk#ext#@value.onmicrosoft.com
如果所需的属性较少,则只需遍历数组并从其中的对象中选择要保留的属性:
$Shortened = $ExternalUsers | ForEach-Object {
$_ | Select-Object Site, Email
}
$Shortened | Format-Table -AutoSize
会产生:
Site Email
---- -----
https://value.sharepoint.com/ value@value.co.uk
我不喜欢Power BI,但是请记住Format-Table
cmdlet仅用于在控制台上显示。
除了提供数据的视图之外,它不提供其他任何功能。
希望这会有所帮助
答案 1 :(得分:0)
使用:
$TestObject = @()
,无需指定(-Property $ ExternalUsers)
$Test = New-Object -TypeName PSObject