【最強CUI】PowerShell -Part 2 [無断転載禁止]©2ch.net

レス数が1000を超えています。これ以上書き込みはできません。
2016/11/26(土) 06:30:02.67ID:pZYy6q7Y
前スレ
【最強CUI】PowerShell -Part 1
http://echo.2ch.net/test/read.cgi/tech/1378978504/
2018/10/05(金) 20:42:27.53ID:OkuzM4NB
今の10の1803ってバージョン何が入ってるの
2018/10/05(金) 21:07:07.34ID:YbvjOj4C
5.1
2018/10/06(土) 10:44:13.46ID:fld0/WcD
2.0ベースでなんとかするテクニックは必須ですよね
2018/10/06(土) 14:33:29.33ID:gea8Zy97
テクニックって程のものって何かある?
使える使えないの差ぐらいじゃないの
2018/10/06(土) 16:17:11.73ID:J00E9zwo
再来年1月にはPowershell2.0プリインストール環境が終了するから2.0に合わせた書き方頑張る気力がイマイチ
Windows7とか2008R2は早く死んでくれないかな
2018/10/06(土) 16:48:11.63ID:h/HmdYY4
Windows7とか2008R2は最後のまともなバージョン
2018/10/06(土) 21:18:07.69ID:MlTlM5yZ
Windows 2000 Proが一番良かった。
2018/10/06(土) 23:10:20.08ID:tgEP6apu
>>967
SP1入れずに使ってる環境なんてほぼ無いだろ?なら4.0覚えときゃOK

個人的にはzipクラスがある4.5が望ましい
2018/10/06(土) 23:21:17.76ID:SoS+Fgug
とりあえず3.0以降じゃないとちょっと辛いイメージ
2018/10/07(日) 00:45:26.55ID:/+/kkqPE
何が辛いんだい
ほら言ってごらん
2018/10/07(日) 00:51:14.63ID:KvcjzmFM
3.0以降じゃないとPsCustomObject使えないとか、コマンドレット充実してなくてNETライブラリ使う羽目になって、もうこれC#で書いたほうが良くね?になるあたりかね
2018/10/07(日) 02:34:13.34ID:MeohIHbL
coreに移行して大分経ってからGet-ScheduledTaskとかのWindows専用っぽいコマンドレット無くなってるのに気付いた
まあこれはあんまり使わんしpowershell.exeで実行すりゃいいか
2018/10/07(日) 06:17:50.14ID:mFTX0OZ0
where-objectでフィルタをかける時、複数条件が必要な場合は
パイプでつなぐしかないですかね?andとかあればいいんですけど
where-object 条件1 | where-object 条件2
2018/10/07(日) 06:44:39.40ID:MeohIHbL
論理演算子はもちろんあります
-and -orなど
2018/10/07(日) 10:50:24.18ID:VwaVbKnV
>>975
サンプルだと
? {$arg -eq "test" -or $arg2 -eq "test"}
みたいな感じ
-使う演算子が繋がって違和感あるかもしれんけど
2018/10/07(日) 11:44:45.71ID:I8sm2uyS
そもそもカンマでcriteraの文字列を区切ればor指定になるのでは
2018/10/07(日) 21:44:12.84ID:/+/kkqPE
>>978
どゆこと?
$arg -eq "test1","test2"
とかやってもならないけど
980デフォルトの名無しさん
垢版 |
2018/10/08(月) 20:48:01.10ID:7Fv0bXJp
パワーシェル内でパワーシェルを呼び出す時、どのパワーシェルの処理が成功してるか失敗してるかわかるようにログ出すのはどうすればいいんでしょうか?
2018/10/08(月) 21:56:04.04ID:sIA/07pT
>>980
スクリプトの名前等を頭につけるとか
982デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:04:42.09ID:7Fv0bXJp
ごめん。全然わからん・・・
2018/10/08(月) 22:05:00.95ID:vQC6HMz5
argsでIDを渡すとか
powershell -command { "ID: $($args[0])"} -args 777
984デフォルトの名無しさん
垢版 |
2018/10/08(月) 22:19:23.32ID:7Fv0bXJp
バッチファイルみたいにリダイレクトではログ渡せないのかな?
2>1
みたいなかんじで?
2018/10/08(月) 23:19:17.74ID:nFrei6GD
$?で前回のコマンドの実行結果
$lastexitcodeにexitコマンドで返された値が入る(呼び出したスクリプトはexitに戻り値を付けて終了させないとダメ)

