Как выполнить команду в Powershell 6 (ядро) из Powershell 5? - PullRequest
0 голосов
/ 22 мая 2019

Я хочу запустить следующую команду из Powershell 5, но заставить ее выполнить с помощью Powershell 6:

$PSVersionTable.PSVersion.Major

Как это можно сделать?

Ожидаемое возвращаемое значение от команды должно быть '6'.

Я получаю это:

pwsh -command "$PSVersionTable.PSVersion.Major"

System.Collections.Hashtable.PSVersion.Major : The term 'System.Collections.Hashtable.PSVersion.Major' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ System.Collections.Hashtable.PSVersion.Major
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (System.Collections.\u2026ble.PSVersion.Major:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

1 Ответ

1 голос
/ 22 мая 2019

Проблема в двойных кавычках. PowerShell 5 использует интерполяцию строк в строке перед передачей ее в pwsh. Итак, что вы видите как:

pwsh -command "$PSVersionTable.PSVersion.Major"

Фактически передается как:

pwsh -command "System.Collections.Hashtable.PSVersion.Major.PSVersion.Major"

Решение состоит в том, чтобы использовать одинарные кавычки (которые «отключают» интерполяцию):

pwsh -command '$PSVersionTable.PSVersion.Major'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...