我正在使用Microsoft Technet的Write-datatable。
但我遇到的问题是我需要输入的数据不是数组格式,我相信它是一个对象,例如。
我的数据看起来像这样
FirstName : john
SecondName : smith
Number : 1234
我相信我需要它看起来像这样
FirstName SecondName Number
--------- ---------- ------
john smith 1234
非常感谢任何帮助
谢谢, 彼得
答案 0 :(得分:0)
查看Write-DataTable函数,$data
参数用作类SqlBulkCopy中对象的方法WriteToServer()
的uniq参数。根据Microsoft文档$data
应该是DataRow数组,DataTable或IDataReader。
答案 1 :(得分:0)
所以你有一个powershell对象,我们称之为person对象,它具有'FirstName','SecondName'和'Number'的成员属性。所以当你去的时候:
$person.FirstName
$person.SecondName
$person.Number
输出应为
John
Smith
1234
你不能做这样的事情来使person对象成为一个字符串对象数组
$array = @()
$person | get-member -MemberType Property | % {$array += $person.($_.Name)}
这将使您的阵列处于一个奇怪的顺序。所以我想你需要对订单进行硬编码。
$array = @()
$order = 'FirstName','SecondName','Number'
$order | % {$array += $person.$_}
答案 2 :(得分:0)
我发现创建一个新的.NET数据表,然后将数据传递给它工作,感谢大家指点
$Data_BOX_ComputerSystem2 = New-Object System.Data.DataTable
$Data_BOX_ComputerSystem2.Columns.Add("Date") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("Name") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("Model") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("Manufacturer") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("Description") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("DNSHostName") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("Domain") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("DomainRole", [int]) | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("PartOfDomain") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("NumberOfProcessors", [int]) | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("SystemType") | Out-Null
$Data_BOX_ComputerSystem2.Columns.Add("TotalPhysicalMemory") | Out-Null
$Data_BOX_ComputerSystem | ForEach-Object {
$row = $Data_BOX_ComputerSystem2.NewRow()
$row.Item('Date') = get-date -format G
$row.Item('Name') = $_.Name.ToString()
$row.Item('Model') = $_.Model.ToString()
$row.Item('Manufacturer') = $_.Manufacturer.ToString()
$row.Item('Description') = $_.Description.ToString()
$row.Item('DNSHostName') = $_.DNSHostName.ToString()
$row.Item('Domain') = $_.Domain.ToString()
$row.Item('DomainRole') = $_.DomainRole.ToString()
$row.Item('PartOfDomain') = $_.PartOfDomain.ToString()
$row.Item('NumberOfProcessors') = $_.NumberOfProcessors.ToString()
$row.Item('SystemType') = $_.SystemType.ToString()
$row.Item('TotalPhysicalMemory') = $_.TotalPhysicalMemory.ToString()
$Data_BOX_ComputerSystem2.Rows.Add($row)}
WriteDataTable server database table $Data_BOX_ComputerSystem2