试图更好地理解为什么下面的第二项不起作用。第一项很简单,第二项似乎更清晰,第三项似乎不直观。
# 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}
答案 0 :(得分:10)
那是因为这也被认为是一个解析错误:
"foo"\pscp.exe
虽然您已找到正确解析:
"$PUTTY_PATH\pscp.exe"
解析为有效字符串,但正如您已经注意到的那样,字符串不会执行。您必须使用调用操作符&
来调用由后面的字符串命名的命令。
答案 1 :(得分:0)
它将\
作为变量名称的一部分,并抱怨因为它不合法。如果您像我一样使用这个片段,将它放入路径中的.ps1文件中,那么如果您不希望在全局PATH环境变量中使用pscp.exe,我就会转到$ putty_path。 / p>
答案 2 :(得分:0)
猜猜,但我觉得你可能会误用花括号。您是否尝试获取环境变量PROXY_USER?通常,大括号用于启动新的语句块。
$Env:PROXY_USER
此外,您可能希望将该代理信息封装在字符串中,以确保将其视为单个参数:
"$Env:PROXY_USER@$Env:PROXY_HOST:$Env:PROXY_DIR"