如何将Get-Mailbox结果正确导入PowerShell DataTable?
问题解决:将Get-Mailbox数据导入DataTable
你代码的核心问题是:创建了DataRow对象后,没有将其添加到DataTable的行集合中,所以最终$v_Rooms是空表。
只需在ForEach-Object循环里添加一行$v_Rooms.Rows.Add($row),就能把创建好的行存入DataTable。
修正后的完整代码:
Import-Module ExchangeOnlineManagement Connect-ExchangeOnline -UserPrincipalName blabla@blabla.com #Define data table and columns $v_Rooms = New-Object System.Data.Datatable 'VehicleDataTable' $newcol = New-Object system.Data.DataColumn VehicleName,([string]); $v_Rooms.Columns.Add($newcol) $newcol = New-Object system.Data.DataColumn VehicleType,([string]); $v_Rooms.Columns.Add($newcol) $newcol = New-Object system.Data.DataColumn VehicleLocation,([string]); $v_Rooms.Columns.Add($newcol) #Add data $mailboxes = Get-Mailbox -ResultSize unlimited -Filter "(RecipientTypeDetails -eq 'RoomMailbox') -and (CustomAttribute1 -eq 'Vehicle')" | select name,customattribute2, Office $mailboxes | ForEach-Object { $row = $v_Rooms.NewRow() $row.VehicleName= ($_.Name) $row.VehicleType= ($_.CustomAttribute2) $row.VehicleLocation= ($_.Office) # 新增:将创建好的行添加到DataTable $v_Rooms.Rows.Add($row) } $v_Rooms
补充说明:NewRow()方法只是生成一个与DataTable结构匹配的空行对象,必须通过Rows.Add()将其加入到表的行集合中,数据才会被持久化到DataTable里。
内容的提问来源于stack exchange,提问作者sibeyzoran
相关产品推荐
相关产品推荐

