#author("2018-11-07T16:19:15+09:00","default:nobuoki","nobuoki")
* コード [#e4add6cd]
#prism(powershell){{{
vagrant global-status | Select-String -Pattern "running" | % { vagrant halt $_.Line.Split(" ")[0] }
}}}

* 解説 [#uccf1dbb]
#prism(powershell){{{
vagrant global-status ★vagrantで起動したVM一覧を取得
| Select-String -Pattern "running"  ★status=running を抽出
| % { vagrant halt $_.Line.Split(" ")[0] } ★vagrant halt VMのID(1フィールド目) を実行
}}}

* ポイント [#mb6d6359]
- grep -> Select-String
- cut -> Split
-- Select-String オブジェクト の Line プロパティに対して Split を適用
- for/while -> % (For-Eachオブジェクト)
-- xargs みたいに引数をいっぱい並べてくれそうなものは見つけられなかった・・・

シェルスクリプトだとこんな感じ?

#prism(bash){{{
vagrant global-status \
| grep 'running' \
| cut -d' ' -f1 \
| while read i; do vagrant halt $i; done
}}}

こっちのほうがいいかも
#prism(bash){{{
vagrant global-status \
| awk '$4~/running/&&$0=$1'
| xargs vagrant halt
}}}


* 参考 [#b1aeed0e]
- それ PowerShell でできるよ - Qiita
https://qiita.com/cd01/items/da9a36582372e7d0a7f6
- powershell - Doesn't contain split method - Stack Overflow
https://stackoverflow.com/questions/34021626/doesnt-contain-split-method


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS