You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell自定义GetTotoVersion函数传递主机名参数时出现URI解析错误的求助

PowerShell自定义GetTotoVersion函数传递主机名参数时出现URI解析错误的求助

看起来你的问题核心是**$hostname变量没有被正确赋值**,从错误提示里的http:///toto/version就能看出来——中间的主机名部分是空的,导致URI格式失效。我来帮你一步步排查和解决:

首先排查最可能的原因:函数调用方式不对

你是不是调用函数的时候忘记传递主机名参数了?比如直接输入了GetTotoVersion,而没有跟着主机名?正确的调用方式应该是下面两种之一:

# 方式1:直接位置传参
GetTotoVersion "your-server-name"
# 方式2:指定参数名传参
GetTotoVersion -hostname "your-server-name"

如果是从其他变量传参,要先确认那个变量确实有值,比如:

$myHost = "toto-server-01"
GetTotoVersion $myHost

优化函数,加上参数验证和错误处理

为了避免这种空参数的情况,同时让函数更健壮,你可以给函数加参数校验和错误捕获:

function GetTotoVersion($hostname)
{
    # 第一步:验证参数是否为空
    if ([string]::IsNullOrWhiteSpace($hostname)) {
        Write-Error "请提供有效的主机名!示例用法:GetTotoVersion 'your-server'"
        return
    }

    # 构造URI
    $uri = "http://$hostname:8080/toto/version"

    try {
        # 建议直接用Invoke-WebRequest(wget是它的别名,用原名更清晰)
        $response = Invoke-WebRequest -Uri $uri -ErrorAction Stop
        # 直接返回内容
        $response.Content
    }
    catch {
        # 捕获并输出更友好的错误信息
        Write-Error "请求版本失败:$_"
    }
}

解释你之前的尝试为什么没解决问题

你之前尝试的替换引号、用${hostname}或者把URI存到变量里,这些操作本身没有问题,但它们都没解决**$hostname为空**的核心问题——因为你调用函数时根本没传对参数,所以不管怎么拼URI,结果都是空主机名的无效地址。

备注:内容来源于stack exchange,提问作者gluttony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:28:03