管道进入kubectl.exe



我正在尝试运行这样的命令:

kubectl get namespaces -o custom-columns=:metadata.name --no-headers 
| Where-Object{$_.StartsWith("test") -or $_.StartsWith("dev")} 
| kubectl get namespaces

(注意:换行只是为了可读性,在我的实际命令中没有换行)

最终目标是将标签应用于名称空间的子集,但现在,我只是试图将过滤后的管道空间列表提供给kubectl,以便它将get它们。

但是我似乎不能让kubectl接受管道列表作为要返回的名称空间列表。(这只返回集群上的所有名称空间)。

如何让kubectl以管道为输入?(这样我就可以过滤名称空间列表。)

kubectl文档没有提到管道(stdin)输入,所以它可能不被支持。

你说传递多个名字作为参数可以通过向kubectl get namespaces

添加一个以空格分隔的名字列表来实现因此,您可以简单地收集数组中的名称- PowerShell在收集变量中的外部程序调用的输出时会自动执行此操作,每个输出成为其自己的数组元素[1]-并将其用作参数:
$namespaces =
kubectl get namespaces -o custom-columns=:metadata.name --no-headers | 
Where-Object { $_.StartsWith("test") -or $_.StartsWith("dev") } 
kubectl get namespaces $namespaces
PowerShell自动将数组元素作为单个(字符串化)参数传递给外部程序

[1]如果碰巧只有一行输出,则按原样收集,即作为[string]而不是包含该字符串的单元素数组。然而,这种方法在这种情况下仍然有效。如果你明确地需要一个数组,使用像[array] $namespaces = ...

这样的东西

相关内容

  • 没有找到相关文章

最新更新