前スレ
【最強CUI】PowerShell -Part 2
http://mevius.5ch.net/test/read.cgi/tech/1480109402/
PowerShell -Part 3
■ このスレッドは過去ログ倉庫に格納されています
2018/10/09(火) 17:46:48.32ID:G4IJkzod
137デフォルトの名無しさん
2018/10/31(水) 19:08:52.44ID:TK2x4mB7138デフォルトの名無しさん
2018/10/31(水) 19:25:39.36ID:zoWehdgp 今更ながらに気が付いた話。
大容量のcsvファイルをimport-csvで読むとメモリーの問題があり・・・・
と思い込んでいたんだけど。
.NETが基本なんで、もしかして中身はIEnumerable利用なんかな?
と思い、ためしに130万件で20項目のデータを使って
import-csv をそのままパイプでgroup-objectにつないで集計してみたら
何の問題もなく結果が得られた。
そうだよね、遅延実行してくれてるんだよね。
処理速度は別として、1億件でもメモリー圧迫なしで処理できるんだ。
自作コマンドレット作ると、デカいデータをPowerShell使った処理が
可能だな。
と気が付いた次第。
皆にとっては当たり前かもしれんけど、いま気が付いたよ。
大容量のcsvファイルをimport-csvで読むとメモリーの問題があり・・・・
と思い込んでいたんだけど。
.NETが基本なんで、もしかして中身はIEnumerable利用なんかな?
と思い、ためしに130万件で20項目のデータを使って
import-csv をそのままパイプでgroup-objectにつないで集計してみたら
何の問題もなく結果が得られた。
そうだよね、遅延実行してくれてるんだよね。
処理速度は別として、1億件でもメモリー圧迫なしで処理できるんだ。
自作コマンドレット作ると、デカいデータをPowerShell使った処理が
可能だな。
と気が付いた次第。
皆にとっては当たり前かもしれんけど、いま気が付いたよ。
139デフォルトの名無しさん
2018/10/31(水) 20:54:57.34ID:2eQnYqe5140デフォルトの名無しさん
2018/10/31(水) 21:31:23.96ID:1CGtBgIK 135です
自己解決しました
>>137
既存の置き換えなのでそうもいかないのです^^;
結局、呼び出したps1ファイルの中で関数化してInvoke-commandでスクリプトブロックを呼び出しました
自己解決しました
>>137
既存の置き換えなのでそうもいかないのです^^;
結局、呼び出したps1ファイルの中で関数化してInvoke-commandでスクリプトブロックを呼び出しました
141138
2018/10/31(水) 22:05:02.46ID:zoWehdgp PCで時間計測してみた
819万件20項目のCSVファイルで2項目を指定したクロス集計。
CSV読み込みからクロス集計まで。
環境はmac mini。OSはwin7
結果:17分16秒
まあ許せるんじゃないでしょうか。
ついでなんでSASで同じことをやってみた、読み込みからクロス集計。
結果:0分9秒
・・・・・・がっくり
819万件20項目のCSVファイルで2項目を指定したクロス集計。
CSV読み込みからクロス集計まで。
環境はmac mini。OSはwin7
結果:17分16秒
まあ許せるんじゃないでしょうか。
ついでなんでSASで同じことをやってみた、読み込みからクロス集計。
結果:0分9秒
・・・・・・がっくり
142デフォルトの名無しさん
2018/10/31(水) 22:11:26.13ID:khMCZPOm SASって何?
143デフォルトの名無しさん
2018/10/31(水) 22:13:11.37ID:7QmHbGvy >>139
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = "タイトル"
$form.Size = New-Object System.Drawing.Size(260,180)
$form.StartPosition = "CenterScreen"
$form.MaximizeBox = $false
$form.MinimizeBox = $false
$form.FormBorderStyle = "FixedSingle"
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(130,100)
$OKButton.Size = New-Object System.Drawing.Size(75,30)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = "タイトル"
$form.Size = New-Object System.Drawing.Size(260,180)
$form.StartPosition = "CenterScreen"
$form.MaximizeBox = $false
$form.MinimizeBox = $false
$form.FormBorderStyle = "FixedSingle"
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(130,100)
$OKButton.Size = New-Object System.Drawing.Size(75,30)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
144デフォルトの名無しさん
2018/10/31(水) 22:13:40.92ID:7QmHbGvy >>139
$Font = New-Object System.Drawing.Font("メイリオ",18)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,30)
$label.Size = New-Object System.Drawing.Size(250,30)
$label.Text = "メッセージ"
$label.font = $Font
$form.Controls.Add($label)
$form.Topmost = $True
$result = $form.ShowDialog()
$Font = New-Object System.Drawing.Font("メイリオ",18)
$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,30)
$label.Size = New-Object System.Drawing.Size(250,30)
$label.Text = "メッセージ"
$label.font = $Font
$form.Controls.Add($label)
$form.Topmost = $True
$result = $form.ShowDialog()
145デフォルトの名無しさん
2018/10/31(水) 22:26:30.11ID:zoWehdgp 統計関係で有名なソフト
データ加工がめちゃ便利で速い。値段が高い。
GoogleやAppleが会社(仕事環境:オフィスや会社の環境)は
SASの本社(SAS Institute)を参考にしたそうだ。
データ加工がめちゃ便利で速い。値段が高い。
GoogleやAppleが会社(仕事環境:オフィスや会社の環境)は
SASの本社(SAS Institute)を参考にしたそうだ。
146デフォルトの名無しさん
2018/10/31(水) 22:30:05.21ID:7QmHbGvy はぁそうですか
147デフォルトの名無しさん
2018/10/31(水) 22:37:39.56ID:zoWehdgp 私のデスクトップ環境で、ソフト年間レンタル初年度120万、次年度60万円
個人じゃ買えないよね〜。でも金融機関や大手の分析BI系(統計やマイニング)は
ほとんどこのソフト。DBもETLもいらないんであとはExcelがあればいいという感じ。
このソフト入れると、DBはただの元データ置き場になっちゃって、皆これをDB代わり
にも使ってしまうことが多い。ただ高いので結構利用部門とか限定される事も多い。
個人じゃ買えないよね〜。でも金融機関や大手の分析BI系(統計やマイニング)は
ほとんどこのソフト。DBもETLもいらないんであとはExcelがあればいいという感じ。
このソフト入れると、DBはただの元データ置き場になっちゃって、皆これをDB代わり
にも使ってしまうことが多い。ただ高いので結構利用部門とか限定される事も多い。
148138
2018/10/31(水) 22:50:51.47ID:zoWehdgp ついでに、機械学習(マイニング・AI)専用のKNIME(これはフリー)で
同じこと(819万件20項目のCSV読み込みと2項目のクロス集計)をやってみた。
結果:3分48秒
PowerShell遅かったけど、十分実用性あると思うわ。
一般のツール使ったらやはり10分位はかかると思うんで。
同じこと(819万件20項目のCSV読み込みと2項目のクロス集計)をやってみた。
結果:3分48秒
PowerShell遅かったけど、十分実用性あると思うわ。
一般のツール使ったらやはり10分位はかかると思うんで。
149デフォルトの名無しさん
2018/11/01(木) 00:33:44.20ID:PBz6MbCm >>138
PowerShell は遅延実行だったのか
Ruby では、外部イタレータのEnumerator なら遅延実行になる
Enumeratorから、to_a して配列の実体を作ると、全部読み込まれてしまうから、
ずっと、Enumeratorを返すメソッドをチェーンしていって、最後にストリーム処理する
Java のStream とか、C# のLinq みたいな感じ
PowerShell は遅延実行だったのか
Ruby では、外部イタレータのEnumerator なら遅延実行になる
Enumeratorから、to_a して配列の実体を作ると、全部読み込まれてしまうから、
ずっと、Enumeratorを返すメソッドをチェーンしていって、最後にストリーム処理する
Java のStream とか、C# のLinq みたいな感じ
150デフォルトの名無しさん
2018/11/01(木) 01:13:45.19ID:c7Wqsl8P Powershellパフォーマンス計測やってたブログで
パイプラインは遅延実行でメモリ使用は少ないけど遅い
foreach(foreach-objectフィルタじゃなくてコマンドの方)はオブジェクトをメモリに読み込むからリソース使うけど速い
とかテストしていた所があった
ただ結構昔の記事だから最近のバージョンだと違うかも
パイプラインは遅延実行でメモリ使用は少ないけど遅い
foreach(foreach-objectフィルタじゃなくてコマンドの方)はオブジェクトをメモリに読み込むからリソース使うけど速い
とかテストしていた所があった
ただ結構昔の記事だから最近のバージョンだと違うかも
151デフォルトの名無しさん
2018/11/01(木) 06:23:45.61ID:mmcP2r/K152デフォルトの名無しさん
2018/11/01(木) 06:25:15.55ID:mmcP2r/K153デフォルトの名無しさん
2018/11/01(木) 09:18:53.50ID:xoDC1qBI 遅延実行とパイプラインは違うよ
遅延実行はオンデマンドの処理で、並行処理になるか一括実行になるかは無関係
イメージとしてはプロキシ
パイプは次を待たずに通常バッファリングされながら並行処理されるもの
イメージはCPUの命令パイプラインそのもの
遅延実行はオンデマンドの処理で、並行処理になるか一括実行になるかは無関係
イメージとしてはプロキシ
パイプは次を待たずに通常バッファリングされながら並行処理されるもの
イメージはCPUの命令パイプラインそのもの
154デフォルトの名無しさん
2018/11/01(木) 09:21:29.14ID:NMd92bWG >>151
確かここのサイト
http://tech.guitarrapc.com/entry/2013/03/09/010335
Powershell3.0での結果らしい
forとforeachとforeach-object(パイプライン使用)とかの比較
データサイズやら構造で違いはありそう
.foreach()メソッドでも動作は変わるらしい
foreachだけでコマンド、フィルター、メソッドと3種類あるとか自分にはついていけなかった
確かここのサイト
http://tech.guitarrapc.com/entry/2013/03/09/010335
Powershell3.0での結果らしい
forとforeachとforeach-object(パイプライン使用)とかの比較
データサイズやら構造で違いはありそう
.foreach()メソッドでも動作は変わるらしい
foreachだけでコマンド、フィルター、メソッドと3種類あるとか自分にはついていけなかった
155デフォルトの名無しさん
2018/11/01(木) 09:40:09.66ID:NMd92bWG156デフォルトの名無しさん
2018/11/01(木) 09:48:43.50ID:mmcP2r/K >>154
あ〜、これは今回の参考にならないかも
わたしも、ずっと似たような考えをしていたんですよ。
このサイトの例では、一度変数に入れてから、別な処理を
行うという処理なので、遅延実行がされていないです。
私がやったのは、コマンドレットをまたいで遅延実行を
してくれているのだと気が付いてやってみたという例なので。
あ〜、これは今回の参考にならないかも
わたしも、ずっと似たような考えをしていたんですよ。
このサイトの例では、一度変数に入れてから、別な処理を
行うという処理なので、遅延実行がされていないです。
私がやったのは、コマンドレットをまたいで遅延実行を
してくれているのだと気が付いてやってみたという例なので。
157デフォルトの名無しさん
2018/11/01(木) 19:18:42.62ID:qmW4m+8w158デフォルトの名無しさん
2018/11/01(木) 21:15:55.85ID:PBz6MbCm Ruby では、Enumerator::Lazy で、無限リストを遅延処理できる
(1..Float::INFINITY).lazy.map{ |n| n*2 }.first(5)
# => [2, 4, 6, 8, 10]
これをLazyなしだと、先に無限配列を実体化しようとして、フリーズする
(1..Float::INFINITY).map{ |n| n*2 }.first(5)
# => (実行が終わらない...)
(1..Float::INFINITY).lazy.map{ |n| n*2 }.first(5)
# => [2, 4, 6, 8, 10]
これをLazyなしだと、先に無限配列を実体化しようとして、フリーズする
(1..Float::INFINITY).map{ |n| n*2 }.first(5)
# => (実行が終わらない...)
159デフォルトの名無しさん
2018/11/01(木) 22:34:36.78ID:j6Caq374 >>158
Rubyの場合も、PowerShellのように、複数のモジュール(PowerShellの場合だとCmdletやスクリプト)をつなげば連動して遅延実行してくれるのでしょうか。
Rubyの方が遅延実行は先駆ということは書かれていたけど。
使うことはないけれども知識として。
Rubyの場合も、PowerShellのように、複数のモジュール(PowerShellの場合だとCmdletやスクリプト)をつなげば連動して遅延実行してくれるのでしょうか。
Rubyの方が遅延実行は先駆ということは書かれていたけど。
使うことはないけれども知識として。
160デフォルトの名無しさん
2018/11/01(木) 22:35:45.48ID:j6Caq374 その無限リストというのが、その話なのかな?
161158
2018/11/01(木) 23:09:51.35ID:PBz6MbCm Ruby では、内部イテレータのEnumerable と、外部イテレータのEnumerator がある
Enumeratorをメソッドチェーンしている間は、リストが実体化されないから、
Enumeratorで続けていって、最後に実体化する
内部イテレータは、イテレータ自身が繰り返し制御を行う。
一方、外部イテレータは、ユーザーが繰り返し制御を行う
外部イテレータでは、2つの配列を1つずつ進めたり、カスタマイズできる
Enumeratorをメソッドチェーンしている間は、リストが実体化されないから、
Enumeratorで続けていって、最後に実体化する
内部イテレータは、イテレータ自身が繰り返し制御を行う。
一方、外部イテレータは、ユーザーが繰り返し制御を行う
外部イテレータでは、2つの配列を1つずつ進めたり、カスタマイズできる
162デフォルトの名無しさん
2018/11/01(木) 23:16:50.68ID:j6Caq374 C#と同じような感じだね
今回はPowerShellで遅延実行すると同じく
実体化されずに次の処理に渡ることが分かったので
こんどはコマンドレットを作ってみようと思う。
今回はPowerShellで遅延実行すると同じく
実体化されずに次の処理に渡ることが分かったので
こんどはコマンドレットを作ってみようと思う。
163デフォルトの名無しさん
2018/11/02(金) 19:41:44.34ID:mjKfpvc8 19,000,000件、20項目のCSVをimpo-csvで読んで、
group-objectで8x8のクロス集計したら
どうも読んでいる途中でおかしくなったようだ。
原因を探らんと・・・・。
800万件では問題なかったんだが。
group-objectで8x8のクロス集計したら
どうも読んでいる途中でおかしくなったようだ。
原因を探らんと・・・・。
800万件では問題なかったんだが。
164デフォルトの名無しさん
2018/11/02(金) 22:59:49.69ID:KoqyjIsr インポならオマエのチンポがおかしい
165デフォルトの名無しさん
2018/11/03(土) 21:38:47.42ID:0juc4OvK 遅延実行と聞くとコマンドプロンプトのforが思い浮かぶね
しかし遅延実行じゃなくて困ったことはあるがその逆は無い
遅延実行じゃないほうって何かメリットあるの?
しかし遅延実行じゃなくて困ったことはあるがその逆は無い
遅延実行じゃないほうって何かメリットあるの?
166デフォルトの名無しさん
2018/11/04(日) 01:00:07.52ID:EZKDDV0E 遅延実行もsetlocalのオプションで即時展開できるやん
167デフォルトの名無しさん
2018/11/07(水) 16:26:31.91ID:64s9hY5n リモートデスクトップ接続元がわかる方法ないかな?
クライアントPC名、ログインユーザー名、ipを見たいんだけど…
調べたらPSTerminalServicesってモジュールで出来るらしい記事があったんだけどもうインストーラー配布してないみたいで手詰まりです。
クライアントPC名、ログインユーザー名、ipを見たいんだけど…
調べたらPSTerminalServicesってモジュールで出来るらしい記事があったんだけどもうインストーラー配布してないみたいで手詰まりです。
168デフォルトの名無しさん
2018/11/07(水) 16:30:58.01ID:Y6Npd9Sa それPowershellと関係ないだろ
169デフォルトの名無しさん
2018/11/07(水) 16:33:27.61ID:64s9hY5n すいませんでした
170デフォルトの名無しさん
2018/11/07(水) 17:01:30.70ID:lW8FLp9M >>167
https://powershelladministrator.com/2015/12/01/get-logged-on-users-and-sessions/
Get-RDUserSession |fl *
で拾えるとは思うから接続元プロパティ名わかったらselect-object UserName,(接続元のプロパティ名)
とかやってみて
https://powershelladministrator.com/2015/12/01/get-logged-on-users-and-sessions/
Get-RDUserSession |fl *
で拾えるとは思うから接続元プロパティ名わかったらselect-object UserName,(接続元のプロパティ名)
とかやってみて
171デフォルトの名無しさん
2018/11/07(水) 17:04:41.31ID:64s9hY5n172デフォルトの名無しさん
2018/11/07(水) 17:04:49.71ID:lW8FLp9M >>168
PowershellとWindowsサービス管理用コマンドレットは関係有りまくり
PowershellとWindowsサービス管理用コマンドレットは関係有りまくり
173デフォルトの名無しさん
2018/11/07(水) 19:32:24.46ID:5rQxDZaK たしかに
もともと、PowerShellが出てきた目的の世界だね
もともと、PowerShellが出てきた目的の世界だね
174デフォルトの名無しさん
2018/11/07(水) 21:28:10.26ID:0cfzNL20 でもここはプログラム板なので
175デフォルトの名無しさん
2018/11/07(水) 21:30:12.65ID:M3d0NYL/ >>174
Windows板にこのスレがない時点で意味ない
Windows板にこのスレがない時点で意味ない
176デフォルトの名無しさん
2018/11/08(木) 06:31:15.25ID:zJM3NQZE Windows PowerShell Part5 https://mevius.5ch.net/test/read.cgi/win/1474175184/
177デフォルトの名無しさん
2018/11/09(金) 13:01:36.92ID:V62EYj3k FizzBuzz 42文字でかけた
1..100|%{"$_`r"+{fizz}[$_%3]+{buzz}[$_%5]}
1..100|%{"$_`r"+{fizz}[$_%3]+{buzz}[$_%5]}
178デフォルトの名無しさん
2018/11/09(金) 20:47:10.72ID:V62EYj3k179デフォルトの名無しさん
2018/11/11(日) 03:17:15.29ID:v3JXSoAX >>177
シンプルで美しい
シンプルで美しい
180デフォルトの名無しさん
2018/11/11(日) 07:15:18.30ID:tAZC+CW3 スクリプトブロックに[0]添字で値参照て技があるのか配列なら分かるけどなんか不思議
181デフォルトの名無しさん
2018/11/11(日) 10:05:51.56ID:3JRsWB+V PowerShellは配列の扱いがかなり独特
単なる数値でも配列扱いすると要素1つだけの配列みたいに振舞う
$a = 1
$a[0] ⇒ 1
$a[1] ⇒ $null
まあ>>177はよく思いついたなって思う
単なる数値でも配列扱いすると要素1つだけの配列みたいに振舞う
$a = 1
$a[0] ⇒ 1
$a[1] ⇒ $null
まあ>>177はよく思いついたなって思う
182デフォルトの名無しさん
2018/11/11(日) 10:15:59.49ID:xoHShG4l まず{fizz}が文字列になるという部分から読めなかった
183デフォルトの名無しさん
2018/11/11(日) 12:45:53.82ID:xpOIALoe バグみたいな仕様だな
バグだな
バグだな
184デフォルトの名無しさん
2018/11/11(日) 15:05:07.40ID:msMOLK59 powershell -v 2だと動かないな
PowerShell 3.0で配列じゃない変数も要素を取得できるようになったから動く
バグではないっぽい
PowerShell 3.0で配列じゃない変数も要素を取得できるようになったから動く
バグではないっぽい
185デフォルトの名無しさん
2018/11/11(日) 18:49:56.37ID:/HpWdlpY スクリプトブロックでしょ
186デフォルトの名無しさん
2018/11/11(日) 19:06:06.81ID:Fk6I1vC1 事務の仕事で、ファイル処理とかテキスト処理のため、たまにPowerShellを使ってます
挙動の予測ができずトライアンドエラーをする機会がVBAなどより少し多くて
素人にはちょっと難しいのかなあと思ってたのですが
理解不能な技>>177を見て、使いこなせる自信がますます無くなりました
挙動の予測ができずトライアンドエラーをする機会がVBAなどより少し多くて
素人にはちょっと難しいのかなあと思ってたのですが
理解不能な技>>177を見て、使いこなせる自信がますます無くなりました
187デフォルトの名無しさん
2018/11/11(日) 19:37:24.70ID:xpOIALoe188デフォルトの名無しさん
2018/11/11(日) 19:39:58.14ID:JFNgNrbU スクリプトブロックを文字列にキャストすると中身が実行されずに中のコードがそのまま文字列になる
つまり [string]{ fizz } が暗黙になされてるだけ
つまり [string]{ fizz } が暗黙になされてるだけ
189デフォルトの名無しさん
2018/11/11(日) 20:33:31.13ID:tAZC+CW3 その説明もピンと来ないが
&[fizz] や $hoge={Fizz};&$hoge
とすればちゃんとエラーになる。
未実行のスクリプトブロックは一種のヒア文字列扱いとなるということなんだろうか…
&[fizz] や $hoge={Fizz};&$hoge
とすればちゃんとエラーになる。
未実行のスクリプトブロックは一種のヒア文字列扱いとなるということなんだろうか…
190デフォルトの名無しさん
2018/11/11(日) 20:34:21.67ID:tAZC+CW3 &{fizz} だったすまん
191デフォルトの名無しさん
2018/11/11(日) 20:43:37.28ID:tAZC+CW3 powershell -v 2のエラーメッセージ
"型 System.Management.Automation.ScriptBlock のオブジェクトにインデックスを付けることはできません。"
わかるw
"型 System.Management.Automation.ScriptBlock のオブジェクトにインデックスを付けることはできません。"
わかるw
192デフォルトの名無しさん
2018/11/11(日) 21:03:13.85ID:xpOIALoe { abc def ghi} #=> abc def ghi
なんか{}でかこまれた部分がそのまま文字列になってる
なにこれぇ
なんか{}でかこまれた部分がそのまま文字列になってる
なにこれぇ
193デフォルトの名無しさん
2018/11/11(日) 21:26:24.30ID:v3JXSoAX 1..100|%{"$_`r"+{fizz}[$_%3]+{buzz}[$_%5]}
1..100 # 範囲演算子で1から100までのint[]を生成
| # パイプ演算子
% # Foreach-Object
{ # スクリプトブロック開始(%の引数)
" # 文字列開始(二重引用符の中ではエスケープシーケンスが展開される)
$_ # パイプラインの入力を受け取る自動変数
`r # Carriage returnのエスケープシーケンス。後に続く文字で前の文字を上書きする(なにもない場合上書き無し)
" # 文字列終了→string型
+ # 加算演算子(左辺がstring型なので右辺をstring型にキャストする)
{ # スクリプトブロック開始
fizz # コマンド/関数名fizzとして解釈されるがスクリプトブロック内なので実行されない
} # スクリプトブロック終了→ScriptBlock型
[ # []演算子で左辺を要素数1の配列としてアクセスする。
$_%3 # 配列のインデックス。%(剰余)演算子でパイプラインの入力$_を3で割る
] # 上の結果が0(→3の倍数)の場合のみスクリプトブロックの要素にアクセス、1以上の場合$null
+ # 加算演算子(左辺がstring型なので右辺をstring型にキャストする)。
{buzz}[$_%5] # fizzと同じ。結果としてstringが評価されコンソールに出力される
} #スクリプトブロック終了。
1..100 # 範囲演算子で1から100までのint[]を生成
| # パイプ演算子
% # Foreach-Object
{ # スクリプトブロック開始(%の引数)
" # 文字列開始(二重引用符の中ではエスケープシーケンスが展開される)
$_ # パイプラインの入力を受け取る自動変数
`r # Carriage returnのエスケープシーケンス。後に続く文字で前の文字を上書きする(なにもない場合上書き無し)
" # 文字列終了→string型
+ # 加算演算子(左辺がstring型なので右辺をstring型にキャストする)
{ # スクリプトブロック開始
fizz # コマンド/関数名fizzとして解釈されるがスクリプトブロック内なので実行されない
} # スクリプトブロック終了→ScriptBlock型
[ # []演算子で左辺を要素数1の配列としてアクセスする。
$_%3 # 配列のインデックス。%(剰余)演算子でパイプラインの入力$_を3で割る
] # 上の結果が0(→3の倍数)の場合のみスクリプトブロックの要素にアクセス、1以上の場合$null
+ # 加算演算子(左辺がstring型なので右辺をstring型にキャストする)。
{buzz}[$_%5] # fizzと同じ。結果としてstringが評価されコンソールに出力される
} #スクリプトブロック終了。
194デフォルトの名無しさん
2018/11/11(日) 21:55:09.88ID:JFNgNrbU >>189
単にスクリプトブロック型のオブジェクトが中身の生コードを持ってるだけやろ
{fizz}.ToString() しても同じ
ToString()でどういう値を返すかはオブジェクトの種類によって違う
&やコンマやInvokeしたときに初めてスクリプトブロック型オブジェクトが持ってるコードが評価される
単にスクリプトブロック型のオブジェクトが中身の生コードを持ってるだけやろ
{fizz}.ToString() しても同じ
ToString()でどういう値を返すかはオブジェクトの種類によって違う
&やコンマやInvokeしたときに初めてスクリプトブロック型オブジェクトが持ってるコードが評価される
195デフォルトの名無しさん
2018/11/11(日) 22:21:33.88ID:JFNgNrbU ちょっと舌足らずだった
スクリプトブロック型はToString()したときに
内部に文字列としてもってる生コードを返すってことが言いたかった
実際ソースを読んでるわけじゃないけど
スクリプトブロック型はToString()したときに
内部に文字列としてもってる生コードを返すってことが言いたかった
実際ソースを読んでるわけじゃないけど
196デフォルトの名無しさん
2018/11/11(日) 23:20:57.99ID:xpOIALoe スクリプトブロックは&で評価されるまで中身何もチェックされないみたいですね
一応動作は理解しましたがなんていい加減な言語なんだろ
こんなのどこにも書いてないし今後仕様変わる可能性はありそうですね
ありがとうございました
一応動作は理解しましたがなんていい加減な言語なんだろ
こんなのどこにも書いてないし今後仕様変わる可能性はありそうですね
ありがとうございました
197デフォルトの名無しさん
2018/11/12(月) 00:58:57.83ID:3c4TyDT9 こんなのは常識的に理解できる範囲や
パイプラインを考慮した関数をちゃんと作ろうと思ったら頭おかしなるで
パイプラインを考慮した関数をちゃんと作ろうと思ったら頭おかしなるで
198デフォルトの名無しさん
2018/11/12(月) 06:17:57.42ID:gZOE16Sc >>193
たいへんに、ありがとうごわす
たいへんに、ありがとうごわす
199デフォルトの名無しさん
2018/11/12(月) 20:33:57.05ID:kM9Cc8DJ まさにシェル芸
200デフォルトの名無しさん
2018/11/12(月) 20:51:57.60ID:ZJicw3nv しかし、以前に比べて
投稿される内容が良くなってきたね
かつては『○○と比べてなんら』とか
そういう投稿ばかりだったもんね。
投稿される内容が良くなってきたね
かつては『○○と比べてなんら』とか
そういう投稿ばかりだったもんね。
201デフォルトの名無しさん
2018/11/12(月) 21:10:04.82ID:AMbuBroP シェル芸ならこんなところ
seq 100|sed 's/.*5$/Buzz/;3~3s/[0-9]*/Fizz/'
seq 100|sed 's/.*5$/Buzz/;3~3s/[0-9]*/Fizz/'
202デフォルトの名無しさん
2018/11/12(月) 23:49:46.46ID:ZJicw3nv どちらにしても、見てもわからないね
203デフォルトの名無しさん
2018/11/13(火) 05:49:15.96ID:xWZc78Mp 知恵を絞って短縮コードを目指すから、理解容易ではないのはまあ仕方ない
204デフォルトの名無しさん
2018/11/13(火) 08:37:24.02ID:6YAdmBBQ 3.0からの文法でできるならだれか思いついてそうだったけど検索しても出てこないな
Anarchy GolfにはPowerShell無いし、StackExchangeで58byte、牟田口氏のコードで51byte
いろいろテクニックが載ってて面白い
what is your fave PoSh version of FizzBuzz? : PowerShell
https://www.reddit.com/r/PowerShell/comments/6r06hg/what_is_your_fave_posh_version_of_fizzbuzz/
code golf - Tips for golfing in PowerShell - Programming Puzzles & Code Golf Stack Exchange
https://codegolf.stackexchange.com/questions/191/tips-for-golfing-in-powershell?page=2&tab=votes#tab-top
Anarchy GolfにはPowerShell無いし、StackExchangeで58byte、牟田口氏のコードで51byte
いろいろテクニックが載ってて面白い
what is your fave PoSh version of FizzBuzz? : PowerShell
https://www.reddit.com/r/PowerShell/comments/6r06hg/what_is_your_fave_posh_version_of_fizzbuzz/
code golf - Tips for golfing in PowerShell - Programming Puzzles & Code Golf Stack Exchange
https://codegolf.stackexchange.com/questions/191/tips-for-golfing-in-powershell?page=2&tab=votes#tab-top
205デフォルトの名無しさん
2018/11/13(火) 18:05:14.16ID:hYk6FFU0 IDがバーベキューだね
206デフォルトの名無しさん
2018/11/14(水) 08:50:21.40ID:PFpyL5+w PowerShell Core 6.1.0で日本語が正しく表示されない現象について
https://blog.shibata.tech/entry/2018/11/13/202031
https://blog.shibata.tech/entry/2018/11/13/202031
207デフォルトの名無しさん
2018/11/14(水) 09:25:00.49ID:JBsUV7Ak208デフォルトの名無しさん
2018/11/14(水) 14:34:06.24ID:REddJKuq PowerShell で全角文字を入力すると表示がおかしくなる問題について
https://blogs.technet.microsoft.com/askcorejp/2018/11/14/powershell-で全角文字を入力すると表示がおかしくなる問/
https://blogs.technet.microsoft.com/askcorejp/2018/11/14/powershell-で全角文字を入力すると表示がおかしくなる問/
209デフォルトの名無しさん
2018/11/14(水) 20:33:58.55ID:JBsUV7Ak ISEは問題ないのに、普通のシェルがダメって何年放置されてるのだろう?
210デフォルトの名無しさん
2018/11/14(水) 21:42:06.99ID:wbqNTVov VSCodeでPowershellの色寂しくなった
211デフォルトの名無しさん
2018/11/15(木) 00:08:24.89ID:WLDbhFjW >>209
2か月じゃないか?
2か月じゃないか?
212デフォルトの名無しさん
2018/11/15(木) 00:38:25.77ID:RLOkjNth 何年も放置されてるぞ
213デフォルトの名無しさん
2018/11/15(木) 00:41:50.91ID:WLDbhFjW214デフォルトの名無しさん
2018/11/15(木) 04:26:11.58ID:eQKfIPvp >>208はデスクトップ版Powershellの話Win10が出て3年かな
215デフォルトの名無しさん
2018/11/15(木) 10:35:40.03ID:3jZ436MI オプションを展開させるうまい方法ってありますか?
たとえば、-WhatIfを付ける/付けないを場合分けしたいときなど。
HogeCmd fuga piyo $whatif
とやると、$whatifは普通の引数になってしまうのでNG。
eval方式(コマンド全体を文字列にしてInvoke-Expressionで呼び出す)もあるけれど、
できれば、オプションのところだけうまいこと展開できればいいな、と。
たとえば、-WhatIfを付ける/付けないを場合分けしたいときなど。
HogeCmd fuga piyo $whatif
とやると、$whatifは普通の引数になってしまうのでNG。
eval方式(コマンド全体を文字列にしてInvoke-Expressionで呼び出す)もあるけれど、
できれば、オプションのところだけうまいこと展開できればいいな、と。
216デフォルトの名無しさん
2018/11/15(木) 13:52:20.43ID:94uNwBee スプラッティングでやるのが普通かな
217デフォルトの名無しさん
2018/11/15(木) 15:12:55.02ID:8dkxddcr >>216
それ何?
それ何?
218デフォルトの名無しさん
2018/11/15(木) 15:25:38.96ID:VchA8nRa >>216
横からだが、スプラッティングというものを初めて知って非常に参考になった。ありがとう。
横からだが、スプラッティングというものを初めて知って非常に参考になった。ありがとう。
219デフォルトの名無しさん
2018/11/15(木) 16:00:23.13ID:4BqFdJaY220デフォルトの名無しさん
2018/11/15(木) 17:07:06.05ID:n3jFLh1o >>216
サンクス
サンクス
221デフォルトの名無しさん
2018/11/15(木) 21:27:16.74ID:cJYjGYCA スプラッタのスプラッタ
222デフォルトの名無しさん
2018/11/15(木) 22:18:43.81ID:sPg3U71k223デフォルトの名無しさん
2018/11/16(金) 05:17:03.39ID:7vBGbpbo スプラピスプラッタ
224デフォルトの名無しさん
2018/11/16(金) 10:51:17.32ID:0JdshTdX Announcing General Availability of the Windows Compatibility Module 1.0.0
https://blogs.msdn.microsoft.com/powershell/2018/11/15/announcing-general-availability-of-the-windows-compatibility-module-1-0-0/
https://blogs.msdn.microsoft.com/powershell/2018/11/15/announcing-general-availability-of-the-windows-compatibility-module-1-0-0/
225デフォルトの名無しさん
2018/11/16(金) 17:17:39.49ID:h/lypBab 実行ユーザーがSYSTEMな場合の
COMオブジェクト利用がうまくいかないのは回避策ないでしょうか
COMオブジェクト利用がうまくいかないのは回避策ないでしょうか
226デフォルトの名無しさん
2018/11/16(金) 22:04:34.76ID:bUstU+hr v6.1.1 Release of PowerShell Core
https://github.com/PowerShell/PowerShell/releases/tag/v6.1.1
https://github.com/PowerShell/PowerShell/releases/tag/v6.1.1
227デフォルトの名無しさん
2018/11/16(金) 22:06:57.09ID:bUstU+hr v6.0.5 Release of PowerShell Core
https://github.com/PowerShell/PowerShell/releases/tag/v6.0.5
https://github.com/PowerShell/PowerShell/releases/tag/v6.0.5
228デフォルトの名無しさん
2018/11/16(金) 22:55:21.07ID:6qpmN5uX 資格情報・認証とか?
「powershell 資格情報」で検索して
「powershell 資格情報」で検索して
229デフォルトの名無しさん
2018/11/17(土) 06:13:16.64ID:bZFmP2aX230デフォルトの名無しさん
2018/11/17(土) 07:39:47.70ID:tSr/NeZx231デフォルトの名無しさん
2018/11/17(土) 07:47:24.60ID:gKTWKNrR タスクスケジューラで動かしたいのかも。いずれにせよ具体例を書いて欲しいものだ
232デフォルトの名無しさん
2018/11/18(日) 00:15:47.54ID:L8Gt0pA8 >>221
スプラッターハウス以外思い浮かばないw
スプラッターハウス以外思い浮かばないw
233デフォルトの名無しさん
2018/11/19(月) 16:50:05.08ID:g2+fQFFI WindowsCompatibilityモジュール試してみたけどFormat-table用の情報とか無いから一部コマンドレットの表示が微妙
いちいちモジュール読み込まんとダメだし
いちいちモジュール読み込まんとダメだし
234デフォルトの名無しさん
2018/11/19(月) 17:10:55.17ID:9fApbElg >>233
Fomat-Table、モジュールなしだと使えなかったの?
Fomat-Table、モジュールなしだと使えなかったの?
235デフォルトの名無しさん
2018/11/19(月) 19:27:11.18ID:xl/gDTc+ >>234
いや、そこまでの問題じゃない
Format-Tableで優先表示するプロパティ情報がないだけ
Format-Tableしても要らんプロパティがでてきたりする
Select-objectとかしてあげれば問題ないよ
いや、そこまでの問題じゃない
Format-Tableで優先表示するプロパティ情報がないだけ
Format-Tableしても要らんプロパティがでてきたりする
Select-objectとかしてあげれば問題ないよ
236デフォルトの名無しさん
2018/11/19(月) 19:59:58.22ID:Qq88xGOU 暗黙のWrite-Host|ft
が効かず、明示的に書かんどダメな感じ?
が効かず、明示的に書かんどダメな感じ?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 【悲報】ジャップ、どうやら中国が一方的に戦争仕掛けてくると思ってる模様😰 [616817505]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【高市速報】明日から中国からの輸入が停止すれば2ヵ月で国内の生産業に53兆円の損失発生 [931948549]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
