0

Microsoft TechnetのWrite-datatableを使用しています。

しかし、入力する必要があるデータが配列形式ではないという問題があります。たとえば、オブジェクトだと思います

私のデータは次のようになります

FirstName : john  
SecondName : smith  
Number : 1234  

そして、私はそれがこのように見える必要があると信じています

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

どんな助けでも大歓迎です

ありがとう、ピーター

4

3 に答える 3

0

これで、PowerShellオブジェクトができました。これを、「FirstName」、「SecondName」、および「Number」のメンバープロパティを持つpersonオブジェクトと呼びましょう。だからあなたが行くとき:

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

出力は次のようになります

John
Smith
1234

このようなことをして、personオブジェクトをstringsオブジェクトの配列にすることはできません

$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()のオブジェクトのメソッドへの一意のパラメーターとして使用されます。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 に答える