、型変換など例:トレース/デバッグPowerShellのオペレーター
Trace-Command -PSHost -Name ParameterBinding -Expression { $null = "c:\" | dir}
...
DEBUG: ParameterBinding Information: 0 : Parameter [Path] PIPELINE INPUT ValueFromPipeline NO COERCION
DEBUG: ParameterBinding Information: 0 : BIND arg [c:\] to parameter [Path]
DEBUG: ParameterBinding Information: 0 : Binding collection parameter Path: argument type [String], parameter type [System.String[]], collection type Array, eleme
nt type [System.String], no coerceElementType
...
私は-lt
比較がどのように機能するかを追跡したかったPSでいくつかの奇妙なbehaviousをデバッグしている間(多分それ各文字などのために[int][char]"x"
に変換されます)。 Trace-Command
を使用しようとしましたが、何も返されません。
Trace-Command -PSHost -Name TypeMatch, TypeConversion -Expression { "Less" -lt "less" }
#No trace-output, only returned value
False
#Get any type of trace-informatino
Trace-Command -PSHost -Name * -Expression { "Less" -lt "less" }
#No trace-output, only returned value
False
これらの内部事業者は舞台裏の仕組みを知る方法はありますか?トレース情報?冗長出力?私は-lt
と-gt
を例として使用しましたが、これは同様にコマンドやその他のものを解析する方法と同様に可能です。
私も同様の問題があります。 DynamicObject、IEnumerableを継承し、TryBinaryOperationをオーバーライドする独自のクラスを実装しました。しかし、PS比較演算子はTryBinaryOperatorメソッドを私の型の一番左のオペランドではなく、右のオペランドが文字列でGetEnumeratorが呼び出された場合に呼びます。私はAST PSが私のカスタムタイプのために適切に実装するために比較演算子のために何を構築するのかを理解する必要があります。 –