2017-01-31 9 views
8

Jestem trochę zdezorientowany tym problemem! Buduję większy skrypt i działał w ISE, ale nie w konsoli PowerShell. Udało mi się to wyśledzić do funkcji [System.Uri] :: EscapeDataString, która wydaje się zachowywać inaczej w różnych środowiskach, na przykład w mojej konsoli Power Shell() '&! nie są uciekani, gdzie jak w IDE wszyscy oni uciekli.EscapeDataString ma różne zachowanie między Powershell IDE i konsolą Powershell

Czy brakuje mi czegoś?

Mój kod testowy:

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

ISE:

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

PowerShell konsoli:

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

Screenshot

Dzięki!

+0

Co to jest wersja PowerShell. Sprawdź obie powłoki, aby upewnić się, że nie masz przełączników używanych na skrótach. _Possible_ to jest błąd, ale potrzebna jest wersja. – Matt

+0

Powtarzalne na PowerShell 5 na Windows 10 i Windows 7. – BenH

+0

@Matt 5.1.14393.693 To samo na obu konsolach – britcowboy

Odpowiedz

2

Oto różnica w stosunku do source: [System.UriParser].GetField('s_QuirksVersion', [Reflection.BindingFlags] 'Static, NonPublic').GetValue($null).

Oznacziłem odpowiedź jako wiki społeczności, ponieważ pojawiła się w komentarzach, powodując, że pytanie pojawiło się w wyszukiwaniu pytań bez odpowiedzi.

+0

Czy jest jakiś sposób, aby ustawić to na V3 w PowerShell? (lub V2 w ISE?) Pewna konsystencja zaoszczędziłaby mi kilka dni mojego życia. –

Powiązane problemy