2016-03-19 13 views
2

, tip dönüştürme vb Ör:İz/ayıklama PowerShell operatörleri PowerShell'de

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 
... 

Ben -lt karşılaştırma nasıl çalıştığını izlemek istediğini PS bazı garip behavious (belki de hata ayıklama sırasında her karakter için [int][char]"x"'a dönüştürür.). Trace-Command'u kullanmayı denedim, ancak hiçbir şey döndürmüyor.

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 

bu iç operatörleri kamera arkası nasıl çalıştığını öğrenmek için herhangi bir yolu var mı? İzleme bilgisi? Verbose çıkışı? Örnek olarak -lt ve -gt kullandım, ancak bu & -operator kadar iyi olabilir ve nasıl komut veya başka bir şey ayrıştırır.

+0

Benzer bir sorunum var. DynamicObject, IEnumerable ve TryBinaryOperation'ı geçersiz kılan kendi sınıfımı uyguladım. Ama PS karşılaştırma operatörleri benim türümün en soldaki işleneni olan TryBinaryOperator yöntemini çağırmıyor gibi görünüyor, bunun yerine doğru işlenen bir dizge ise GetEnumerator çağrıldı. AST PS'nin, karşılaştırma operatörleri için özel tiplerim için bunları doğru bir şekilde uygulayabilmeleri için neler yaptıklarını anlamaya ihtiyacım var. –

cevap

1

Yardım edeceğinden emin değil, ancak -lt ve -gt, hassas olmayan işleçler oldukları gibi -ilt ve -igt gibi davranırlar. Büyük/küçük harf duyarlı işleçler istiyorsanız, -clt ve -cgt'u kullanmalısınız. İşte

Ben PowerShell 5.0 elde sonucudur I'am değil emin ben -cgt kullanırsanız
Trace-Command -PSHost -Name TypeMatch, TypeConversion -Expression { "Less" -lt "less" } 
DÉBOGUER : TypeConversion Information: 0 : Converting "System.Object[]" to "System.Object". 
DÉBOGUER : TypeConversion Information: 0 :  Result type is assignable from value to convert's type 
DÉBOGUER : TypeConversion Information: 0 : Converting "" to "System.String". 
DÉBOGUER : TypeConversion Information: 0 :  Result type is assignable from value to convert's type 
DÉBOGUER : TypeConversion Information: 0 : Converting "" to "System.String". 
DÉBOGUER : TypeConversion Information: 0 :  Result type is assignable from value to convert's type 
DÉBOGUER : TypeConversion Information: 0 : Converting "System.Management.Automation.InvocationInfo" to "System.Management.Automation.InvocationInfo". 
DÉBOGUER : TypeConversion Information: 0 :  Result type is assignable from value to convert's type 
DÉBOGUER : TypeConversion Information: 0 : Converting "System.Object[]" to "System.Object[]". 
DÉBOGUER : TypeConversion Information: 0 :  Result type is assignable from value to convert's type 
False 

aynı iz edinmesine yardımcı olan ancak sonuç True olduğunu.

+0

Huh .. Bunu PS 5.0 çalıştıran üç farklı bilgisayarda denedim ve hiçbir şey döndürmedi. Sanırım temiz yükleme zamanı. Bu biraz soruya cevap veriyor, ama biraz daha derine inmeyi umuyordum. Ör. Operatör için bir çağrı mesajı veya bir şey alabilmek için hangi sınıfın, yöntemin vb. Belki bu mümkün değil, ama ben sizin gibi insanlar hakkındaki bilgi birikimiyle şaşırmaya alışkınım. Böylece, birinin sihirli bir çözümü olup olmadığını görmek için biraz daha bekleyeceğim. :-) Teşekkürler –

+0

Windows PowerShell v5.1/PowerShell Core v6.0-alpha.17'den itibaren, yukarıdaki komut hiç izleme çıktısı üretmiyor. Ayrıca, Windows PowerShell v5.0.10586.117 sürümünde elde edilebilen bu yanıtta gösterilen izleme çıktısı, komut satırında belirli bir ifade hakkında hiçbir bilgi içermez - '{}' ifadesini geçerseniz aynı izleme çıktısını alırsınız, Yani, bir _empty_ script bloğu. – mklement0