前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
次スレは>>980が立ててね!!
探検
PowerShell -Part 4
■ このスレッドは過去ログ倉庫に格納されています
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
398デフォルトの名無しさん
2020/06/17(水) 16:55:10.36ID:/58stVp5 パイプの弊害か
399デフォルトの名無しさん
2020/06/17(水) 17:44:32.75ID:UcA8Gcsf400デフォルトの名無しさん
2020/06/17(水) 23:59:11.03ID:H0Dcbe9T >>396
>1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait
1 .. 3 | % { $_; sleep 1 }
この部分を、Start-Job の中に入れたら?
>1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait
1 .. 3 | % { $_; sleep 1 }
この部分を、Start-Job の中に入れたら?
401デフォルトの名無しさん
2020/06/18(木) 05:52:46.25ID:7bz/apiR $ary_names = @('太郎','次郎','三郎','四朗','五郎')
write-output $ary_name[@] #bashの記法
太郎,次郎,三郎,四朗,五郎
的なことをしたい。※区切り文字はなんでも可。
現状、配列に文字列をくっつけると1行で出るので
write-output ("a"+$aaa).trim("a")
という強引な方法をとっております。もっとPowershell的にスマートな方法があれば
お教えくださいませ。
write-output $ary_name[@] #bashの記法
太郎,次郎,三郎,四朗,五郎
的なことをしたい。※区切り文字はなんでも可。
現状、配列に文字列をくっつけると1行で出るので
write-output ("a"+$aaa).trim("a")
という強引な方法をとっております。もっとPowershell的にスマートな方法があれば
お教えくださいませ。
402デフォルトの名無しさん
2020/06/18(木) 06:58:53.37ID:3wPjj0xg $ary_names -join ','
403デフォルトの名無しさん
2020/06/18(木) 07:18:11.97ID:7bz/apiR >>402
ありがとうございます!
ありがとうございます!
404デフォルトの名無しさん
2020/06/18(木) 09:01:24.17ID:hwvpLd3O405デフォルトの名無しさん
2020/06/19(金) 06:41:17.41ID:RNyMoV2a $s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
2秒間隔、トータル10秒という結果に困惑している
2秒間隔、トータル10秒という結果に困惑している
406デフォルトの名無しさん
2020/06/19(金) 07:30:31.94ID:JIIBGf6G >>405
二重ループを期待してたってこと?
二重ループを期待してたってこと?
407405
2020/06/19(金) 08:42:12.76ID:RNyMoV2a 最初は2秒、それから1秒間隔でトータル6秒だと思ってた
1秒待ちをStart-Sleepでなく別のプロセスで待たせても変わらなかった
1秒待ちをStart-Sleepでなく別のプロセスで待たせても変わらなかった
408デフォルトの名無しさん
2020/06/19(金) 08:51:47.96ID:GhHOGZr1 パイプつなぎはいわゆるgenerator(PowerShellでの呼び方は知らない)になるってことかな?
409デフォルトの名無しさん
2020/06/19(金) 08:52:39.06ID:JIIBGf6G 1に対して最初のfor-eachの中身処理した後に次のfor-eachの中身処理。
2に対して...
3に対して...
4に対して...
5に対して...
ふたつのfor-eachの中身がどういう順に処理されてるか確認できるように表示を工夫してみたら?
2に対して...
3に対して...
4に対して...
5に対して...
ふたつのfor-eachの中身がどういう順に処理されてるか確認できるように表示を工夫してみたら?
410405
2020/06/19(金) 09:08:23.61ID:RNyMoV2a そこはなんとなくイメージできたんでもういい
パイプラインの各段を別のプロセスにすると6秒で終了する
同じように6秒で終了すると思ってたら違ったんで戸惑ったというお話
パイプラインの各段を別のプロセスにすると6秒で終了する
同じように6秒で終了すると思ってたら違ったんで戸惑ったというお話
411405
2020/06/19(金) 11:12:17.79ID:RNyMoV2a $s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { process { Start-Sleep 1; ">${0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
別スレッドを指定したらトータル6秒になった
一人研究発表会になっちまったな。すまぬ。
別スレッドを指定したらトータル6秒になった
一人研究発表会になっちまったな。すまぬ。
412405
2020/06/19(金) 11:40:12.67ID:RNyMoV2a よく見たら結果がおかしい。お手上げだ。諦めた。
413デフォルトの名無しさん
2020/06/19(金) 17:20:54.32ID:qQd5c1Zr >>397
おまえはpythonでもつかってろ
おまえはpythonでもつかってろ
414デフォルトの名無しさん
2020/06/19(金) 18:23:41.02ID:OOcqKGQK ラクダが笑ってんぞ
415405
2020/06/19(金) 21:01:31.39ID:RNyMoV2a できたーーーー
$s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にちょい足しして
$s=[datetime]::Now; 1 .. 5 | ForEach-Object -Parallel { Start-Sleep 1; ">{0}" -f $_ } -ThrottleLimit 1 | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にしたらStart-ThreadJobを使った時より遅いけど簡単に予想してた結果になった
お騒がせしました
$s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にちょい足しして
$s=[datetime]::Now; 1 .. 5 | ForEach-Object -Parallel { Start-Sleep 1; ">{0}" -f $_ } -ThrottleLimit 1 | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
にしたらStart-ThreadJobを使った時より遅いけど簡単に予想してた結果になった
お騒がせしました
416405
2020/06/19(金) 21:15:58.78ID:RNyMoV2a こ、今度こそできたー
$s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { $input | ForEach-Object {Start-Sleep 1; ">{0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
やっぱりこれが最終版ということにしたい
お邪魔しました
$s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { $input | ForEach-Object {Start-Sleep 1; ">{0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds}
やっぱりこれが最終版ということにしたい
お邪魔しました
417デフォルトの名無しさん
2020/06/20(土) 00:50:50.12ID:na6pkPqz はいつぎ
418デフォルトの名無しさん
2020/06/20(土) 08:11:14.95ID:wKnheY+E Powershellを使いこなすにはcomを知らなければならないと聞いたのですが、
comについてはどうやって学ぶのがオススメですか?
ググラビリティの悪い単語なので、
思うように検索できません
Excellの機能を使ってあれこれしたいです
comについてはどうやって学ぶのがオススメですか?
ググラビリティの悪い単語なので、
思うように検索できません
Excellの機能を使ってあれこれしたいです
419デフォルトの名無しさん
2020/06/20(土) 09:03:13.32ID:5oXecify COM の使い方
https://docs.microsoft.com/ja-jp/previous-versions/direct-x/cc351700(v=msdn.10)
https://docs.microsoft.com/ja-jp/previous-versions/direct-x/cc351700(v=msdn.10)
420デフォルトの名無しさん
2020/06/20(土) 11:29:31.09ID:XppcwtFP Powershellを使い始めました
皆さん、こんなの全部覚えてるんですか?
どうやって覚えました?
ファイル開いて書き込むだけで
こんなにもたくさん覚えないといけないって
大変だったんじゃないですか?
$output_file = "C:\bin\hoge.txt"
$sw = New-Object System.IO.StreamWriter($output_file, $false, [Text.Encoding]::GetEncoding("UTF-8"))
$sw.WriteLine("aaa")
$sw.WriteLine("あああ")
$sw.Close()
$sw.WriteLine("あああ")
$sw.Close()
この辺はまだ、覚えられるのですが、
New-Object System.IO.StreamWriter←InputOutputを、ストリームにライトするんだろうな
$output_file, $false, ←ファイル名と、追記、上書を指定するんだろうな。
[Text.Encoding]:: ←なんで[]包むんだ、:: ←このダブルのコロンは何だ、
GetEncoding("UTF-8")) ←何でファイル作ってるのにGetなんだ、
単純に
$mojiko-do="UTF-8"で
New-Object System.IO.StreamWriter($output_file, $false,$mojiko-do)じゃないんだと、
覚えることや、なぜこうなってるんだに少々ビビってます。
皆さんが、どうやってこんなに複雑で面倒なものを覚えたか、コツがあったら教えてください。
皆さん、こんなの全部覚えてるんですか?
どうやって覚えました?
ファイル開いて書き込むだけで
こんなにもたくさん覚えないといけないって
大変だったんじゃないですか?
$output_file = "C:\bin\hoge.txt"
$sw = New-Object System.IO.StreamWriter($output_file, $false, [Text.Encoding]::GetEncoding("UTF-8"))
$sw.WriteLine("aaa")
$sw.WriteLine("あああ")
$sw.Close()
$sw.WriteLine("あああ")
$sw.Close()
この辺はまだ、覚えられるのですが、
New-Object System.IO.StreamWriter←InputOutputを、ストリームにライトするんだろうな
$output_file, $false, ←ファイル名と、追記、上書を指定するんだろうな。
[Text.Encoding]:: ←なんで[]包むんだ、:: ←このダブルのコロンは何だ、
GetEncoding("UTF-8")) ←何でファイル作ってるのにGetなんだ、
単純に
$mojiko-do="UTF-8"で
New-Object System.IO.StreamWriter($output_file, $false,$mojiko-do)じゃないんだと、
覚えることや、なぜこうなってるんだに少々ビビってます。
皆さんが、どうやってこんなに複雑で面倒なものを覚えたか、コツがあったら教えてください。
421デフォルトの名無しさん
2020/06/20(土) 11:33:23.00ID:XppcwtFP ほかにも、メソッド、プロパティ?クラス?で書き方がものすごいたくさんあるようで、めまいがします。
覚えれば仕事が楽になることは分かっているので、頑張りたいところなんですが
あまりの複雑さに、皆さんがどうやって覚えたのか、コツがあればぜひともお教えください。
覚えれば仕事が楽になることは分かっているので、頑張りたいところなんですが
あまりの複雑さに、皆さんがどうやって覚えたのか、コツがあればぜひともお教えください。
422デフォルトの名無しさん
2020/06/20(土) 11:46:07.33ID:6HpZ1NhN 良くも悪くも.NETが前提だから
先にC#を覚えるのがコツかな
先にC#を覚えるのがコツかな
423デフォルトの名無しさん
2020/06/20(土) 12:28:41.13ID:sltMp+ny コード量が多いってことと覚えなきゃいけない知識量は必ずしも一致しないからな
Perlみたいに省略できまくるワンライナーのほうがスパゲティったときわけ分からなくなる
Perlみたいに省略できまくるワンライナーのほうがスパゲティったときわけ分からなくなる
424デフォルトの名無しさん
2020/06/20(土) 12:29:17.17ID:dcvMDCGE とにかく書いて動かす
やってみる、作ってみる
国語力、英語力は少しつけようとする
やってみる、作ってみる
国語力、英語力は少しつけようとする
425デフォルトの名無しさん
2020/06/20(土) 12:31:14.10ID:E6EedD+K .NETなんて前提にしなくてもマルチプラットフォームで使える文法を身につけるのが先
426デフォルトの名無しさん
2020/06/20(土) 13:13:11.69ID:w0A+CU3q427デフォルトの名無しさん
2020/06/20(土) 13:13:46.53ID:F3e6GYXo 正直言ってPowerShellは覚える必要ない
スクリプトファイルを作って使うならC#を使うのと大差ない
それならC#を覚えて使う方がいい
コマンドラインシェルとして使うなら.NETやらCOMやら取り込む使い方は
何かあった時にシェルが巻きぞえになって、シェルを殺すしかなくなる
そうならない程度に言語自体の機能だけで使うなら、とりたて覚えるほどでもない
スクリプトファイルを作って使うならC#を使うのと大差ない
それならC#を覚えて使う方がいい
コマンドラインシェルとして使うなら.NETやらCOMやら取り込む使い方は
何かあった時にシェルが巻きぞえになって、シェルを殺すしかなくなる
そうならない程度に言語自体の機能だけで使うなら、とりたて覚えるほどでもない
428デフォルトの名無しさん
2020/06/20(土) 13:42:16.03ID:dcvMDCGE 本番環境その場で場当たり的にコマンド打つのはあり得ないしな
まあすごくユルい会社なら知らんが
まあすごくユルい会社なら知らんが
429デフォルトの名無しさん
2020/06/20(土) 13:50:27.59ID:zwBEwaPL >>420
その書き方は.NETライブラリを使っているのでPowershellの初歩の枠を越えてる
追記するだけならこう
$output_file = "C:\bin\hoge.txt"
"aaa" | Out-File $output_file -Append -Encoding UTF8
"あああ" | Out-File $output_file -Append -Encoding UTF8
こうしてもいい
"aaa", "あああ" | Out-File $output_file -Append -Encoding UTF8
UTF16でいいならこれ
"aaa", "あああ" >> $output_file
Powershell 5以前には欠陥があって、BOMなしUTF8を新規作成する簡単な手段がなかった
だからStreamWriterを持ち出すようなサンプルが普及していて、初歩のはずなのに難しいと感じる要因になってる
その書き方は.NETライブラリを使っているのでPowershellの初歩の枠を越えてる
追記するだけならこう
$output_file = "C:\bin\hoge.txt"
"aaa" | Out-File $output_file -Append -Encoding UTF8
"あああ" | Out-File $output_file -Append -Encoding UTF8
こうしてもいい
"aaa", "あああ" | Out-File $output_file -Append -Encoding UTF8
UTF16でいいならこれ
"aaa", "あああ" >> $output_file
Powershell 5以前には欠陥があって、BOMなしUTF8を新規作成する簡単な手段がなかった
だからStreamWriterを持ち出すようなサンプルが普及していて、初歩のはずなのに難しいと感じる要因になってる
430デフォルトの名無しさん
2020/06/20(土) 14:13:22.51ID:Xz+FX1Oy 必要はないけど覚えたら便利
431デフォルトの名無しさん
2020/06/20(土) 14:35:58.75ID:YZMPfrl8 最初から暗記する必要はなくて、機能を一覧表にしておいて
必要に応じてそれを参照、コピペすればいい
出現頻度の高いものは自然と覚える
いずれにしても手打ちするのは時間の無駄なので
コピペ推奨
必要に応じてそれを参照、コピペすればいい
出現頻度の高いものは自然と覚える
いずれにしても手打ちするのは時間の無駄なので
コピペ推奨
432デフォルトの名無しさん
2020/06/20(土) 16:51:19.56ID:KBDfWM5t 習得してない人達のアドバイスは聞く必要がない
あっだからできないんだっていう見本にはなるけど
あっだからできないんだっていう見本にはなるけど
433デフォルトの名無しさん
2020/06/20(土) 16:58:42.46ID:py+iqQxS 俺以外のアドバイスは聞く必要がない
434デフォルトの名無しさん
2020/06/20(土) 17:35:07.43ID:6sC7z1nS >>420
>コツがあったら教えてください。
PowerShell に限った話じゃないけど、学校の授業みたいに「勉強ありき」で
努力するよりも、「これをやるためには PowerShell を使うしか無い」という
状況に追い込まれると覚えやすいですね。
あと、積極的に英語のフォーラムなどから情報を得るようにしたほうが良いと思います。
やはり、日本語と英語では情報量が雲泥の差ですので。
Google 翻訳を使えば何とかなります。
>コツがあったら教えてください。
PowerShell に限った話じゃないけど、学校の授業みたいに「勉強ありき」で
努力するよりも、「これをやるためには PowerShell を使うしか無い」という
状況に追い込まれると覚えやすいですね。
あと、積極的に英語のフォーラムなどから情報を得るようにしたほうが良いと思います。
やはり、日本語と英語では情報量が雲泥の差ですので。
Google 翻訳を使えば何とかなります。
435デフォルトの名無しさん
2020/06/20(土) 20:10:35.90ID:WPfafdOl436デフォルトの名無しさん
2020/06/20(土) 23:24:31.04ID:tXS4Zxv6 PowerShell(PS)で、ビジネスロジック・複雑なものを書いたら、ダメ!
基本的に、CSV・JSON などは、Ruby で書いて、
起動部分だけを、コマンドプロンプト・PS・VBS などで作る
基本的に、CSV・JSON などは、Ruby で書いて、
起動部分だけを、コマンドプロンプト・PS・VBS などで作る
437デフォルトの名無しさん
2020/06/20(土) 23:38:30.06ID:sltMp+ny Pythonにしてくれ頼む
438デフォルトの名無しさん
2020/06/21(日) 08:39:56.92ID:PKUYu7rs >>435
>そんな状況は、普通は無い。
仕事で MS のエンタープライズ系製品を扱ってると、嫌というほど
そういう状況に遭遇しますね。
Windows Server, Exchange, SQL Server, Office 365 あたりの
設計、構築、運用に携わってれば日常茶飯事です。
そういう仕事に携わるようになってから PowerShell を覚えた、って人が
多いと思ったけど、そうでもないのかな?プログラム板だから違うのかな?
>そんな状況は、普通は無い。
仕事で MS のエンタープライズ系製品を扱ってると、嫌というほど
そういう状況に遭遇しますね。
Windows Server, Exchange, SQL Server, Office 365 あたりの
設計、構築、運用に携わってれば日常茶飯事です。
そういう仕事に携わるようになってから PowerShell を覚えた、って人が
多いと思ったけど、そうでもないのかな?プログラム板だから違うのかな?
439デフォルトの名無しさん
2020/06/22(月) 18:21:34.75ID:njZ7JPCW >>0438
君は正常。
君は正常。
440デフォルトの名無しさん
2020/06/24(水) 07:34:20.49ID:9MFoHisW コマンドプロンプトでバッチを作るとちょっとした自動化に便利というのを最近知って調べたら
今はPowerShellCoreが現行とたどり着いたが
やっぱり移行するしないで揉めてる
今はPowerShellCoreが現行とたどり着いたが
やっぱり移行するしないで揉めてる
441436
2020/06/24(水) 08:08:25.26ID:rM4tv+8j さすがに、バッチでプログラミングしてはいけない!
可読性が低すぎる
Ruby スクリプトなどを起動するだけにしておくべき
可読性が低すぎる
Ruby スクリプトなどを起動するだけにしておくべき
442デフォルトの名無しさん
2020/06/24(水) 08:40:10.38ID:L+v/qVAN >>440
用途・要件次第。
業務利用という前提だけど、自分だったらこういうポリシーで緩やかに移行する。
・既存の cmd バッチや WSF、VBS → 基本的には移行(移植)しない
※例外:改修が必要になった場合は個別対応
・新規 → 基本的には PowerShell で作るべき
※例外:極々単純なもの、自分だけが使い捨てするもの
用途・要件次第。
業務利用という前提だけど、自分だったらこういうポリシーで緩やかに移行する。
・既存の cmd バッチや WSF、VBS → 基本的には移行(移植)しない
※例外:改修が必要になった場合は個別対応
・新規 → 基本的には PowerShell で作るべき
※例外:極々単純なもの、自分だけが使い捨てするもの
443デフォルトの名無しさん
2020/06/24(水) 08:44:24.27ID:/txx2vwO 可読性w
可読性に煩いやつ程低レベルだよね
三項演算子とか
可読性に煩いやつ程低レベルだよね
三項演算子とか
444デフォルトの名無しさん
2020/06/24(水) 09:05:28.99ID:W7e3ICMc >>441
お前はRuby禁止のスレでRubyでは〜Rubyでは〜とやるのをやめろ。ノイズにしかならない糞レスはスレの可読性を下げるだけだ。
お前はRuby禁止のスレでRubyでは〜Rubyでは〜とやるのをやめろ。ノイズにしかならない糞レスはスレの可読性を下げるだけだ。
445デフォルトの名無しさん
2020/06/24(水) 09:51:09.11ID:LpqCs0qI 440で思い出したけど、powershell coreって今どうなってるんや
自分は実行環境としては5.1をメインで使ってるけど、みんなどこら辺なんや
自分は実行環境としては5.1をメインで使ってるけど、みんなどこら辺なんや
446デフォルトの名無しさん
2020/06/24(水) 10:09:13.32ID:wIzfCOgT win10プレインストールしか使っとらんわ
というかツール勝手に入れられない客先環境で戦うためのツールって認識
というかツール勝手に入れられない客先環境で戦うためのツールって認識
447デフォルトの名無しさん
2020/06/24(水) 10:48:39.06ID:oYgVDO6A >>446
> ツール勝手に入れられない客先環境で戦うためのツール
ほんそれ。
いまメインでやってる案件だと、お客さんから貸与されてる作業用 PC があって、
お客さんの環境にはそのマシンしか繋げられない。もちろん、世に数多とある便利ツールを
好き勝手に入れることは出来ない。
でも PowerCLI などの PowerShell モジュールのインストールは純正管理ツール扱いで
許可されてるので、構築とか保守作業では PowerShell スクリプトを使いまくってる。
いちいちマウスでカッチンカッチンやってたら、日が暮れちゃうからね・・・。
> ツール勝手に入れられない客先環境で戦うためのツール
ほんそれ。
いまメインでやってる案件だと、お客さんから貸与されてる作業用 PC があって、
お客さんの環境にはそのマシンしか繋げられない。もちろん、世に数多とある便利ツールを
好き勝手に入れることは出来ない。
でも PowerCLI などの PowerShell モジュールのインストールは純正管理ツール扱いで
許可されてるので、構築とか保守作業では PowerShell スクリプトを使いまくってる。
いちいちマウスでカッチンカッチンやってたら、日が暮れちゃうからね・・・。
448デフォルトの名無しさん
2020/06/24(水) 12:17:32.10ID:9MFoHisW449デフォルトの名無しさん
2020/06/24(水) 21:01:47.98ID:jVaXlMW4 scriptblock[] を受け取って、scriptblockをそれぞれスレッドで動かして
パイプでつないで実行するfunctionを書きたいんだがうまく書けない
ようするに
$s = [datetime]::Now
1 .. 10 |
% { sleep 1; ">$_" } |
% { sleep 1; ">$_" } |
% { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $s).TotalSeconds }
を実行すると
>>>1 3.1179897
>>>2 6.1354357
>>>3 9.1403334
>>>4 12.1434852
と3秒間隔で結果が出るんで
$s = [datetime]::Now
threadedpipe @( { 1 .. 10 },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $using:s).TotalSeconds }})
みたいに書いて、最初が3秒目で1秒間隔で結果出力したい
いろいろ試して諦めたんだが、そもそもPowerShellではこういうfunctionは書けないの?
パイプでつないで実行するfunctionを書きたいんだがうまく書けない
ようするに
$s = [datetime]::Now
1 .. 10 |
% { sleep 1; ">$_" } |
% { sleep 1; ">$_" } |
% { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $s).TotalSeconds }
を実行すると
>>>1 3.1179897
>>>2 6.1354357
>>>3 9.1403334
>>>4 12.1434852
と3秒間隔で結果が出るんで
$s = [datetime]::Now
threadedpipe @( { 1 .. 10 },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">$_" } },
{ % { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $using:s).TotalSeconds }})
みたいに書いて、最初が3秒目で1秒間隔で結果出力したい
いろいろ試して諦めたんだが、そもそもPowerShellではこういうfunctionは書けないの?
450デフォルトの名無しさん
2020/06/24(水) 22:06:24.12ID:VGKuFIs7 powershellのコマンドはプロセス作らないから無理じゃね
マルチスレッドをそんなお手軽に制御できたら夢みたいだけど
マルチスレッドをそんなお手軽に制御できたら夢みたいだけど
451デフォルトの名無しさん
2020/06/25(木) 00:26:33.50ID:GAspYPHa あれでもForeach-object あたりにparallelこなかったっけ
452デフォルトの名無しさん
2020/06/25(木) 00:40:28.26ID:BtDpxRK3 並列に動かすってことは普通にやれば1秒間隔じゃなくてほぼ同時に出力されることになる
どういう意図なのかはわからないけど無理やりやるんなら入力側で一秒ずつ待ってやるか
$sw = [Diagnostics.Stopwatch]::StartNew()
1..10
| % { ">$_"; sleep 1 }
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
もしくは出力側で一秒ずつ待ってやるか
1..10
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { sleep 1; "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
どういう意図なのかはわからないけど無理やりやるんなら入力側で一秒ずつ待ってやるか
$sw = [Diagnostics.Stopwatch]::StartNew()
1..10
| % { ">$_"; sleep 1 }
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
もしくは出力側で一秒ずつ待ってやるか
1..10
| % -pa { sleep 1; ">$_" }
| % -pa { sleep 1; ">$_" }
| % { sleep 1; "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
453デフォルトの名無しさん
2020/06/25(木) 00:44:41.05ID:LTqYJW83 シェルスクリプトみたいに各プロセスが並列的に流れてくるテキストを処理して…
みたいのをやりたいのかなと推測してる
みたいのをやりたいのかなと推測してる
454デフォルトの名無しさん
2020/06/25(木) 08:46:34.24ID:L3VdfOGw そうそうそういうこと
イメージとしては https://ja.wikipedia.org/wiki/命令パイプライン
パイプラインのステージごとに1スレッド起動して全データで使いまわしたい
4ステージのパイプラインなら4スレッドで動かす
ForEach-Object の -Parallel はデータごとにスレッドを起動するから別物
スレッドプールで使いまわすにしてもちょっと違う
ちなみに sleep させてるけど時間がかかる処理の代用ね
イメージとしては https://ja.wikipedia.org/wiki/命令パイプライン
パイプラインのステージごとに1スレッド起動して全データで使いまわしたい
4ステージのパイプラインなら4スレッドで動かす
ForEach-Object の -Parallel はデータごとにスレッドを起動するから別物
スレッドプールで使いまわすにしてもちょっと違う
ちなみに sleep させてるけど時間がかかる処理の代用ね
455デフォルトの名無しさん
2020/06/25(木) 08:53:56.13ID:L3VdfOGw こっちの方がイメージが近いかも
https://ja.wikipedia.org/wiki/パイプ_(コンピュータ)
https://ja.wikipedia.org/wiki/パイプ_(コンピュータ)
456デフォルトの名無しさん
2020/06/25(木) 09:37:48.10ID:piKX+XZq 普通にワンライナー諦めれば次の作業にすすめるんじゃない?
457デフォルトの名無しさん
2020/06/25(木) 09:50:30.28ID:L3VdfOGw ワンライナーなんか関係ないんだけど
原理は >>416 にあるから、それを簡単に実現できるように
function threadedpipe { param([scriptblock[]] $sbs)
を書きたいと言ってる
原理は >>416 にあるから、それを簡単に実現できるように
function threadedpipe { param([scriptblock[]] $sbs)
を書きたいと言ってる
458デフォルトの名無しさん
2020/06/25(木) 09:56:30.77ID:1+fg5ofc あぁまたこいつだったか
459デフォルトの名無しさん
2020/06/25(木) 10:49:27.00ID:dZiolc11 >パイプラインのステージごとに1スレッド起動して全データで使いまわしたい
これが根本的に間違ってるだろ。
パイプで連結するってことは、前後(依存)関係があるってことで、それぞれをスレッド分割したところで全く意味がない。
これが根本的に間違ってるだろ。
パイプで連結するってことは、前後(依存)関係があるってことで、それぞれをスレッド分割したところで全く意味がない。
460デフォルトの名無しさん
2020/06/25(木) 11:16:02.92ID:L3VdfOGw 何言ってんの?
パイプラインってものをわかってない
これスクリプトファイルにして試してみ
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
filter mul10 { sleep 1; $_ * 10 }
filter add1 { sleep 1; $_ + 1 }
filter fmtresult { "{0} {1}" -f $_, ([datetime]::Now - $script:s).TotalSeconds }
"スレッドなし"
$s = [datetime]::Now
recvdata | mul10 | add1 | fmtresult
"ステージごとに別スレッド"
$s = [datetime]::Now
Start-ThreadJob {
filter add1 { sleep 1; $_ + 1 }
Start-ThreadJob {
filter mul10 { sleep 1; $_ * 10 }
Start-ThreadJob {
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
recvdata
} | Receive-Job -Wait -AutoRemoveJob | mul10
} | Receive-Job -Wait -AutoRemoveJob | add1
} | Receive-Job -Wait -AutoRemoveJob | fmtresult
パイプラインってものをわかってない
これスクリプトファイルにして試してみ
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
filter mul10 { sleep 1; $_ * 10 }
filter add1 { sleep 1; $_ + 1 }
filter fmtresult { "{0} {1}" -f $_, ([datetime]::Now - $script:s).TotalSeconds }
"スレッドなし"
$s = [datetime]::Now
recvdata | mul10 | add1 | fmtresult
"ステージごとに別スレッド"
$s = [datetime]::Now
Start-ThreadJob {
filter add1 { sleep 1; $_ + 1 }
Start-ThreadJob {
filter mul10 { sleep 1; $_ * 10 }
Start-ThreadJob {
function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }}
recvdata
} | Receive-Job -Wait -AutoRemoveJob | mul10
} | Receive-Job -Wait -AutoRemoveJob | add1
} | Receive-Job -Wait -AutoRemoveJob | fmtresult
461デフォルトの名無しさん
2020/06/25(木) 11:35:16.74ID:emOdy//g きたない
462デフォルトの名無しさん
2020/06/25(木) 11:41:54.06ID:L3VdfOGw んだからfunction threadedpipeを作って見やすくしたいっつってんだろ
463デフォルトの名無しさん
2020/06/25(木) 12:35:03.44ID:WfI766VN そこじゃないだろ
464デフォルトの名無しさん
2020/06/25(木) 13:13:44.27ID:sZY/v5D+465デフォルトの名無しさん
2020/06/25(木) 16:37:26.69ID:MV6c2Qez なにけんけんしてんの?
466デフォルトの名無しさん
2020/06/25(木) 20:19:35.75ID:hxSOAVLp467デフォルトの名無しさん
2020/06/25(木) 21:11:04.72ID:L3VdfOGw いまだにこんな見当違いを目にしてびっくり
試せるように >>460 を書いたのに試してないのかな
Start-ThreadJobが使えない環境なら、代わりにStart-Jobを使っても動くぞ
スレッドとジョブの起動速度差で少し遅いけどちゃんと動くから試してみろよ
というわけで、動作することはちゃんと確認できてる
俺が聞いたのは、>>460 みたいにごちゃごちゃ書くのが面倒だから
threadedpipe @({recvdata}, {mul10}, {add1}, {fmtresult})
のように書けるような function threadedpipe が作れるかどうかなの
まあ制約付きで一応できたんだけど
試せるように >>460 を書いたのに試してないのかな
Start-ThreadJobが使えない環境なら、代わりにStart-Jobを使っても動くぞ
スレッドとジョブの起動速度差で少し遅いけどちゃんと動くから試してみろよ
というわけで、動作することはちゃんと確認できてる
俺が聞いたのは、>>460 みたいにごちゃごちゃ書くのが面倒だから
threadedpipe @({recvdata}, {mul10}, {add1}, {fmtresult})
のように書けるような function threadedpipe が作れるかどうかなの
まあ制約付きで一応できたんだけど
468420
2020/06/25(木) 23:05:56.80ID:ZIjS4UcO とりとめもなく、推敲もなく適当に書き散らかしてごめんなさい
レスありがとうございます
理解して、Powershell組むのはかなり困難そうなので
Myコピペライブラリでも作って、理解しないでも組めるような
体制を作っていこうと思います
ありがとうございました。
ちなみにファイル作成は >>で用は足りました
レスありがとうございます
理解して、Powershell組むのはかなり困難そうなので
Myコピペライブラリでも作って、理解しないでも組めるような
体制を作っていこうと思います
ありがとうございました。
ちなみにファイル作成は >>で用は足りました
469デフォルトの名無しさん
2020/06/25(木) 23:48:32.33ID:GAspYPHa きたないコードで目的も意味不明
まさに自慰
まさに自慰
470デフォルトの名無しさん
2020/06/26(金) 01:13:06.63ID:UcUHbC3j 質問者より明らかにレベル低いのにイチャモンだけは一流だな
だまってろよお前は
だまってろよお前は
471デフォルトの名無しさん
2020/06/26(金) 05:47:21.88ID:ZKLfm8jC472デフォルトの名無しさん
2020/06/26(金) 06:30:47.02ID:uqHA56uo >>470
お前もだなw
お前もだなw
473デフォルトの名無しさん
2020/06/26(金) 07:02:56.31ID:rwBI62Tc ここがどうだとかじゃなくて、
汚いとかって言い方傷つくだろうが
汚いとかって言い方傷つくだろうが
474デフォルトの名無しさん
2020/06/26(金) 10:47:41.63ID:lJi08xny >>449
こんな感じ?
ただ動くだけのサンプル。エラー処理とかオブジェクトの後始末とか何もしていない。
function Invoke-ThreadedPipeline([ScriptBlock[]] $ScriptBlock) {
$p = $ScriptBlock | % {
$p = [RunspaceFactory]::CreateRunspace().CreatePipeline()
$p.Commands.AddScript($_)
$p.Runspace.Open(); $p.InvokeAsync()
$p
}
while ($p = @($p | ? {-not $_.Output.EndOfPipeline})) {
$i = [Threading.WaitHandle]::WaitAny(($p | % {$_.Output.WaitHandle}))
$o = $p[$i].Output.Read($p[$i].Output.Count)
if ($i -lt $p.Length - 1) {
$null = $p[$i + 1].Input.Write($o, $true)
if ($p[$i].Output.EndOfPipeline) {$p[$i + 1].Input.Close()}
}
else {
$o
}
}
}
$o = Get-Date
Invoke-ThreadedPipeline (
{1..10},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}}
) | % {'{0} : {1}' -f $_, (New-TimeSpan $o).TotalSeconds}
こんな感じ?
ただ動くだけのサンプル。エラー処理とかオブジェクトの後始末とか何もしていない。
function Invoke-ThreadedPipeline([ScriptBlock[]] $ScriptBlock) {
$p = $ScriptBlock | % {
$p = [RunspaceFactory]::CreateRunspace().CreatePipeline()
$p.Commands.AddScript($_)
$p.Runspace.Open(); $p.InvokeAsync()
$p
}
while ($p = @($p | ? {-not $_.Output.EndOfPipeline})) {
$i = [Threading.WaitHandle]::WaitAny(($p | % {$_.Output.WaitHandle}))
$o = $p[$i].Output.Read($p[$i].Output.Count)
if ($i -lt $p.Length - 1) {
$null = $p[$i + 1].Input.Write($o, $true)
if ($p[$i].Output.EndOfPipeline) {$p[$i + 1].Input.Close()}
}
else {
$o
}
}
}
$o = Get-Date
Invoke-ThreadedPipeline (
{1..10},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}},
{process {Start-Sleep 1; ">$_"}}
) | % {'{0} : {1}' -f $_, (New-TimeSpan $o).TotalSeconds}
475474
2020/06/26(金) 10:49:06.76ID:lJi08xny スクリプトブロックのバインドとか、スコープとか、面倒な問題は見ないふり。
そもそも、PowerShell のスコープはスレッドセーフにはできていないので、
問題に対処するのは、ほとんど不可能なのかも。
そもそも、PowerShell のスコープはスレッドセーフにはできていないので、
問題に対処するのは、ほとんど不可能なのかも。
476デフォルトの名無しさん
2020/06/26(金) 12:23:31.85ID:hzH3p+iw IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン(画像有り)
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0
PS malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
477デフォルトの名無しさん
2020/07/05(日) 04:12:29.94ID:sb7IOZLx 教えてください。
powershell.exeに
"powershell.exe"が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。
ってダイアログが出て怒られるのだが、
これってどういうことですか?
powershell.exeに
"powershell.exe"が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。
ってダイアログが出て怒られるのだが、
これってどういうことですか?
478デフォルトの名無しさん
2020/07/05(日) 08:19:48.13ID:EbIp5fqD479デフォルトの名無しさん
2020/07/05(日) 09:06:15.18ID:sb7IOZLx そうですねすみません。
Python3.6、Bazel 2.0.0、MSYS2、Visual C++ Build Tools 2019、WMF5.1、
CUDA toolkit 10.1、cuDNN 7.6を入れて、Tensorflow 2.2をビルド。
x64 Native Tools Command Prompt for VS 2019から、bazel buildでビルド中に、
「powershell.exeが見つかりません。〜」のダイアログが出る。ダイアログの左上はpowershell.exe。
放置すると最大4個出てビルトが一時停止するが、ダイアログの「OK」で閉じると再開する。しばらくすると、また出る。
PCは、
OS:Windows7pro sp1 x64
CPU:Core2Quad Q9550
GPU:Geforce GTX1650super
MEM:8G
Python3.6、Bazel 2.0.0、MSYS2、Visual C++ Build Tools 2019、WMF5.1、
CUDA toolkit 10.1、cuDNN 7.6を入れて、Tensorflow 2.2をビルド。
x64 Native Tools Command Prompt for VS 2019から、bazel buildでビルド中に、
「powershell.exeが見つかりません。〜」のダイアログが出る。ダイアログの左上はpowershell.exe。
放置すると最大4個出てビルトが一時停止するが、ダイアログの「OK」で閉じると再開する。しばらくすると、また出る。
PCは、
OS:Windows7pro sp1 x64
CPU:Core2Quad Q9550
GPU:Geforce GTX1650super
MEM:8G
480デフォルトの名無しさん
2020/07/05(日) 09:07:58.29ID:sb7IOZLx です。
何か気が付くところがあれば教えてください。
何か気が付くところがあれば教えてください。
481デフォルトの名無しさん
2020/07/06(月) 15:26:47.18ID:ENMHKR++ powershell.exeが見つからない。
だからこそ、poweshell.exeが見つからなくてはと思っている。
だからこそ、poweshell.exeが見つからなくてはと思っている。
482デフォルトの名無しさん
2020/07/06(月) 16:00:54.38ID:AV85qEaL はいすべった
483デフォルトの名無しさん
2020/07/06(月) 19:14:17.53ID:mGwQnOrU PATHが通ってないんじゃないの
サポート切れのWindows7を使い続けてて大丈夫か
サポート切れのWindows7を使い続けてて大丈夫か
484デフォルトの名無しさん
2020/07/06(月) 19:34:12.08ID:BdiDJNUx 建前上esuあるから必要な部署はそれ当てて使ってるよ
485デフォルトの名無しさん
2020/07/06(月) 20:54:49.43ID:zdAH+P0d win7だって(自分で削除しなけりゃ)普通にpathは通っているはずだけど
まあ確かめてみることだね
まあ確かめてみることだね
486デフォルトの名無しさん
2020/07/06(月) 20:56:13.29ID:0H1iFJXS ダイアログが出てる時にタスクの中にpowershell.exeがいませんでした。
誰が出しているのか追いかけてみます。
お騒がせしました。
誰が出しているのか追いかけてみます。
お騒がせしました。
487デフォルトの名無しさん
2020/07/06(月) 21:05:43.69ID:fLXZOc4N 32bit版 or 64bit版を探しにいってるんじゃないの?
488デフォルトの名無しさん
2020/07/07(火) 12:27:32.25ID:Csl+eNq2 Windows 10 なら、コマンドプロンプトで、
where powershell
と入力すると、
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
where powershell
と入力すると、
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
489デフォルトの名無しさん
2020/07/07(火) 21:09:26.46ID:IcFS4Epu whereは10だけじゃなくて7にも標準搭載されてる
98や2000ならリソースキットに含まれてる
98や2000ならリソースキットに含まれてる
490デフォルトの名無しさん
2020/07/11(土) 09:02:38.89ID:n9XGFFVi NuGetパッケージ使いたい時ってどうすれば使えんの
例えばSeleniumを使いたい場合C#なら
dotnet add package Selenium.WebDriver
これで使えるようになるけどPSの場合はどうすれば
例えばSeleniumを使いたい場合C#なら
dotnet add package Selenium.WebDriver
これで使えるようになるけどPSの場合はどうすれば
491デフォルトの名無しさん
2020/07/11(土) 21:53:51.85ID:I6xaQmI+ Make using NuGet packages installed with Install-Package easier to use - make Add-Type support NuGet packages
https://github.com/PowerShell/PowerShell/issues/6724
https://github.com/PowerShell/PowerShell/issues/6724
492デフォルトの名無しさん
2020/07/17(金) 09:19:06.55ID:6MuP2T5H493デフォルトの名無しさん
2020/07/24(金) 01:22:35.38ID:r0N61jeX 明治の「 おいしい牛乳 」ってあるけど
「 おいしい 」って自分で付けちゃうなんて
強気というかふてぶてしいよな?
「 PowerShell 」からも同じにおいがするぜ
「 おいしい 」って自分で付けちゃうなんて
強気というかふてぶてしいよな?
「 PowerShell 」からも同じにおいがするぜ
494デフォルトの名無しさん
2020/07/24(金) 01:48:02.23ID:UQ3TOH2s Apple & IBM「…」
495デフォルトの名無しさん
2020/07/24(金) 10:09:22.31ID:860vhoVN Powerこそ力
496デフォルトの名無しさん
2020/07/24(金) 10:37:13.71ID:56CkEgqB shellこそ貝殻!
497デフォルトの名無しさん
2020/07/24(金) 14:36:37.83ID:jOZb/2Gr 💪🐚
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【テレビ】 永野芽郁&田中圭の不倫報道をワイドショーが『全スルー』に募るネットの違和感 「広末の不倫はあんなにやったのに」★2 [冬月記者★]
- 中居正広、水面下で反撃の準備か 第三者委員会の報告書での“性暴力者”認定に強い抵抗感、自らの口で真相を明らかにする考えも ★5 [Ailuropoda melanoleuca★]
- 【婚活】若い女性と結婚できるのは「年収1800万円超」だけ…中年男性には厳しすぎる“婚活の現実” ★4 [ぐれ★]
- 【高知】「殺された…」自動運転モードで着替えか 正面衝突で1歳児死亡 運転手「記憶ない」 ★2 [ぐれ★]
- 【航空】「7月に日本で大地震」…漫画「私が見た未来 完全版」の「予言」信じて訪日敬遠か 香港―仙台、徳島便が減便 [ぐれ★]
- うずくまる永野芽郁に5600件以上のコメント殺到「本当のことを話せばいい」「芽郁ちゃんを信じたい」「コメ欄閉じたほうが良い」の声 [muffin★]
- トランプ「中国と関税の交渉をしている」中国「え、してないけど…」 [805596214]
- __米、2024年度米中除く世界全ての国のGDP上回る税収👈小さな政府なんてそんなもの [827565401]
- 全自動ウンチングマシーンハッシーン🤖 ブリブリブリブリブリブリブリ💩🏡
- まんさん「義母の貴女は妊娠中世話してくれたけど、最初に赤ちゃん抱くのは実母って理解してあと迎え来て🙆」→大炎上 [339712612]
- 【悲報】キラキラ女子(35)「えっ、ちょっとまって。私達ってチーズ牛丼と結婚するしかない感じ…?👩(絶句)」 [315952236]
- GWは全部水曜学園アイドルマスター学マススレ