所以我正在开发一个运行纠缠测试的 powershell 脚本。该脚本连接到带有 Mongo 数据库的 Kubernetes Pod。目标是检查数据库中的集合是否为空。我对“返回计数”行之前的代码感到满意。我知道 shell 中没有 return 命令,但我将其放入以进行说明。
我本质上是试图将“count”值从“kubectl exec”获取到powershell代码中。这可能吗?
Context "Foo collection" {
It "should have no documents"{
kubectl exec -it $podName -n mongo `
-- mongosh -u root -p $mongoSecret `
--eval "`
db = db.getSiblingDB('thisOne')
collection = db.getCollection('foo')
count = collection.countDocuments({}, {limit: 1})
return count
"
$docs = count
$docs | Should -Be 0
}
}
答案1
我也在 stackoverflow 上发布了这个,在那里我得到了一个提示,可以找到这里的解决方案:https://stackoverflow.com/questions/73175179/get-return-value-from-kubectl-exec-out-into-powershell-script/73226204#73226204,即:
将返回值存储kubectl
在变量中就可以了。eval
将脚本中最终命令的返回结果输出到标准输出。然而,--quiet
需要该参数来获取没有 mongodb shell 段落“噪音”的返回值。
Context "Foo collection" {
It "should have no documents"{
$count = kubectl exec -it $podName -n mongo `
-- mongosh --quiet -u root -p $mongoSecret `
--eval "`
db = db.getSiblingDB('thisOne')
collection = db.getCollection('foo')
collection.countDocuments({}, {limit: 1})
"
$count | Should -Be 0
}
}