代码之家  ›  专栏  ›  技术社区  ›  Ethan Post

完全路径可执行文件时powershell中的“意外令牌”

  •  4
  • Ethan Post  · 技术社区  · 16 年前

    只是想更好地理解为什么下面的第二项不起作用。第一个项目很简单,第二个看起来更清晰,第三个看起来不直观。

    # 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 回复  |  直到 16 年前
        1
  •  9
  •   Keith Hill    16 年前

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

    "foo"\pscp.exe 
    

    然而,正如您所发现的那样,它的解析是正确的:

    "$PUTTY_PATH\pscp.exe"
    

    它解析为一个有效的字符串,但正如您已经注意到的,字符串不会执行。你得用电话接线员 & 调用由下面的字符串命名的命令。

        2
  •  0
  •   Segfault    16 年前

    它把 \ 成为变量名的一部分,因为它不合法而抱怨。如果您像我一样使用这个代码片段,将其放入路径中的.ps1文件中,那么如果您不想在全局路径env var中包含pscp.exe,我只需cd到$putty_path。

        3
  •  0
  •   Goyuix    16 年前

    只是猜测,但我觉得你可能误用了花括号。您是否试图获取环境变量proxy_user?通常,花括号用于启动新的语句块。

    $Env:PROXY_USER
    

    此外,您可能希望将代理信息封装在字符串中,以确保将其视为单个参数:

    "$Env:PROXY_USER@$Env:PROXY_HOST:$Env:PROXY_DIR"
    
    推荐文章