パイプラインから入力を受け取るPowerShellの高度な関数を作成しています。具体的には、import-csvからパイプインします。問題は、私が使用しているcsvファイルの列ヘッダーがpsに対して無効な構文を使用していることです。これが私のコードのようなものです
function my-function{
[CmdletBinding()]
params
(
[Parameter(Mandatory=$false,ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[string]$Id = $_.ID,
[(Parameter(Mandatory=$false,ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$true)]
[string]$IdRaw = $_."ID(RAW)",
)
BEGIN{
#Sets up a db connection
}
PROCESS{
#Builds an insert query with csv members
}
END{
#closes db connection
}
}
ID,ID(RAW),Date Time,Date Time(RAW),Type,Type(RAW)
29874,29874,4/18/2012 23:58,41018.20753, Servername, ServernameRaw
csv入力でこれを実行すると、$ Idの値は2905になりますが、$IdRaw変数は$_ハッシュテーブル全体の文字列表現を取ります。有効な名前{URL、ID、ステータス}のパラメータを作成するだけですべて機能します。スペースまたは(RAW)を含むものは、$_変数全体を受け取ります。
-パトリック