C#でPowerShellコマンドレットを作成しようとしています。ある関数では、1行のログを出力してオブジェクトを返す必要があります。両方の場所でWriteObject()
を使用している場合は、PowerShellウィンドウでそれらを見ることができます。しかし、変数を使用して出力を自分のコマンドレットにすると、文字列とオブジェクトの両方が取得されます。どのようにして、変数に返すオブジェクトだけを取得させることができますか?PowerShellコマンドレットでデバッグメッセージを出力できますが、戻り値としてWriteObjectは出力できませんでしたか?
public override void ExecuteCmdlet()
{
Dictionary<string, string> returnValue = new Dictionary<string, string>();
WriteObject("Debug Log"); // Print log
// ... do something ...
WriteObject(returnValue); // Return value
}
foo
という名前の私のコマンドレットを想定します。私は
$ret = foo
$ret.Count
を実行する場合、出力は2
$ret
あるPowerShellウィンドウでは、出力は、デバッグメッセージと辞書の両方が含まれています。 $ret
には辞書が含まれていますか?
ありがとうございます!
コマンドレットを使用する場合、WriteDebugおよびWriteVerboseには追加のパラメータが必要です。とにかく、-Verboseや-Debugなしで出力を得るには? – NonStatic
出力を汚染しないでください。何かエラーがありますか? Cmdlet.WriteDebugとCmdlet.WriteVerboseは、メッセージテキスト以上のものは必要ありませんか? –
デバッグ出力をオンにしない場合、または-Debugを指定しない場合、エラーは出力されません。私は、ユーザにさらなるステップとパラメータを必要とせずに、出力オブジェクトに含まれていないメッセージを得るようにしたいと思います。 – NonStatic