0
点赞
收藏
分享

微信扫一扫

PowerShell DataTable的运用

创建DataTable并添加column

PS C:\Users\xiamingliang> $result= New-Object System.Data.DataTable
PS C:\Users\xiamingliang> $result.Columns.Add("ComputerName") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("O_SN") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("Manufacturer") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("Model") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("Name") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("Domain") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("D_SN") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("CPU") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("Memory") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("Disk") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("OSVersion") | Out-Null
PS C:\Users\xiamingliang> $result.Columns.Add("CurrentLogonUser") | Out-Null
PS C:\Users\xiamingliang> $result
PS C:\Users\xiamingliang> $result.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     DataTable                                System.ComponentModel.MarshalByValueComponent


PS C:\Users\xiamingliang> $result.count
PS C:\Users\xiamingliang> $result
PS C:\Users\xiamingliang>


构建行数据并添加到Row

PS C:\Users\xiamingliang> $v = @(1,2,3,4,5,6,7,8,9,10,11,12)
PS C:\Users\xiamingliang> $result.Rows.Add($v)


ComputerName     : 1
O_SN             : 2
Manufacturer     : 3
Model            : 4
Name             : 5
Domain           : 6
D_SN             : 7
CPU              : 8
Memory           : 9
Disk             : 10
OSVersion        : 11
CurrentLogonUser : 12



PS C:\Users\xiamingliang>
PS C:\Users\xiamingliang> $result.count
PS C:\Users\xiamingliang> $result.GetType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     DataTable                                System.ComponentModel.MarshalByValueComponent


#在添加一行
PS C:\Users\xiamingliang> $result.Rows.Add($v)


ComputerName     : 1
O_SN             : 2
Manufacturer     : 3
Model            : 4
Name             : 5
Domain           : 6
D_SN             : 7
CPU              : 8
Memory           : 9
Disk             : 10
OSVersion        : 11
CurrentLogonUser : 12



PS C:\Users\xiamingliang> $result.count
PS C:\Users\xiamingliang> 
PS C:\Users\xiamingliang> $result


ComputerName     : 1
O_SN             : 2
Manufacturer     : 3
Model            : 4
Name             : 5
Domain           : 6
D_SN             : 7
CPU              : 8
Memory           : 9
Disk             : 10
OSVersion        : 11
CurrentLogonUser : 12

ComputerName     : 1
O_SN             : 2
Manufacturer     : 3
Model            : 4
Name             : 5
Domain           : 6
D_SN             : 7
CPU              : 8
Memory           : 9
Disk             : 10
OSVersion        : 11
CurrentLogonUser : 12



PS C:\Users\xiamingliang>
PS C:\Users\xiamingliang> $result.ComputerName
1
1
PS C:\Users\xiamingliang>


之后可以方便将构建好的DataTable导出;

$result | select * | Export-Csv -Path $ResultFile



删除delete和remove

Delete的使用是 datatable.Rows[i].Delete();

Remove的使用是datatable.Rows.Remove(datatable.Rows[i]);

区别是:

使用delete后,只是当前行被标记为deleted,但是行还是存在的,Rows.Count还是删除之前的行数.需要使用datatable.AcceptChanges()方法来提交修改.

Remove方法则是直接删除。

注意;如果在for循环里执行删除行的话,最好是使用delete方法,循环完后再使用AcceptChanges()方法提交修改;否则会出现报错,提示datable已变更。

举报

相关推荐

0 条评论