我正在尝试运行这样的命令:
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
$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 = ...