2017-01-31 26 views
8

arasındaki farklı davranışı olan EscapeDataString, bu sorunla biraz karıştı! Daha büyük bir betik oluşturuyorum ve ISE'de çalışıyordu ama bir powershell konsolunda değil. Farklı ortamlar arasında farklı şekilde davranıyormuş gibi görünen [System.Uri] :: EscapeDataString işlevini takip etmeyi başardım, örneğin benim powershell konsolumda() '&! IDE'de olduğu gibi kaçtılar, kaçtılar.Powershell IDE ve Powershell konsolu

Bir şey mi eksik?

Testim kodu:

[System.Uri]::EscapeDataString("/?:@%!$&'/*+,;=()") 

İMKB çıkışı:

%2F%3F%3A%40%25%21%24%26%27%2F%2A%2B%2C%3B%3D%28%29 

Powershell Konsol çıkışı:

%2F%3F%3A%40%25!%24%26'%2F*%2B%2C%3B%3D() 

Screenshot

teşekkürler!

+0

PowerShell sürümünüz nedir? Kısayollarınızda kullanılan anahtarların bulunmadığından emin olmak için her iki mermiyi de kontrol etmeyi unutmayın. _Possible_ bu bir hatadır ama emin olmak için versiyona ihtiyaç duyar. – Matt

+0

Windows 10 ve Windows 7'de PowerShell 5 üzerinde yeniden üretilebilir. – BenH

+0

@Matt 5.1.14393.693 Her iki konsolda da aynı – britcowboy

cevap

2

source: [System.UriParser].GetField('s_QuirksVersion', [Reflection.BindingFlags] 'Static, NonPublic').GetValue($null) için aşağıdaki fark geçerlidir.

Yanıtı topluluk wiki olarak işaretledim çünkü yorumlarda göründü ve sorulan soruların yanıtlanmamış sorular için sorulmasına neden oldu.

+0

Bunu PowerShell'de V3 olarak ayarlamanın herhangi bir yolu var mı? (ya da İM'de V2?) Bazı kıvamlar hayatımın birkaç gününü kurtardı. –