«неожиданный токен» в PowerShell при полном прохождении исполняемого файла - PullRequest
4 голосов
/ 01 марта 2010

Просто пытаюсь лучше понять, почему второй пункт ниже не работает. Первый пункт прост, второй кажется более понятным, третий кажется не интуитивным.

# My path includes pscp so this works.
pscp.exe -i $PRIVATE_KEY $file ${PROXY_USER}@${PROXY_HOST}:${PROXY_DIR}

# This does not work. I get unexpected token error. Why? What does that mean?
$PUTTY_PATH\pscp.exe -i $PRIVATE_KEY $file ${PROXY_USER}@${PROXY_HOST}:${PROXY_DIR}

# & is required to solve the problem.
& "$PUTTY_PATH\pscp.exe" -i $PRIVATE_KEY $file ${PROXY_USER}@${PROXY_HOST}:${PROXY_DIR}

Ответы [ 3 ]

10 голосов
/ 01 марта 2010

Это потому, что это также считается ошибкой разбора:

"foo"\pscp.exe 

Принимая во внимание, что это правильно, как вы нашли:

"$PUTTY_PATH\pscp.exe"

Это разрешает допустимую строку, но, как вы уже заметили, строка не выполняется. Вы должны использовать оператор вызова &, чтобы вызвать команду, названную в следующей строке.

0 голосов
/ 01 марта 2010

Просто угадаю, но у меня такое ощущение, что вы, возможно, неправильно используете фигурные скобки. Вместо этого вы пытаетесь получить переменную среды PROXY_USER? Обычно фигурные скобки используются для запуска нового блока операторов.

$Env:PROXY_USER

Кроме того, вы можете инкапсулировать эту информацию прокси в строку, чтобы гарантировать, что она обрабатывается как один аргумент:

"$Env:PROXY_USER@$Env:PROXY_HOST:$Env:PROXY_DIR"
0 голосов
/ 01 марта 2010

Он принимает \, чтобы быть частью имени переменной, и жалуется, потому что это недопустимо. Если вы используете этот фрагмент, как я, поместив его в файл .ps1 на вашем пути, то я просто перешел бы к $ putty_path, если вы не хотите иметь pscp.exe в глобальном PATH env var.

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