Microsoft Accessからテーブルを取得しようとしていて、CSVファイルの各列がプロパティになる のテーブルがPowerShellにあります行内の項目がプロパティ値になります。「Import-CSV」のようなPowershellカスタムオブジェクトを作成するには
$ColumnCount = 0;
$contactObject = new-object PSObject;
if ($rs.RecordCount -ne 0) {
do {
$rs.MoveFirst()
$valueArray = @();
do {
foreach ($columnHeader in $rs.fields.item($ColumnCount).name) {
$value = $rs.Fields.Item($columnHeader).Value;
$valueArray += $value
}
$rs.MoveNext()
} until ($rs.EOF -eq $True)
$contactObject | Add-Member -MemberType NoteProperty -Name $columnHeader -Value $valueArray;
$ColumnCount++
} until ($ColumnCount -eq $rs.fields.count)
}
そしてそれは、この出力::私が持っていただけに近い成功はこれです
EquipmentPackageID ElementID ArchitectureID Delete
------------------ --------- -------------- ------
{117, 117, 126, 126...} {32, 32, 32, 32...} {-1, 1, -1, 1...} {False, False, False, False...}
しかし、私は個々のアレイを望んでいません。
基本的に1つのテーブルにしたいです。また、この関数は異なるサイズのテーブルと名前付きテーブルをアクセスから受け入れることができなければなりません。 この4列テーブルに合わせたカスタムオブジェクトを作成することはできません。
また$MyFiles = Get-ChildItem C:\Windows\ | ForEach-Object {
[pscustomobject]@{
Name = $_.Name;
FullName = $_.FullName;
CreationDate = $_.CreationTime.Date;
}
}
、このパターンを避ける:
$Array = @()
$x | ForEach-Object {
$Record = [...]
$Array += $Record
}
Basic .NETの配列のサイズを変更することはできません
コードを内側にして、データベースの各レコードから1つのカスタムオブジェクトを作成し、カスタムオブジェクトを配列に追加してみてください。 –
私はそれを試してみました。各値のadd-memberをループして、それらを一緒に追加します。それは動作するようですが、**のエラーが発生します: "add-member:その名前のメンバが既に存在するため、" Delete "という名前のメンバを追加できません。あなたのコマンドにパラメータを強制してください。 "**そして、もし私がそれを加えると、それはまだ動作しません。しかし、それは最初のレコードのための素晴らしいテーブルを出力します。 – matt