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

如何将kubectl exec返回值传入PowerShell脚本进行Pester测试

解决方法

当然可行,你需要调整两个关键点:捕获kubectl exec的输出,以及让mongosh正确输出计数结果。修改后的代码如下:

Context "Foo collection" {
    It "should have no documents"{
        # 捕获kubectl exec的输出,去掉交互式参数,让mongosh仅返回计数结果
        $countOutput = kubectl exec $podName -n mongo `
            -- mongosh -u root -p $mongoSecret --quiet `
            --eval "
                db = db.getSiblingDB('thisOne');
                db.getCollection('foo').countDocuments({}, {limit: 1})
            "
        
        # 将输出转换为整数,避免字符串格式干扰断言
        $docs = [int]$countOutput
        $docs | Should -Be 0
    }
}

关键调整说明:

  • 移除-it参数:脚本运行属于非交互式环境,-it会触发不必要的终端交互逻辑,去掉后执行更稳定。
  • 添加--quiet参数:屏蔽mongosh的启动提示、连接信息等冗余输出,只保留我们需要的计数数值。
  • 简化mongosh代码:直接在--eval的最后一行执行countDocuments调用,mongosh会自动返回并打印该结果,无需额外的return或变量赋值(保留变量也可,但直接输出更简洁)。
  • 捕获并转换输出:把kubectl exec的执行结果赋值给变量,再转为整数类型,确保后续断言的准确性。

如果你的环境中mongosh输出存在多余空白字符,可以先清理再转换:

$docs = [int]$countOutput.Trim()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 15:48:29