创建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已变更。