0

我正在使用 Microsoft Technet 的Write-datatable

但是我遇到了一个问题,我需要输入的数据不是数组格式,我相信它是一个对象,例如

我的数据看起来像这样

FirstName : john  
SecondName : smith  
Number : 1234  

我相信我需要它看起来像这样

FirstName   SecondName   Number  
---------   ----------   ------  
john         smith        1234  

任何帮助将不胜感激

谢谢,彼得

4

3 回答 3

0

所以你有一个 powershell 对象,我们称它为 person 对象,它具有“FirstName”、“SecondName”和“Number”的成员属性。所以当你去的时候:

$person.FirstName
$person.SecondName
$person.Number

输出应该是

John
Smith
1234

你不能做这样的事情来使人对象成为字符串对象数组吗

$array = @()
$person | get-member -MemberType Property | % {$array += $person.($_.Name)}

这将使您的数组以奇怪的顺序排列。所以我想你需要对订单进行硬编码。

$array = @()
$order = 'FirstName','SecondName','Number'
$order | % {$array += $person.$_}
于 2013-03-21T21:15:12.077 回答
0

查看Write-DataTable函数,该$data参数用作SqlBulkCopyWriteToServer()类中对象方法的 uniq 参数。根据 Microsoft 文档,应该是一个 DataRow 数组、一个 DataTable 或一个 IDataReader。$data

在此处输入图像描述

于 2013-03-21T04:01:21.353 回答
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
于 2013-03-22T16:56:33.360 回答