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

如何在PowerShell脚本中调用C#方法并传递PS变量作为参数?

解决PowerShell传递变量值给C#方法的问题

直接调用(最优方案)

如果C#方法已在PowerShell环境中可用(比如通过Add-Type加载了类或相关模块),直接不带引号调用方法并传入变量即可,无需把调用语句拼接成字符串:

$en = "en"
$to = "to"
# 直接传递变量,PowerShell会自动解析变量的实际值
success $en $to
# 也可以使用括号语法(PowerShell中括号用于表达式包裹)
success($en, $to)

注意:不要将整个调用语句用双引号包裹,否则PowerShell会把它当作字符串字面量传递,而非执行方法调用。

动态构造调用(特殊场景)

若因环境限制必须通过字符串形式传递调用命令,可先构造包含实际值的命令字符串,再用Invoke-Expression执行(需注意避免注入风险):

$en = "en"
$to = "to"
# 格式化生成带实际值的调用字符串,给参数加单引号避免语法问题
$call = "success('{0}','{1}')" -f $en, $to
# 执行构造好的命令
Invoke-Expression $call

也可利用PowerShell双引号自动展开变量的特性直接生成:

$call = "success('$en','$to')"

之前的错误原因

  • 使用"success({0},{1})" -f $en, $to仅生成了一个字符串,并未执行方法调用,若直接将该字符串传给执行接口,C#方法收到的只是字符串本身而非执行结果。
  • 用"success($en, $to)"时,若你是将这个字符串直接传递给某个执行入口而非直接执行,可能因环境未正确解析双引号内的变量展开,导致传递的是未替换的变量名而非实际值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:42:10