Как остановить Powershell, настаивая на одной черте в параметрах? - PullRequest
4 голосов
/ 10 июня 2010

Кажется, что кто-то немного изменил способ синтаксического анализа переключателей параметров на powershell. На некоторых машинах работает "split-path c: \ x \ y --parent". На некоторых это не удается. Может кто-нибудь сказать мне а) что вызывает разницу и б) как я могу это остановить?

1 Ответ

4 голосов
/ 10 июня 2010

Параметры переключения должны работать одинаково как в V1, так и в V2 (это означает, что -parent - правильный синтаксис)

В вашем случае --parent должен быть связан с параметром в виде строки. Это не должно интерпретироваться как переключатель. Вы можете проверить привязку через Trace-Command

Trace-Command parameterbinding -Expression { split-path c:\x\y --parent} -PSHost

Дополнительная информация:

С учетом --: каждая строка за -- интерпретируется как аргумент, независимо от того, выглядит ли он как переключатель.

[14]: function test { 
    param([switch]$sw, [string]$str) 
    write-host switch is $sw
    write-host str is $str 
}
[15]: test 1
switch is False
str is 1
[16]: test -sw
switch is True
str is
[17]: test -- -sw
switch is False
str is -sw
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...