だから私はタングルテストを実行するpowershellスクリプトを開発しています。このスクリプトはMongoデータベースを持つKubernetes Podに接続します。目標は、データベースのコレクションが空であることを確認することです。 「戻り回数」行の前のコードに満足しています。私はシェルにreturnコマンドがないことを知っていますが、説明のために入れました。
私は本質的に "kubectl exec"の "count"値を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シェル段落の「ノイズ」なしで戻り値を取得するには、このパラメータが必要です。
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
}
}