私は、初期化された[System.Data.DataTable]
オブジェクトデータ型を返すユーティリティ関数を作成しようとしています。PowerShell関数(DataTable)から特定のデータ型を返す方法
私は迷惑なPowerShell関数の復帰動作を認識しており、すべてを返して[System.Array]
の戻り値の型にしようとします。 以前私はいつもその問題を回避することができました。通常は "comma trick"を使用して自分自身の配列を返します。@(,$result)
- 今回はこれで違いはなく、オプションがなくなってしまいました...
私が通常使う別のトリックは$null
ですプロセスブロック(私のコードは以下を参照してください) - この方法でパイプラインをだまして、出力を "展開"することはありません...
私の答えには不可能ではありません。 PowerShellでは不可能です:)
ここに私のコードです:
function Get-SourceDataTable
{
[OutputType([System.Data.DataTable])]
[cmdletbinding()]
param(
[parameter(Mandatory=$true, Position=0)]
[System.Data.SqlClient.SqlBulkCopy] $Destination,
[parameter(Mandatory=$true, Position=1)]
[System.Collections.Specialized.OrderedDictionary] $ColumnDefinition,
[parameter(Mandatory=$false, Position=2)]
[int]$ColumnStartIndex = 0
)
BEGIN{
$datatable = New-Object System.Data.DataTable
$colIndex = $ColumnStartIndex
}
PROCESS{
$ColumnDefinition.Keys |
foreach {
$null = $datatable.Columns.Add($_, $ColumnDefinition[$_]) # define each column name and data type
$null = $Destination.ColumnMappings.Add($_, $colIndex) # map column to destination table
$colIndex++
}
}
END{
return ,$datatable
}
}
私は誰かがむしろreturn
使用Write-Output -NoEnumerate
よりも...作業
あなたが試してみました出力をDataTableとしてキャストするだけですか? '[system.data.datatable] $ MyVar = Get-SourceDataTable $ Dest $ ColDef' – TheMadTechnician
はい、出力タイプに影響しないキャストを試しました – Emil