![将 kubectl exec 的返回值获取到 powershell 脚本中](https://linux22.com/image/208865/%E5%B0%86%20kubectl%20exec%20%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC%E8%8E%B7%E5%8F%96%E5%88%B0%20powershell%20%E8%84%9A%E6%9C%AC%E4%B8%AD.png)
所以我正在开发一个运行纠缠测试的 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
}
}