完全路径化可执行文件时PowerShell中的"意外令牌"

Eth*_*ost 4 powershell

只是想更好地理解为什么下面的第二项不起作用.第一项很简单,第二项似乎更清晰,第三项似乎不直观.

# 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}
Run Code Online (Sandbox Code Playgroud)

Kei*_*ill 10

那是因为这也被认为是一个解析错误:

"foo"\pscp.exe 
Run Code Online (Sandbox Code Playgroud)

鉴于您已找到正确解析:

"$PUTTY_PATH\pscp.exe"
Run Code Online (Sandbox Code Playgroud)

这解析为有效的字符串,但正如您已经注意到的那样,字符串不会执行.您必须使用call运算符&来调用由后面的字符串命名的命令.