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

在Jenkins中通过Invoke-Command传递变量执行Stop-Process失败

解决Jenkins中PowerShell远程停止进程的参数传递问题

问题原因

你的代码核心错误有两点:

  • Invoke-Command的ScriptBlock中,param参数错误使用了$env:process这种环境变量格式的命名,不符合参数定义规范
  • 远程PowerShell会话无法直接访问本地Jenkins的环境变量($env:*),必须通过-ArgumentList显式传递参数值

修正后的代码

# 可选:将环境变量赋值给常规变量,提升代码可读性
$targetHost = $env:hostname
$targetProcess = $env:process

# 创建远程会话
$session = New-PSSession $targetHost

# 执行远程命令,正确传递参数
Invoke-Command -Session $session -ScriptBlock {
    param($processName)
    Stop-Process -ProcessName $processName -Force
} -ArgumentList $targetProcess

# 关闭远程会话
$session | Remove-PSSession

关键注意事项

  • 参数命名规范:ScriptBlock内的param必须使用常规变量名(如$processName),不能用$env:xxx格式
  • 参数传递逻辑:远程会话无法读取本地Jenkins的环境变量,必须通过-ArgumentList把本地变量的值传递给远程ScriptBlock的参数
  • 变量大小写一致性:PowerShell对变量名大小写不敏感,但建议保持命名一致(避免混用$session和$Session)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:41:27