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

如何在PowerShell脚本中向C#的Main方法传递字符串数组参数

解决方案

你可以直接构造PowerShell数组传入C#的Main方法,不需要借助Invoke-Expression(即iex),直接调用静态方法的写法更安全可靠,替换你代码最后两行即可:

# 按顺序构造Main方法需要的两个字符串参数数组
$mainArgs = @($url, $sourceFilePath)
# 直接调用静态Main方法传参
[FTPFileUpload.AsynchronousFtpUpLoader]::Main($mainArgs)

原理说明

PowerShell的基础数组类型可以直接和C#的string[]参数类型自动适配,只要参数顺序和C#方法要求的顺序一致,即可正常传递,不需要额外的类型转换。

注意事项

  • 你贴出的C#代码末尾多了一个多余的闭合大括号},需要删除后才能正常通过Add-Type编译。
  • 请确认C#代码中AsynchronousFtpUpLoader类确实位于FTPFileUpload命名空间下,如果没有声明命名空间,调用时直接写[AsynchronousFtpUpLoader]::Main($mainArgs)即可。
  • 不推荐保留iex调用方式,如果你确实需要使用该写法(路径存在特殊字符时容易出错),可以写成:
    $cmd = "[FTPFileUpload.AsynchronousFtpUpLoader]::Main(@('$($url.Replace("'", "''"))', '$($sourceFilePath.Replace("'", "''"))'))"
    iex $cmd
    

内容的提问来源于stack exchange,提问作者chaz stone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:48:01