от bash до PowerShell - PullRequest
       21

от bash до PowerShell

0 голосов
/ 05 ноября 2019

Я хочу сопоставить порт хоста 5000 с портом мини-куба. Команда уже работает в bash, но теперь она мне нужна в PowerShell.

Я уже изменил команду bash на пункт «Код в PowerShell», и теперь мне нужно только заменить команду awk.

Код в Bash:

kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | grep kube-registry-v0 | awk '{print $1;}') 5000:5000

Код в PowerShell (awk подлежит замене)

kubectl port-forward --namespace kube-system $(kubectl get po -n kube-system | Select-String -Pattern "kube-registry-v0" | awk '{print $1;}') 5000:5000

1 Ответ

2 голосов
/ 05 ноября 2019

Вот способ сделать это. На самом деле строка выбора возвращает объект с несколькими свойствами, а свойство line имеет строку.

kubectl port-forward --namespace kube-system (kubectl get po -n kube-system |
  Select-String kube-registry-v0 | 
  foreach { -split $_.line | select -index 0} ) 5000:5000

Другой способ, используя where или where-object, и индекс индекса массива [0]:

kubectl port-forward --namespace kube-system (kubectl get po -n kube-system |
  where { $_ -match 'kube-registry-v0' } | 
  foreach { (-split $_)[0] ) 5000:5000

Аналогичный пост о awk и powershell: Команда Awk в эквиваленте Powershell

...