Windows PowerShell中SSH本地端口转发函数报错求助
问题修复方案
你的问题出在PowerShell的字符串变量解析逻辑上:未用插值字符串包裹的[int]$port会被直接当作文本内容传递给ssh命令,导致转发格式错误。
修改后的函数有两种可行写法:
写法一(推荐,变量边界更清晰)
function sshpc ([int]$port = 8888) { ssh -fNL "${port}:localhost:${port}" pc }
写法二(简洁版)
function sshpc ([int]$port = 8888) { ssh -fNL "$port:localhost:$port" pc }
关键说明
- PowerShell中,双引号包裹的字符串会自动解析变量,单引号则会原样输出内容。你之前的写法没有用引号包裹参数,PowerShell无法识别
$port是变量,反而把[int]$port当成了命令参数的一部分,才出现[Int][Int]8888的错误。 - 函数参数已经声明为
[int]$port,内部直接使用$port即可,无需再次强制类型转换。
测试验证:执行sshpc会默认使用8888端口,执行sshpc -port 9999会切换为9999端口,均可生成正确的转发参数格式。
内容的提问来源于stack exchange,提问作者João Bravo
相关产品推荐
相关产品推荐

