PowerShell 可能丢掉 curl.exe 的空代理参数
当 curl 的空代理选项在 cmd 中表现不同时,请考虑 PowerShell 的原生参数传递行为。
curl --proxy "" 依赖 curl 收到一个空参数。这条命令在不同 Windows shell 中的行为可能不同,因为旧版 Windows PowerShell 传递原生命令时不会像 PowerShell 7.3 引入的新模式那样保留空字符串。
如果空值消失,下一个参数就可能被当作代理值消耗掉。这是命令行解析问题,发生在任何网络判断之前。
对于直接的 curl 请求,使用非空的绕过参数更容易表达意图:
curl.exe --noproxy '*' https://example.com/
请有意识地使用 curl.exe:Windows PowerShell 可能把 curl 解析为另一个命令的别名。引号中的星号会作为 curl 的所有主机的绕过值传出。
如果脚本需要更复杂的原生参数,请检查 PowerShell 版本及其原生参数传递模式。原样复制 cmd 示例并不能证明 curl 收到了相同的参数列表。