$?だとスクリプト内の最後のコマンドの結果が帰るからスクリプトの作りによっては失敗の判定は出来ないのはバッチとかと一緒
986デフォルトの名無しさん
垢版 |
2018/10/08(月) 23:24:06.69ID:7Fv0bXJp
なるほど
呼び出すスクリプト内にエラーコードで正常か異常か$?で判定させてそれをifかなんかで分岐させてエラーコードを呼び出し元のスクリプトの$lastexitcodeをehcoする感じですかね?
2018/10/08(月) 23:32:12.23ID:rY44Et0R
>>979に答えてくれないか
2018/10/08(月) 23:41:24.75ID:GVMVzq1c
>>980
成否判定ならこれでよくね

hoge.ps1

$hoge = $true
if($hoge){exit 1}
exit 0
-------------

$ps = Start-Process hoge.ps1 -Wait -PassThru
switch($ps.ExitCode) {
0 {
"失敗"
}
1 {
"成功"
}
}
2018/10/08(月) 23:44:14.86ID:L+98sdt+
「どの」を見落としてる
990デフォルトの名無しさん
垢版 |
2018/10/08(月) 23:45:52.94ID:7Fv0bXJp
これを呼び出すスクリプト全部に書くってこと?
呼び出し元と先が複数あって、先を全部修正するのが大変なので出来れば元だけで完結させたい
が、無理そうなのでこれを全てに書いていく?
2018/10/08(月) 23:55:10.73ID:GVMVzq1c
>>990
0で戻ってきたらokにでもすれば
いじらんで良いやろ
2018/10/09(火) 00:01:31.08ID:G4IJkzod
>>990
exitで成否を戻した方がしっかり判定できる
呼び出したスクリプトで何が発生したら失敗とするかをしっかり判定しないの?
結果コードでの判定とか曖昧すぎてトラブルの元と思う
2018/10/09(火) 00:57:32.40ID:VXCTyrZC
>>984
実際にやりたいことがわからないけどエラーメッセージをリダイレクトするだけなら同じようにできるよ
powershell ./hoge.ps1 2>>log.txt
2018/10/09(火) 03:31:08.27ID:0K1bBeTL
>>979
知らないけど、switch 文で、カンマを使うとか?

そういう意味じゃないの?
2018/10/09(火) 05:18:39.42ID:06HomXwK
>>979
-inならいけるけど、まあ違うんだろうな
dir | where { $_.name -in "a1.txt","a2.txt","b1.txt" }
$list = @( "a1.txt","a2.txt","b1.txt" )
dir | where { $_.name -in $list }
2018/10/09(火) 08:24:03.86ID:2kAOJdzZ
>>979
適当こいただけじゃないのかな
PSのカンマ演算子は配列を作り、配列の要素が複数なら内容問わず真になる
そもそもカンマでの結合はORなのかANDなのか意図が曖昧
仕様としても微妙だしバッドプラクティスに思える
2018/10/09(火) 17:47:31.12ID:G4IJkzod
次スレ
PowerShell -Part 3
http://mevius.5ch.net/test/read.cgi/tech/1539074808/
2018/10/09(火) 18:41:58.03ID:iKGY38Kd
>>997

前に同じ名前のスレが落ちてたけどこの板は保守が要るってことかな?
2018/10/09(火) 21:10:27.51ID:PXd6fmY+
>>994-997
ありがとう
2018/10/09(火) 21:31:03.39ID:G4IJkzod
(1..1000 |% {if ($_ -eq 1000) {write-output "1000 complete!"} else { write-output $_}}) -join " "
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 682日 15時間 1分 1秒
レス数が1000を超えています。これ以上書き込みはできません。