2017-04-19 3 views
2

[System.Uri]::new('http://www.stackoverflow.com') est échoue avec un message d'erreurSystem.Uri ne contient pas de méthode nommée « nouvelle »

[System.Uri] ne contient pas une méthode appelée « nouvelle »

mais je suis capable de trouver cette méthode sur une autre boîte. et fonctionne bien.

Comment trouver s'il y a une différence entre l'objet du système chargé sous PowerShell

+0

Pourriez-vous exécuter ** $ PSVersionTable ** et vérifier les détails de deux environnements? –

Répondre

4

Vous avez besoin Powershell 5 ou plus pour utiliser le .ctor d'une classe .NET. Dans les anciennes versions de Powershell, vous devrez utiliser New-Object pour cela.

+0

@wOxxOm: J'ai juste testé ceci sur une machine Server2012R2 (PS4) et le nouveau constructeur ne fonctionne pas. – bluuf

+0

Ceci est intéressant. Apparemment, WPF5 met à niveau tout l'environnement PS de sorte que ces constructeurs fonctionnent également dans les sessions 'powershell -version 3'. IIRC J'ai utilisé ':: new()' avec succès dans PS4 avant même d'avoir installé PS5, donc cela pourrait être lié au framework .NET. Quoi qu'il en soit, cela ne semble pas être une fonctionnalité de PowerShell 5, car sinon cela n'aurait pas dû fonctionner dans les sessions '-version 3' (ou est-ce un bug?). – wOxxOm

+1

@wOxxOm 'powershell -version 3' sur une boîte avec WMF 5 est une illusion :-) Jetez un oeil à' $ PSVersionTable' –