18/10/30 07:50:51.52 wAgTgtJ2.net
>>122
21世紀のnroffだわな
128:デフォルトの名無しさん
18/10/30 19:29:22.59 5BbWkodl.net
WindowsPEのvbsがシステムフォントの変更によって使い物にならなくなったので
PowerShellでフォントを指定したメッセージボックスを使いたいです。
インプットボックスでフォントを指定したサンプルは見つけましたが
メッセージボックス版が見つけられません。
コードを教えていただけますでしょうか。
バッチスレの住人でPowerShellは門外漢
129:なのです。
130:デフォルトの名無しさん
18/10/30 20:40:30.78 LZVff6s3.net
よくわからんけどmsgコマンドじゃあかんの?
131:デフォルトの名無しさん
18/10/30 21:16:30.95 J8L+p3HY.net
>>129
WindowsのPro版にある「Msg.exe」の事ですか?
WindowsPEに有りませんし、持って来ても動きませんでした。
WindowsPEはx86のexeをx64で動かせないので
x86しかexeが無い場合は使えません。
その点、スクリプトはビット数を選ばないので都合がいいのです。
132:デフォルトの名無しさん
18/10/30 21:25:14.89 eTO/K+Ns.net
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.MessageBox]::Show("メッセージ", "タイトル")
で行けるかね?
PEでWindowsForms使えるか分からんけど
133:デフォルトの名無しさん
18/10/30 21:41:00.25 OyNBi9EH.net
そもそもPEなんてしょぼ環境にPowershellや.NETランタイム入ってるんだっけ
逆にPSが動作するぐらいならSysWOW64ぐらい入っててもよさそうだが
134:デフォルトの名無しさん
18/10/30 21:41:13.95 J8L+p3HY.net
>>131
それは動きました。
でも、フォントサイズとフォントを指定したいのです。
135:デフォルトの名無しさん
18/10/30 22:39:58.99 ZaLbntHv.net
インプットボックスのサンプルこれか?
URLリンク(docs.microsoft.com)
これなら、テキストBOX削ってカスタマイズすりゃいいんじゃ?
136:デフォルトの名無しさん
18/10/31 01:30:38.10 FlI1cXqx.net
バッチから引数付きで呼び出す時に、引数 ※param() でエラーが出た時って
%ERRORLEVEL% は 0 ですよね?
trapやtry~catchもできないし。。。
param での例外を判定する方法はないでしょうか
137:デフォルトの名無しさん
18/10/31 10:46:10.57 7QmHbGvy.net
WindowsFormsつかってフォントかえるなら
FormつくってLabelのfontに
Add-Type -AssemblyName System.Drawing
$Font = New-Object System.Drawing.Font("メイリオ",18)
でぶち込むくらいしか知らねい
138:デフォルトの名無しさん
18/10/31 19:08:52.44 TK2x4mB7.net
>>135
Powershellをバッチの部品として使うのは非効率だしなぁ
Powershellスクリプトで書けば良くない?
引数のエラー処理なんて関数ごとtry~catchすりゃいいし
139:デフォルトの名無しさん
18/10/31 19:25:39.36 zoWehdgp.net
今更ながらに気が付いた話。
大容量のcsvファイルをimport-csvで読むとメモリーの問題があり・・・・
と思い込んでいたんだけど。
.NETが基本なんで、もしかして中身はIEnumerable利用なんかな?
と思い、ためしに130万件で20項目のデータを使って
import-csv をそのままパイプでgroup-objectにつないで集計してみたら
何の問題もなく結果が得られた。
そうだよね、遅延実行してくれてるんだよね。
処理速度は別として、1億件でもメモリー圧迫なしで処理できるんだ。
自作コマンドレット作ると、デカいデータをPowerShell使った処理が
可能だな。
と気が付いた次第。
皆にとっては当たり前かもしれんけど、いま気が付いたよ。
140:デフォルトの名無しさん
18/10/31 20:54:57.34 2eQnYqe5.net
>>134
>>136
すみませんが、その説明でも分からないレベルですので
コードを全て教えて頂けないでしょうか。
Formとかlabelとか全然分からないのです。
141:デフォルトの名無しさん
18/10/31 21:31:23.96 1CGtBgIK.net
135です
自己解決しました
>>137
既存の置き換えなのでそうもいかないのです^^;
結局、呼び出したps1ファイルの中で関数化してInvoke-commandでスクリプトブロックを呼び出しました
142:138
18/10/31 22:05:02.46 zoWehdgp.net
PCで時間計測してみた
819万件20項目のCSVファイルで2項目を指定したクロス集計。
CSV読み込みからクロス集計まで。
環境はmac mini。OSはwin7
結果:17分16秒
まあ許せるんじゃないでしょうか。
ついでなんでSASで同じことをやってみた、読み込みからクロス集計。
結果:0分9秒
・・・・・・がっくり
143:デフォルトの名無しさん
18/10/31 22:11:26.13 khMCZPOm.net
SASって何?
144:デフォルトの名無しさん
18/10/31 22:13:11.37 7QmHbGvy.net
>>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)
145:デフォルトの名無しさん
18/10/31 22:13:40.92 7QmHbGvy.net
>>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()
146:デフォルトの名無しさん
18/10/31 22:26:30.11 zoWehdgp.net
統計関係で有名なソフト
データ加工がめちゃ便利で速い。値段が高い。
GoogleやAppleが会社(仕事環境:オフィスや会社の環境)は
SASの本社(SAS Institute)を参考にしたそうだ。
147:デフォルトの名無しさん
18/10/31 22:30:05.21 7QmHbGvy.net
はぁそうですか
148:デフォルトの名無しさん
18/10/31 22:37:39.56 zoWehdgp.net
私のデスクトップ環境で、ソフト年間レンタル初年度120万、次年度60万円
個人じゃ買えないよね~。でも金融機関や大手の分析BI系(統計やマイニング)は
ほとんどこのソフト。DBもETLもいらないんであとはExcelがあればいいという感じ。
このソフト入れると、DBはただの元データ置き場になっちゃって、皆これをDB代わり
にも使ってしまうことが多い。ただ高いので結構利用部門とか限定される事も多い。
149:138
18/10/31 22:50:51.47 zoWehdgp.net
ついでに、機械学習(マイニング・AI)専用のKNIME(これはフリー)で
同じこと(819万件20項目のCSV読み込みと2項目のクロス集計)をやってみた。
結果:3分48秒
PowerShell遅かったけど、十分実用性あると思うわ。
一般のツール使ったらやはり10分位はかかると思うんで。
150:デフォルトの名無しさん
18/11/01 00:33:44.20 PBz6MbCm.net
>>138
PowerShell は遅延実行だったのか
Ruby では、外部イタレータのEnumerator なら遅延実行になる
Enumeratorから、to_a して配列の実体を作ると、全部読み込まれてしまうから、
ずっと、Enumeratorを返すメソッドをチェーンしていって、最後にストリーム処理する
Java のStream とか、C# のLinq みたいな感じ
151:デフォルトの名無しさん
18/11/01 01:13:45.19 c7Wqsl8P.net
Powershellパフォーマンス計測やってたブログで
パイプラインは遅延実行でメモリ使用は少ないけど遅い
foreach(foreach-objectフィルタじゃなくてコマンドの方)はオブジェクトをメモリに読み込むからリソース使うけど速い
とかテストしていた所があった
ただ結構昔の記事だから最近のバージョンだと違うかも
152:デフォルトの名無しさん
18/11/01 06:23:45.61 mmcP2r/K.net
>>14
153:9 >Java のStream とか、C# のLinq みたいな感じ まさにLinqの形なんですね。C#でLinq使ってみて、もしかして・・・と思って テストしてみたい次第。 >>150 foreach速いのかな? 逆にすげー遅いんじゃないかと思ってだんたけど、どうなんだろう。 場合によると、それはforに対するforeachの話かもしれない。 ちょっとデータが大きくなると、利用していなかったけど、少しくらい大きい ものなら、PowerShell結構使い物になることが分かったので、ツール作ろうかと 思って来ましたよ。コマンドレットを独自に作れば結構なことが出来そう。
154:デフォルトの名無しさん
18/11/01 06:25:15.55 mmcP2r/K.net
>>149
>まさにLinqの形なんですね。C#でLinq使ってみて、もしかして・・・と思って
>テストしてみたい次第。
間違った
「テストしてみた次第」
155:デフォルトの名無しさん
18/11/01 09:18:53.50 xoDC1qBI.net
遅延実行とパイプラインは違うよ
遅延実行はオンデマンドの処理で、並行処理になるか一括実行になるかは無関係
イメージとしてはプロキシ
パイプは次を待たずに通常バッファリングされながら並行処理されるもの
イメージはCPUの命令パイプラインそのもの
156:デフォルトの名無しさん
18/11/01 09:21:29.14 NMd92bWG.net
>>151
確かここのサイト
URLリンク(tech.guitarrapc.com)
Powershell3.0での結果らしい
forとforeachとforeach-object(パイプライン使用)とかの比較
データサイズやら構造で違いはありそう
.foreach()メソッドでも動作は変わるらしい
foreachだけでコマンド、フィルター、メソッドと3種類あるとか自分にはついていけなかった
157:デフォルトの名無しさん
18/11/01 09:40:09.66 NMd92bWG.net
>>153
わかってなかったわ
遅延実行やら並行処理やらの勉強やら検証方法やら勉強して出直さないとダメだなぁ
158:デフォルトの名無しさん
18/11/01 09:48:43.50 mmcP2r/K.net
>>154
あ~、これは今回の参考にならないかも
わたしも、ずっと似たような考えをしていたんですよ。
このサイトの例では、一度変数に入れてから、別な処理を
行うという処理なので、遅延実行がされていないです。
私がやったのは、コマンドレットをまたいで遅延実行を
してくれているのだと気が付いてやってみたという例なので。
159:デフォルトの名無しさん
18/11/01 19:18:42.62 qmW4m+8w.net
>>143
>>144
ありがとうございます。
動きました。
願わくば、タイトルバーのフォントも変えたかったのですが
おそらく無理ですよね。
160:デフォルトの名無しさん
18/11/01 21:15:55.85 PBz6MbCm.net
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)
# => (実行が終わらない...)
161:デフォルトの名無しさん
18/11/01 22:34:36.78 j6Caq374.net
>>158
Rubyの場合も、PowerShellのように、複数のモジュール(PowerShellの場合だとCmdletやスクリプト)をつなげば連動して遅延実行してくれるのでしょうか。
Rubyの方が遅延実行は先駆ということは書かれていたけど。
使うことはないけれども知識として。
162:デフォルトの名無しさん
18/11/01 22:35:45.48 j6Caq374.net
その無限リストというのが、その話なのかな?
163:158
18/11/01 23:09:51.35 PBz6MbCm.net
Ruby では、内部イテレータのEnumerable と、外部イテレータのEnumerator がある
Enumeratorをメソッドチェーンしている間は、リストが実体化されないから、
Enumeratorで続けていって、最後に実体化する
内部イテレータは、イテレータ自身が繰り返し制御を行う。
一方、外部イテレータは、ユーザーが繰り返し制御を行う
外部イテレータでは、2つの配列を1つずつ進めたり、カスタマイズできる
164:デフォルトの名無しさん
18/11/01 23:16:50.68 j6Caq374.net
C#と同じような感じだね
今回はPowerShellで遅延実行すると同じく
実体化されずに次の処理に渡ることが分かったので
こんどはコマンドレットを作ってみようと思う。
165:デフォルトの名無しさん
18/11/02 19:41:44.34 mjKfpvc8.net
19,000,000件、20項目のCSVをimpo-csvで読んで、
group-objectで8x8のクロス集計したら
どうも読んでいる途中でおかしくなったようだ。
原因を探らんと・・・・。
800万件では問題なかったんだが。
166:デフォルトの名無しさん
18/11/02 22:59:49.69 KoqyjIsr.net
インポならオマエのチンポがおかしい
167:デフォルトの名無しさん
18/11/03 21:38:47.42 0juc4OvK.net
遅延実行と聞くとコマンドプロンプトのforが思い浮かぶね
しかし遅延実行じゃなくて困ったことはあるがその逆は無い
遅延実行じゃないほうって何かメリットあるの?
168:デフォルトの名無しさん
18/11/04 01:00:07.52 EZKDDV0E.net
遅延実行もsetlocalのオプションで即時展開できるやん
169:デフォルトの名無しさん
18/11/07 16:26:31.91 64s9hY5n.net
リモートデスクトップ接続元がわかる方法ないかな?
クライアントPC名、ログインユーザー名、ipを見たいんだけど…
調べたらPSTerminalServicesってモジュールで出来るらしい記事があったんだけどもうインストーラー配布してないみたいで手詰まりです。
170:デフォルトの名無しさん
18/11/07 16:30:58.01 Y6Npd9Sa.net
それPowershellと関係ないだろ
171:デフォルトの名無しさん
18/11/07 16:33:27.61 64s9hY5n.net
すいませんでした
172:デフォルトの名無しさん
18/11/07 17:01:30.70 lW8FLp9M.net
>>167
URLリンク(powershelladministrator.com)
Get-RDUserSession |fl *
で拾えるとは思うから接続元プロパティ名わかったらselect-object UserName,(接続元のプロパティ名)
とかやってみて
173:デフォルトの名無しさん
18/11/07 17:04:41.31 64s9hY5n.net
>>170
ありがとうございます!
早速使ってみたいと思います!
スレ汚しすいませんでした。
174:デフォルトの名無しさん
18/11/07 17:04:49.71 lW8FLp9M.net
>>168
PowershellとWindowsサービス管理用コマンドレットは関係有りまくり
175:デフォルトの名無しさん
18/11/07 19:32:24.46 5rQxDZaK.net
たしかに
もともと、PowerShellが出てきた目的の世界だね
176:デフォルトの名無しさん
18/11/07 21:28:10.26 0cfzNL20.net
でもここはプログラム板なので
177:デフォルトの名無しさん
18/11/07 21:30:12.65 M3d0NYL/.net
>>174
Windows板にこのスレがない時点で意味ない
178:デフォルトの名無しさん
18/11/08 06:31:15.25 zJM3NQZE.net
Windows PowerShell Part5 スレリンク(win板)
179:デフォルトの名無しさん
18/11/09 13:01:36.92 V62EYj3k.net
FizzBuzz 42文字でかけた
1..100|%{"$_`r"+{fizz}[$_%3]+{buzz}[$_%5]}
180:デフォルトの名無しさん
18/11/09 20:47:10.72 V62EYj3k.net
>>177
キャリッジリターンで上書きしてるだけなのでやや反則か
文字列長は(数字桁+1)文字されてる
181:デフォルトの名無しさん
18/11/11 03:17:15.29 v3JXSoAX.net
>>177
シンプルで美しい
182:デフォルトの名無しさん
18/11/11 07:15:18.30 tAZC+CW3.net
スクリプトブロックに[0]添字で値参照て技があるのか配列なら分かるけどなんか不思議
183:デフォルトの名無しさん
18/11/11 10:05:51.56 3JRsWB+V.net
PowerShellは配列の扱いがかなり独特
単なる数値でも配列扱いすると要素1つだけの配列みたいに振舞う
$a = 1
$a[0] ⇒ 1
$a[1] ⇒ $null
まあ>>177はよく思いついたなって思う
184:デフォルトの名無しさん
18/11/11 10:15:59.49 xoHShG4l.net
まず{fizz}が文字列になるという部分から読めなかった
185:デフォルトの名無しさん
18/11/11 12:45:53.82 xpOIALoe.net
バグみたいな仕様だな
バグだな
186:デフォルトの名無しさん
18/11/11 15:05:07.40 msMOLK59.net
powershell -v 2だと動かないな
PowerShell 3.0で配列じゃない
187:変数も要素を取得できるようになったから動く バグではないっぽい
188:デフォルトの名無しさん
18/11/11 18:49:56.37 /HpWdlpY.net
スクリプトブロックでしょ
189:デフォルトの名無しさん
18/11/11 19:06:06.81 Fk6I1vC1.net
事務の仕事で、ファイル処理とかテキスト処理のため、たまにPowerShellを使ってます
挙動の予測ができずトライアンドエラーをする機会がVBAなどより少し多くて
素人にはちょっと難しいのかなあと思ってたのですが
理解不能な技>>177を見て、使いこなせる自信がますます無くなりました
190:デフォルトの名無しさん
18/11/11 19:37:24.70 xpOIALoe.net
>>184
{abc}[0] #=>abc
これがわかんない
スクリプトブロックで囲むと、なんでabcはエラーにならないの?
普通にabcとやったらコマンドレットじゃないってエラー出るのに
191:デフォルトの名無しさん
18/11/11 19:39:58.14 JFNgNrbU.net
スクリプトブロックを文字列にキャストすると中身が実行されずに中のコードがそのまま文字列になる
つまり [string]{ fizz } が暗黙になされてるだけ
192:デフォルトの名無しさん
18/11/11 20:33:31.13 tAZC+CW3.net
その説明もピンと来ないが
&[fizz] や $hoge={Fizz};&$hoge
とすればちゃんとエラーになる。
未実行のスクリプトブロックは一種のヒア文字列扱いとなるということなんだろうか…
193:デフォルトの名無しさん
18/11/11 20:34:21.67 tAZC+CW3.net
&{fizz} だったすまん
194:デフォルトの名無しさん
18/11/11 20:43:37.28 tAZC+CW3.net
powershell -v 2のエラーメッセージ
"型 System.Management.Automation.ScriptBlock のオブジェクトにインデックスを付けることはできません。"
わかるw
195:デフォルトの名無しさん
18/11/11 21:03:13.85 xpOIALoe.net
{ abc def ghi} #=> abc def ghi
なんか{}でかこまれた部分がそのまま文字列になってる
なにこれぇ
196:デフォルトの名無しさん
18/11/11 21:26:24.30 v3JXSoAX.net
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が評価されコンソールに出力される
} #スクリプトブロック終了。
197:デフォルトの名無しさん
18/11/11 21:55:09.88 JFNgNrbU.net
>>189
単にスクリプトブロック型のオブジェクトが中身の生コードを持ってるだけやろ
{fizz}.ToString() しても同じ
ToString()でどういう値を返すかはオブジェクトの種類によって違う
&やコンマやInvokeしたときに初めてスクリプトブロック型オブジェクトが持ってるコードが評価される
198:デフォルトの名無しさん
18/11/11 22:21:33.88 JFNgNrbU.net
ちょっと舌足らずだった
スクリプトブロック型はToString()したときに
内部に文字列としてもってる生コードを返すってことが言いたかった
実際ソースを読んでるわけじゃないけど
199:デフォルトの名無しさん
18/11/11 23:20:57.99 xpOIALoe.net
スクリプトブロックは&で評価されるまで中身何もチェックされないみたいですね
一応動作は理解しましたがなんていい加減な言語なんだろ
こんなのどこにも書いてないし今後仕様変わる可能性はありそうですね
ありがとうございました
200:デフォルトの名無しさん
18/11/12 00:58:57.83 3c4TyDT9.net
こんなのは常識的に理解できる範囲や
パイプラインを考慮した関数をちゃんと作ろうと思ったら頭おかしなるで
201:デフォルトの名無しさん
18/11/12 06:17:57.42 gZOE16Sc.net
>>193
たいへんに、ありがとうごわす
202:デフォルトの名無しさん
18/11/12 20:33:57.05 kM9Cc8DJ.net
まさにシェル芸
203:デフォルトの名無しさん
18/11/12 20:51:57.60 ZJicw3nv.net
しかし、以前に比べて
投稿される内容が良くなってきたね
かつては『○○と比べてなんら』とか
そういう投稿ばかりだったもんね。
204:デフォルトの名無しさん
18/11/12 21:10:04.82 AMbuBroP.net
シェル芸ならこんなところ
seq 100|sed 's/.*5$/Buzz/;3~3s/[0-9]*/Fizz/'
205:デフォルトの名無しさん
18/11/12 23:49:46.46 ZJicw3nv.net
どちらにしても、見てもわからないね
206:デフォルトの名無しさん
18/11/13 05:49:15.96 xWZc78Mp.net
知恵を絞って短縮コードを目指すから、理解容易ではないのはまあ仕方ない
207:デフォルトの名無しさん
18/11/13 08:37:24.02 6YAdmBBQ.net
3.0からの文法でできるならだれか思いついてそうだったけど検索しても出てこないな
Anarchy GolfにはPowerShell無いし、StackExchangeで58byte、牟田口氏のコードで51byte
いろいろテクニックが載ってて面白い
what is your fave PoSh version of FizzBuzz? : PowerShell
URLリンク(www.reddit.com)
code golf - Tips for golfing in PowerShell - Programming Puzzles & Code Golf Stack Exchange
URLリンク(codegolf.stackexchange.com)
208:デフォルトの名無しさん
18/11/13 18:05:14.16 hYk6FFU0.net
IDがバーベキューだね
209:デフォルトの名無しさん
18/11/14 08:50:21.40 PFpyL5+w.net
PowerShell Core 6.1.0で日本語が正しく表示されない現象について
URLリンク(blog.shibata.tech)
210:デフォルトの名無しさん
18/11/14 09:25:00.49 JBsUV7Ak.net
>>206
teratailの質問がトリガーでした
URLリンク(teratail.com)
211:デフォルトの名無しさん
18/11/14 14:34:06.24 REddJKuq.net
PowerShell で全角文字を入力すると表示がおかしくなる問題について
URLリンク(blogs.technet.microsoft.com)で全角文字を入力すると表示がおかしくなる問/
212:デフォルトの名無しさん
18/11/14 20:33:58.55 JBsUV7Ak.net
ISEは問題ないのに、普通のシェルがダメって何年放置されてるのだろう?
213:デフォルトの名無しさん
18/11/14 21:42:06.99 wbqNTVov.net
VSCodeでPowershellの色寂しくなった
214:デフォルトの名無しさん
18/11/15 00:08:24.89 WLDbhFjW.net
>>209
2か月じゃないか?
215:デフォルトの名無しさん
18/11/15 00:38:25.77 RLOkjNth.net
何年も放置されてるぞ
216:デフォルトの名無しさん
18/11/15 00:41:50.91 WLDbhFjW.net
>>212
6.0はOKで6.1がだめと書かれてる
6.1が出たのは2か月前じゃないの
217:デフォルトの名無しさん
18/11/15 04:26:11.58 eQKfIPvp.net
>>208はデスクトップ版Powershellの話Win10が出て3年かな
218:デフォルトの名無しさん
18/11/15 10:35:40.03 3jZ436MI.net
オプションを展開させるうまい方法ってありますか?
たとえば、-WhatIfを付ける/付けないを場合分けしたいときなど。
HogeCmd fuga piyo $whatif
とやると、$whatifは普通の引数になってしまうのでNG。
eval方式(コマンド全体を文字列にしてInvoke-Expressionで呼び出す)もあるけれど、
できれば、オプションのところだけうまいこと展開できればいいな、と。
219:デフォルトの名無しさん
18/11/15 13:52:20.43 94uNwBee.net
スプラッティングでやるのが普通かな
220:デフォルトの名無しさん
18/11/15 15:12:55.02 8dkxddcr.net
>>216
それ何?
221:デフォルトの名無しさん
18/11/15 15:25:38.96 VchA8nRa.net
>>216
横からだが、スプラッティングというものを初めて知って非常に参考になった。ありがとう。
222:デフォルトの名無しさん
18/11/15 16:00:23.13 4BqFdJaY.net
>>216
勉強になりました
ありがとう
223:デフォルトの名無しさん
18/11/15 17:07:06.05 n3jFLh1o.net
>>216
サンクス
224:デフォルトの名無しさん
18/11/15 21:27:16.74 cJYjGYCA.net
スプラッタのスプラッタ
225:デフォルトの名無しさん
18/11/15 22:18:43.81 sPg3U71k.net
>>221
よせよ
バケラッタを連呼する某アニメキャラを連想しちゃっただろ
226:デフォルトの名無しさん
18/11/16 05:17:03.39 7vBGbpbo.net
スプラピスプラッタ
227:デフォルトの名無しさん
18/11/16 10:51:17.32 0JdshTdX.net
Announcing General Availability of the Windows Compatibility Module 1.0.0
URLリンク(blogs.msdn.microsoft.com)
228:デフォルトの名無しさん
18/11/16 17:17:39.49 h/lypBab.net
実行ユーザーがSYSTEMな場合の
COMオブジェクト利用がうまくいかないのは回避策ないでしょうか
229:デフォルトの名無しさん
18/11/16 22:04:34.76 bUstU+hr.net
v6.1.1 Release of PowerShell Core
URLリンク(github.com)
230:デフォルトの名無しさん
18/11/16 22:06:57.09 bUstU+hr.net
v6.0.5 Release of PowerShell Core
URLリンク(github.com)
231:デフォルトの名無しさん
18/11/16 22:55:21.07 6qpmN5uX.net
資格情報・認証とか?
「powershell 資格情報」で検索して
232:デフォルトの名無しさん
18/11/17 06:13:16.64 bZFmP2aX.net
>>225
excelとか使うとき普通に使えてるけど
何かうまくいことがあるの?
233:デフォルトの名無しさん
18/11/17 07:39:47.70 tSr/NeZx.net
>>229
普通の使い方してたらSYSTEMなんかで動かすことはないからサービスとかで動かしたいとかなんだろうと思う
いずれにせよ状況小出しにする奴の相手してもしょうがない
234:デフォルトの名無しさん
18/11/17 07:47:24.60 gKTWKNrR.net
タスクスケジューラで動かしたいのかも。いずれにせよ具体例を書いて欲しいものだ
235:デフォルトの名無しさん
18/11/18 00:15:47.54 L8Gt0pA8.net
>>221
スプラッターハウス以外思い浮かばないw
236:デフォルトの名無しさん
18/11/19 16:50:05.08 g2+fQFFI.net
WindowsCompatibilityモジュール試してみたけどFormat-table用の情報とか無いから一部コマンドレットの表示が微妙
いちいちモジュール読み込まんとダメだし
237:デフォルトの名無しさん
18/11/19 17:10:55.17 9fApbElg.net
>>233
Fomat-Table、モジュールなしだと使えなかったの?
238:デフォルトの名無しさん
18/11/19 19:27:11.18 xl/gDTc+.net
>>234
いや、そこまでの問題じゃない
Format-Tableで優先表示するプロパティ情報がないだけ
Format-Tableしても要らんプロパティがでてきたりする
Select-objectとかしてあげれば問題ないよ
239:デフォルトの名無しさん
18/11/19 19:59:58.22 Qq88xGOU.net
暗黙のWrite-Host|ft
が効かず、明示的に書かんどダメな感じ?
240:デフォルトの名無しさん
18/11/19 21:26:04.01 Gl33OQrV.net
投稿がまともになってきた
241:デフォルトの名無しさん
18/11/23 16:20:10.48 5fd0Mgpu.net
Effective PowerShell的な本ってないの?
普段、使う分には問題なく使えてると思う
でもより上手い書き方があるのでは、良いコーディング習慣を守れてるだろうか、と自問自答すると自信を持てない
242:人に見せるものでもなく、人のを見る機会もないからどうしても自己流になってしまう
243:デフォルトの名無しさん
18/11/23 22:10:45.37 ZSsoDLJq.net
本じゃないけど
PowerShell のコーディングスタイル
URLリンク(tech.guitarrapc.com)
244:デフォルトの名無しさん
18/11/23 22:36:58.28 b8tU0Ani.net
文法詳説はこの前出た貝殻本が扱ってたけど
読みにくい(演算子の説明が130ページくらいから始まる)
245:デフォルトの名無しさん
18/11/24 01:01:38.61 sK2Z8lS/.net
バイナリモジュールの情報少ないよなあ
github漁ってもあんまりないし
コマンドレット内でGet-Item呼び出す方法探すだけでだいぶ苦労した
結局ダサいやり方になったけど
246:デフォルトの名無しさん
18/11/24 02:06:29.51 mWKK19aP.net
powershell深いなあ。深すぎてちょっと目眩する時がある
247:デフォルトの名無しさん
18/11/24 03:37:58.44 BKTpjWqm.net
get-netadapterとか見たいに複数の結果を返すようなクラスが作りたいんだけど
どんな感じで書けばいいん?
思い浮かばねえorz
248:デフォルトの名無しさん
18/11/24 03:58:00.19 wk1txPAQ.net
>>243
Function内でWrite-outputでクラスを複数回出力するとか
クラスの配列を返せばいいよ
249:デフォルトの名無しさん
18/11/24 04:04:11.42 BKTpjWqm.net
>>244
ちと理解できてない
例えば、get-netadapterの内容を編集して結果をだすクラスを作るとして
インプットが複数なのでそれを都度かえしていくってことでいいのかな?
250:デフォルトの名無しさん
18/11/24 05:43:08.48 wk1txPAQ.net
>>245
まず作りたいのはクラスじゃなくてFunction(関数)かメソッドかコマンドレット(外部関数)だよね?
クラスは型であって入力と出力を持つものでは無いし
Get-netadapterも含めて一般的なコマンドレットの出力型は配列で
配列の各要素がクラスになってる
Get-netadapterの結果に編集を加える場合、
入力された値をforeach等で分解して
クラスにAdd-member等で要素(プロパティとか)を加えて毎回出力するとかする
もしくは配列の各要素がPSCustomObjectクラスの変数を作って
それを出力するとかする
サンプルに丁度よい関数とかあればいいけど一端探すのめんどいから割愛
Add-memberとかクラスのメンバーについてはググって調べて下さいな
251:デフォルトの名無しさん
18/11/24 09:11:34.28 kuH8s62I.net
この手の話題でクラスとインスタンスの区別をせずに語られるとすごくモヤモヤする
252:デフォルトの名無しさん
18/11/24 12:12:31.33 +C2yOPuj.net
PSVersion 5.1.17763.134
PSEdition Desktop
で Windows.Forms.Timer がちゃんと動いてくれぬ
Tickイベント内の変数の変更を保持してくれない?
253:デフォルトの名無しさん
18/11/24 12:54:26.03 BKTpjWqm.net
>>246
ごめん、違う
254:デフォルトの名無しさん
18/11/24 13:22:16.60 BKTpjWqm.net
途中で切れてしまった
コンストラクタに引数設定できるでしょ
その引数にget-netadapterの結果みたいなのを使う
で、その値で各プロパティの初期値みたいなのをセット
各引数付きのメソッドを実行すると、引数とプロパティを処理した結果を返すんだけども
get-netadapterみたいに複数がコンストラクタのインプットになるから、どうしたもんかと
やっぱ、無理なのかな
255:デフォルトの名無しさん
18/11/24 13:44:41.51 QuuVAkmI.net
UTF-8を標準出力に出力するexeの結果を処理したいのですが
特定の文字が入っていると文字コード変換に失敗します
例えば以下の文字列はこのように文字化けします
「ホスト#01」⇒「ホスチE01」
「ホスト02」⇒「ホスチE2」
正しくPowerShellで扱える文字列に直す方法をアドバイスいただけないでしょうか
## ソース
$src = [System.Text.Encoding]::UTF8
$d
256:st = [System.Text.Encoding]::Default $test = & 'C:\test\UTF8.exe' $bytes = $dst.GetBytes($test) $result = $dst.GetString([System.Text.Encoding]::Convert($src,$dst,$bytes)) UTF-8を標準出力に出力するサンプルexe(C#) Console.OutputEncoding = new UTF8Encoding(); Console.WriteLine("ホスト#01\r\nホスト02");
257:デフォルトの名無しさん
18/11/24 14:43:41.10 2Kjdv9to.net
>UTF-8を標準出力
でぐぐったら
>これで、UTF-8 を使うアプリとの連携もばっちりだ。
そうだ
258:デフォルトの名無しさん
18/11/24 14:43:42.28 +C2yOPuj.net
>>251
PowerShellの内部でのエンコードはたしかUTF16じゃないかな
259:デフォルトの名無しさん
18/11/24 16:43:37.74 QuuVAkmI.net
>>252
このスレに書き込んで説明するために標準出力って持ってきたのですが
ググってるときは標準出力って思いつかずサイトに巡りあえませんでした
おかげでなんとかなりそうです
ありがとう
>>253
UTF16だという情報もみて変えてみたりもしたのですが、
余計文字化けがひどくなったのでどう対応すべきか悩んでました
260:デフォルトの名無しさん
18/11/25 01:27:52.64 bdma9Nzw.net
文字コードなど、考えたこともない。
UTF-8 しか使わないし
どのOS・アプリでも内部的には、UTF-16 だろうけど、これを扱うことなどない
261:デフォルトの名無しさん
18/11/25 01:44:12.14 fZE2Z+wN.net
URLリンク(altohumano.com)
262:デフォルトの名無しさん
18/11/25 10:54:09.80 Vpi5v0vn.net
PowerShellの変数ってちゃんと型指定したほうがいいの?
263:デフォルトの名無しさん
18/11/25 19:55:30.63 aKGD81aI.net
パフォーマンス気にして型変換するなら、Powershell使うこと自体が不適
通常は勝手に型変換しないように型付ける
v3のビットシフト演算子が勝手にbyte型をint型にキャストするのマジ糞
264:デフォルトの名無しさん
18/11/25 19:55:52.89 aKGD81aI.net
>>258
パフォーマンス気にして型「指定」だわ
265:デフォルトの名無しさん
18/11/25 20:30:16.12 dc9uTwTH.net
powershellにintegral promotionは定義されてないのか
266:デフォルトの名無しさん
18/11/25 21:22:56.96 XYd2EWob.net
未だにバッチをメインで使っている
ぼちぼちPowerShellメインに変えようかと思っているんだが
WSHもどうか?とおもったり
もうWSHは終わりで、PowerShellが延びると思っていて良い?
267:デフォルトの名無しさん
18/11/25 23:19:09.06 NeSEBBpr.net
VBScriptはちょっとオワコン感出てきたけど、WSH自体はJavaScriptがデフォルトで使えるのでしぶとく残りそう
268:デフォルトの名無しさん
18/11/25 23:34:35.24 tkP11man.net
>>261
標準で備わってる機能面でwshはPowershellに比べて貧弱だよ
Powershellだとcsv読み込むとかjson処理するとかコマンドレットで用意されてるけどwshだとそれなりのコード書かないと出来ないし
ループ周りもパイプラインに比べると冗長になりがち
ただwshの方がシンプルで学習は楽、Powershellは複雑な部分が多い
学習コストはPythonより高い気がする
269:デフォルトの名無しさん
18/11/25 23:48:06.15 tkP11man.net
PowershellはMS系クラウドサービスの管理シェルとして伸びるかな
バッチもwshも消えなそうだけど今後の伸びは無さそう
270:デフォルトの名無しさん
18/11/26 02:18:11.89 beMkVqx1.net
手を広げ過ぎて仕様が複雑というより単に雑な印象がある
271:デフォルトの名無しさん
18/11/26 02:57:13.19 gMbJcsFf.net
学習コスト高いというか体系的にまとまった書籍等無いからよくわからずに動く状態になる(配列とか)
Pythonのようにすんなり上達するのではなくて、ある程度学ぶとかえってわからなくなるの繰り返し
それでも今更wshやるよりはいいはず
272:デフォルトの名無しさん
18/11/26 03:29:58.94 x+j35ljp.net
PowerShellだと学習コストは高いけど
よく使うコマンドレットがそろってる
WSHだとJavaScriptで書けるけど
自作ライブラリみたいの書く手間はある
微妙な勝負だけど今から始めるならもう
Poshを使ってしまった方が良いと思う
273:デフォルトの名無しさん
18/11/26 08:10:27.64 8ZmTpMnp.net
>>262
いやちょっとどころじゃねーだろ
いつの時代の話してるんだか
274:デフォルトの名無しさん
18/11/27 02:30:28.91 tmYINXAW.net
未だにバッチでこと足りてしまう管理業務というのが想像できない。
275:デフォルトの名無しさん
18/11/27 07:41:39.02 WLNYjP7B.net
VBSはバリバリ現役よ
うちの社内システム開発・運用は全てVBS
無料であり
バッチファイルより遥かに強力で
仕様が枯れていてVerUPに振り回されることがなく
Javaのように一企業の思惑でライセンス問題が発生することもない神言語
PowerShellはerUPが止まり仕様が枯れるまでは採用しない
276:デフォルトの名無しさん
18/11/27 07:53:06.65 wHi5iJt/.net
>>270
WIN10のストアアプリの削除もVBSで出来るの?
277:デフォルトの名無しさん
18/11/27 08:04:37.56 WLNYjP7B.net
>>271
うちはWin7
278:デフォルトの名無しさん
18/11/27 09:20:49.19 pR/1ZC3V.net
Win7はあと1年ちょいでサポート終了だしな
その後はWin10のPowershell5.1で標準化するでしょ
今のPowershellは2.0が残ってるのがガンになってる気がする
279:デフォルトの名無しさん
18/11/27 09:48:14.11 PCREN6ZT.net
>>270
Windows PowerShellはとっくにバージョンアップ止まってるんだが何が不満なんだ
280:デフォルトの名無しさん
18/11/27 13:25:38.77 n8g+btBw.net
>>270
5.1がWinにおける最終バージョンだろ
281:デフォルトの名無しさん
18/11/27 17:49:55.92 GQ1LL4CF.net
5.1だと正常に動かなくて
v2オプジョンだとちゃんと動くのとかあるし…
282:デフォルトの名無しさん
18/11/27 18:27:04.57 7LglyRgp.net
>>276
どんなのがあったっけ?
283:デフォルトの名無しさん
18/11/27 19:10:08.25 d01YhI4a.net
今だとUIフォームつくるならWPF?
284:デフォルトの名無しさん
18/11/27 23:03:49.22 5h6j1xJ1.net
JP1のSPTファイルもぶっちゃけVBSみたいなもんだよね
285:
18/11/27 23:18:31.25 X/MEoliS.net
>>273
win7 はたぶん終了にならないと思います、win10 がクソすぎるからね
286:デフォルトの名無しさん
18/11/28 09:58:30.52 dGZ6nyrF.net
>>280
神OS(笑)XPの時も似たような話聞いたわ
287:デフォルトの名無しさん
18/11/28 11:20:24.48 b089yY0z.net
Win7はデフォでv2.0しか使えないからこのスレ的にはダメダメ
288:デフォルトの名無しさん
18/11/28 12:31:06.61 j69eTZ+j.net
>>282
デフォルトじゃないとだめなの?
289:デフォルトの名無しさん
18/11/28 12:57:23.83 036JocE6.net
有償で延長サポートの話が出てる以上
それ以外はバッサリ終了に決まってるでしょ
290:デフォルトの名無しさん
18/11/28 19:59:03.72 b089yY0z.net
>>283
出先でWMF入れられないじゃん
291:デフォルトの名無しさん
18/11/28 21:40:54.00 e3ALQLMX.net
>>285
なるほどね。仕事内容や立場により、いろいろあるわけね。
292:デフォルトの名無しさん
18/11/28 21:55:44.64 JxqTGA2g.net
これが5.1だとちゃんと動かねぇ
Add-Type -As
293:semblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing function ShowInfoMain{ $counter = 0 $timerTestTick = { $label_timer.Text = "{0} 秒" -f $counter++ } #タイマーの初期化 $timerTest = New-Object Windows.Forms.Timer $timerTest.Add_Tick($timerTestTick) $timerTest.Interval = 1000 $timerTest.Enabled = $TRUE $timerTest.Start() #フォーム $Form = New-Object System.Windows.Forms.Form $Form.Size = "100,100" $Form.StartPosition = "CenterScreen" #タイマー $label_timer = New-Object System.Windows.Forms.Label $label_timer.Text = '0 秒' $Form.Controls.Add($label_timer) $result = $Form.Showdialog() $timerTest.Dispose() $Form.Dispose() } . ShowInfoMain
294:デフォルトの名無しさん
18/11/28 23:01:00.54 b5TbM/Zv.net
$counter = 0
$label_timer = New-Object System.Windows.Forms.Label
$timerTestTick = {
$label_timer.Text = "{0} 秒" -f $script:counter++
}
295:デフォルトの名無しさん
18/11/28 23:05:36.16 b5TbM/Zv.net
順序関係なく単純に $script:counter++にするだけでいいみたいやね
296:デフォルトの名無しさん
18/11/28 23:27:13.98 JxqTGA2g.net
んがー
スクリプトブロックでのスコープによるものって
認識でよろしいのだろうか…
2.0だと動くのはなんでなのじゃ
297:デフォルトの名無しさん
18/11/28 23:38:49.55 JxqTGA2g.net
>>289
ありがとうございました
初期値の宣言でもやんないとダメみたい
$script:counter = 10
298:デフォルトの名無しさん
18/12/02 21:23:25.18 u3CI+74z.net
PowerShell 3.0での破壊的変更まとめ
URLリンク(blog.shibata.tech)
デリゲート代わりに使われるスクリプトブロックのスコープ
PowerShell 3.0からデリゲート代わりに使われるスクリプトブロックが独自のスコープを持つようになっています。
たとえば以下の様な例だとPowerShell 2.0では1を、PowerShell 3.0からは0を返す様になります。
Add-Type @"
public class Invoker
{
public static void Invoke(System.Action<int> func)
{
func(1);
}
}
"@
$a = 0
[Invoker]::Invoke({$a = 1})
$a
299:デフォルトの名無しさん
18/12/03 14:13:32.11 xHLM582p.net
新しいpowershell では、Get-Clipboard で、クリップボードから文字列も取得できる!
300:デフォルトの名無しさん
18/12/03 20:49:19.87 9uCJpuZ+.net
んなもん.NET直接呼んだ方が互換性高い
301:デフォルトの名無しさん
18/12/03 21:32:04.89 uxAfgW4c.net
なんでそんなめんどくせーことせなあかんねん
302:デフォルトの名無しさん
18/12/03 22:42:10.02 YBAcFOR9.net
>>295
powershellは.netのフロントエンドだから
303:デフォルトの名無しさん
18/12/03 22:51:11.92 uxAfgW4c.net
そういう問題じゃないが・・・
支障がない場合はそんまま使うわあほくさ
304:デフォルトの名無しさん
18/12/04 02:28:30.75 Tn5NKjZ7.net
なんで今更5.0の話してんのさ
305:デフォルトの名無しさん
18/12/04 16:12:13.82 eKuwOju4.net
5ch の文章を、テキストエディタへコピペすると、
各行の先頭・末尾に、空白が付くので、これを除去したい
そこで、Ruby でプログラムを作って、
バッチファイルで、そのプログラムをダブルクリックで起動できるようにした
Windows で、クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる
新しいpowershell では、クリップボードから文字列も取得できる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip )
IO.popen( 'clip', 'w:cp932' ) do | clip |
clip.print( ary.join "\n" )
end
306:デフォルトの名無しさん
18/12/04 17:07:32.91 hkRngAzE.net
Get-Clipboardの機能は2015年からあるがどう新しいのか
307:デフォルトの名無しさん
18/12/04 17:45:54.20 xb7Yz2vd.net
Ruby挟む意味ないじゃん?バッチも画面が目ざわりだ�
308:オvbsがいいよ CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0
309:299
18/12/04 19:47:12.62 eKuwOju4.net
VBS でも、ダブルクリックで実行できる?
310:299
18/12/04 19:58:07.57 eKuwOju4.net
ありがとう。
VBS でも、ダブルクリックで実行できた
ただ、黒い画面が表示された方が、わかりやすくない?
何秒ぐらい待つのか、迷う
311:デフォルトの名無しさん
18/12/04 21:38:59.01 gx9huxXd.net
Windows文化は「黒い画面」が出るのを良しとしないのだよ
312:デフォルトの名無しさん
18/12/04 22:20:16.69 SeIDr86X.net
>>304
そんなの一部の神経質な奴らだけ
313:デフォルトの名無しさん
18/12/04 23:31:35.16 RbfFY42H.net
>>305
Windows 文化と言うより、業務でオツちゃん・オバちゃんに使わせるシステムの場合、
あいだに黒い画面が一瞬出ると「なにこれ?」って無用な問い合わせが入ったり、
場合によっては無理やり閉じられることもある。
fool proof の観点からは黒い画面が無いに越したことはない。
314:デフォルトの名無しさん
18/12/05 20:37:03.12 x9ea9mMQ.net
" が含まれている文字列を環境変数にいれてnet useコマンドを使うと" がエスケープされず想定通りに処理されないのですがどうエスケープすればいいんでしょうか
シングルコーテート、バックコーテート、ダブルコーテートで"をくくってもだめでした
315:デフォルトの名無しさん
18/12/05 20:49:13.75 jRzepDw/.net
何をしたくて何をしているのかさっぱりわからん
316:デフォルトの名無しさん
18/12/05 20:58:21.39 x9ea9mMQ.net
たとえばですが
$pass = test123"45
net use c:¥temp ¥¥192.168.1.10 $pass /user:testuser
とした時にパスワードに含まれている"が文字列として認識されずコマンドが実行されないのです
これをエスケープしようと
$pass = test123"""45
$pass = test123'"45
などとしてもうまくいかない感じです
317:デフォルトの名無しさん
18/12/05 20:59:28.32 0urcwekh.net
net useはpowershellのコマンドプロンプト用、powershellではNew-Psdriveコマンドレット、powershellのエスケープ文字は基本バックスラッシュ`
318:デフォルトの名無しさん
18/12/05 21:00:28.08 0urcwekh.net
WSHとごっちゃにしないでね
319:デフォルトの名無しさん
18/12/05 21:01:52.08 0urcwekh.net
1行目間違えた
net useはコマンドプロンプト用
320:デフォルトの名無しさん
18/12/05 21:03:52.33 x9ea9mMQ.net
net use ではなく new-psdriveだとバクスラでエスケープ可能なんですか?
net useだとエスケープできなかったので、ちょっとやってみまふ
321:デフォルトの名無しさん
18/12/05 21:08:28.49 x9ea9mMQ.net
ちなみにパワーシェルからcmd /cでコマンド呼び出すときのエスケープキーはバクスラと^のどちらですか?
322:デフォルトの名無しさん
18/12/05 21:10:17.22 0urcwekh.net
本件は
$pass='123"45'
とすればいいだけ
323:デフォルトの名無しさん
18/12/05 21:16:36.03 x9ea9mMQ.net
シングルコーテートでくくってもエスケープできるんですね
ありがとうございます
324:デフォルトの名無しさん
18/12/05 21:23:21.81 0urcwekh.net
エスケープじゃなくて、Powershellでは文字列は必ず'か"どっちかで囲う。生身はだめ。'で囲うのは静的リテラルの場合
325:デフォルトの名無しさん
18/12/05 21:25:50.83 jRzepDw/.net
結局環境変数は関係ないのか?
> " が含まれている文字列を環境変数にいれて
326:デフォルトの名無しさん
18/12/05 21:30:22.57 0urcwekh.net
本当の初学者で変数もコマンドプロンプトと同じ概念なんだろ
327:デフォルトの名無しさん
18/12/05 21:57:08.28 x9ea9mMQ.net
なるほどそういうルールあるんですね
プログラムやったことないんでしらんかったす
リテラルってのも意味わからんかったくらいや
328:デフォルトの名無しさん
18/12/05 22:13:06.29 ix5zH8Lr.net
start-processで終了を待たずにps1実行していくのは疑似並列処理として考えて良いのでしょうか
329:デフォルトの名無しさん
18/12/06 07:24:42.90 Ia5EZXvv.net
「`」はバッククォートだ馬鹿者
バックスラッシュ(\)とは違う
330:デフォルトの名無しさん
18/12/06 08:11:29.70 XlsCLRxJ.net
PowerShell Coreの宣伝始まった
331:https://twitter.com/Steve_MSFT/status/1070096140010287104 (deleted an unsolicited ad)
332:デフォルトの名無しさん
18/12/06 12:49:27.99 r+yxrRWT.net
標準出力に変なもん混ぜるな
333:デフォルトの名無しさん
18/12/06 14:36:39.70 8XTishpu.net
>>309
間違いないよう(見間違いも)にだったらヒアストリングつかったらどうでしょう
行は増えますが、エスケープ考える必要もかいから。
@"
test123"45
"@
334:デフォルトの名無しさん
18/12/07 00:30:59.21 d/eT01GS.net
whoamlで取得した実行結果のユーザ名を一行で環境変数に入れるにはどうすれば良いでしょうか
whoami 実行
結果 testpc¥user1
と結果が返ってくる場合、
$test = whoami.split("¥")[1]
と言ったかたちで
$testにuser1を格納させたいのですがうまく行きません
335:デフォルトの名無しさん
18/12/07 01:04:59.92 frCtIBO+.net
括弧で囲む
(whoami)
336:デフォルトの名無しさん
18/12/07 03:14:11.72 0M/LMioQ.net
>>326
昨日と同じ人だと思うけれどpowershellでは変数はコマンドプロンプトとは違い環境変数ではありません。
URLリンク(www.atmarkit.co.jp)
337:デフォルトの名無しさん
18/12/07 07:51:42.00 QVqNOX9I.net
読んでみたけど違いがよくわからん
型を持つってとこ?
338:デフォルトの名無しさん
18/12/07 08:45:51.25 hrhTiXxm.net
型じゃなく範囲・スコープだよ
環境変数はOSが管理していて、ひとつ値をセットしたら同じ環境内の他プロセス(アプリ)がその値をOSに教えてもらえる
普通の変数はプロセス内で管理されていて、他プロセスは見ることが出来ない
339:デフォルトの名無しさん
18/12/07 12:18:05.50 cSzYN2du.net
Linux では、~/.bashrc に環境変数を書けば、
自分(そのユーザーだけ)が起動するプロセスから、アクセスできる
etc/ 以下なら、PC 全体の設定になる
~/.bashrc は、Windows ではユーザー環境変数。
一方、システム環境変数は、PC 全体の設定で、すべてのユーザーで共有される
例えば、Tで始まる環境変数なら、
ls env: | Where-Object {$_.name -like "T*"}
340:デフォルトの名無しさん
18/12/07 12:42:27.81 TQVSWTyy.net
>>326
それを実行している自分自身のユーザ名が欲しいだけなら、わざわざそんなことしなくても
$env:USERNAME
で引っ張ってこれる。
出し惜しみ、小出しにしないで前後関係も話さないと的確なアドバイスが出来ないよ。
341:デフォルトの名無しさん
18/12/07 16:32:33.86 fTv51LPz.net
>>331
.bashrcはPowershellでは$Profileに当たると思うわ
342:デフォルトの名無しさん
18/12/07 17:14:53.01 2MiN5Gqm.net
つーか、Credential使えよ
今時ハードコートとかありえん
343:デフォルトの名無しさん
18/12/07 17:53:23.13 TQVSWTyy.net
>>334
だね。
どうやら ID:x9ea9mMQ ID:d/eT01GS はネットワークドライブのマウントがやりたいようだけど、
dos batch で使うべき net use や whois を PowerShell で使おうとすることに
無理がある。出来なくもないけどエレガントじゃない。
PowerShell でやるなら New-PSDrive だな。
URLリンク(docs.microsoft.com)
-Credential で任意の(自分以外の)クレデンシャルも指定できるから、
ID:x9ea9mMQ の要件も(たぶん)満たせるだろう。
344:デフォルトの名無しさん
18/12/07 18:35:56.11 fTv51LPz.net
コマンドレット使える所を外部コマンド使うなよとは思うね
出力から値をテキスト抽出で取り出すとかもエ�
345:激Kントではないな あとlsとかcatとかdirとかのコマンドエイリアス使うのも微妙に感じる
346:デフォルトの名無しさん
18/12/07 19:53:53.63 iBsL10N5.net
Get-ChileItemに-Depthなんてオプションあったんだな。
うちの会社は↓みたいな整然としたフォルダ構成だから
こういうオプションあるとすごく助かるわ
プロジェクト管理
└2018年
└1Q
└プロジェクトA
└プロジェクトB
└2Q
└プロジェクトC
└3Q
└プロジェクトD
└4Q
└プロジェクトE
└プロジェクトF
└2019年
└1Q
└プロジェクトG
347:デフォルトの名無しさん
18/12/07 20:47:47.55 d/eT01GS.net
treeコマンドやん
348:デフォルトの名無しさん
18/12/07 20:51:06.57 0M/LMioQ.net
tree形式で図示しただけ。
gciの-Depth は再帰検索する深さの指定
349:デフォルトの名無しさん
18/12/07 20:55:01.67 0M/LMioQ.net
ID:iBsL10N5 自身が言うべき事だが
阿呆指摘についカッとなった
350:デフォルトの名無しさん
18/12/07 21:00:51.64 hrhTiXxm.net
清濁併せ呑んでこそのPowershell
なんたって名前からしてパワーだからな
力業もどんとこい
351:デフォルトの名無しさん
18/12/08 11:14:58.74 j0zdr08g.net
.NET Core 3.0 Preview 1でWPF、Windows Forms, WinUIが組み込まれてオープンソース化したんか
ほえー
352:デフォルトの名無しさん
18/12/08 15:04:34.50 8f5a0RKW.net
>>342
Preview出てたんだ
早速使ってみたい
353:デフォルトの名無しさん
18/12/08 21:38:13.36 3Pj/jJ/S.net
Announcing Open Source of WPF, Windows Forms, and WinUI at Microsoft Connect(); 2018
URLリンク(blogs.windows.com)
354:デフォルトの名無しさん
18/12/10 20:42:25.20 T1JETwww.net
PowerShellでLINQって使えますかね?
355:デフォルトの名無しさん
18/12/10 21:47:33.54 PtRqcV9k.net
Linqっぽいことはできる
(1..10).ForEach({ $_ + 100 }).Where({ $_ -gt 105 })
Linqメソッドも呼べるけどC#のようにインスタンスメソッドな感じでは使えない
[Linq.Enumerable]::Where(1..10 -as [int[]], { param($x) $x -gt 5 } -as [Func[int,bool]])
356:デフォルトの名無しさん
18/12/10 22:38:26.51 vOOk2a2h.net
必要な箇所でC#コード書けばいいじゃん
外人のコード読むと皆そうやってるよ
357:デフォルトの名無しさん
18/12/11 18:45:17.51 zooyFZ6f.net
@echo offと同等のコマンドってパワーシェルにありますか?
358:デフォルトの名無しさん
18/12/11 19:50:47.03 5HU4XML/.net
>>348
エコー防止したいなら
$null = 式
式 | Out-Null
式 > $null
[void]式
どれでもどうぞ
359:デフォルトの名無しさん
18/12/11 20:18:20.80 pSYvkLmz.net
powershellでメール受信やるならMailkitがいいですかね?
360:デフォルトの名無しさん
18/12/14 21:21:08.51 xmsOh7Vk.net
UWPスレが死んでるのでこっちで聞き直すね
起動してるUWPアプリの列挙ってpowershellでどうやればいいですかね?
全く出てこないんですが
361:デフォルトの名無しさん
18/12/14 23:01:55.52 unWqZBXJ.net
Get-WmiObject Win32_Process | where Path -like "*\WindowsApps\*" | fl Process Id,Name,Path
とか
362:デフォルトの名無しさん
18/12/16 12:08:41.16 PkDIN57F.net
>>345
具体的にどんなことをやりたいか書いていただくと
PowerShellでLINQ利用した場合の例を挙げられると思うけど
363:デフォルトの名無しさん
18/12/16 21:18:15.54 XltMT+7i.net
職場のPC(セキュリティ上の理由でネットに繋がらない)がWin7→Win10になったんだが
PowerShellのヘルプがオンラインヘルプだけになって見れないのでつ
364:らい
365:デフォルトの名無しさん
18/12/16 21:48:37.43 GDEIwjsa.net
Get-HelpとかISEのコマンドアドオンじゃダメなん
366:354
18/12/20 22:28:30.63 MSiR3oAq.net
>>355
遅くなった & 説明が間違えてたごめん
Get-Helpコマンド自体は使えるんだけど-Fullオプション付けても付けない時と同じ内容しか出てこない
つまり使用例が見れないのでPowerShellを最近使い始めた自分にはつらい
ISEもヘルプを見ようとすると「ネットに繋がりません」みたいなエラーになった
もうリファレンス本買うことにするよ・・・orz
367:デフォルトの名無しさん
18/12/20 22:59:49.46 PfMwju1x.net
別PCでSave-Helpでファイルダウンロードして手動で配置したらあかんの?
368:356
18/12/21 01:31:43.78 GySz2aRs.net
>>357
セキュリティガチガチの保険会社の現場なんで無理っす><
ってか↓これポチりましたw
URLリンク(www.amazon.co.jp)
369:デフォルトの名無しさん
18/12/21 08:22:37.58 Lg32FCuG.net
5.1対応の良い感じの書籍あるんかな
370:デフォルトの名無しさん
18/12/22 07:51:50.03 i7ExTGRa.net
変数展開するときに、
$test
と
${test}
ではなにが違うんですか?
371:デフォルトの名無しさん
18/12/22 12:12:36.07 UGqq2IDw.net
>>360
基本一緒でしょう
GetType()
してみるとわかりますと同じですね。
ただし、${}の指定では配列のインデックス指定できない
${a[0]} とかは許されないですね。
なんでこういうのがあるかは分りません。
372:デフォルトの名無しさん
18/12/22 14:03:56.67 YB2ocxbA.net
$test = "TEST"
"test$testtest"
"test${test}test"
こういう時にでも使うんじゃねーの
求める形に適当なのを使えばいいんじゃねーかな
373:デフォルトの名無しさん
18/12/22 15:32:06.19 TlQhzlLR.net
中括弧つければ通常使えない文字も使える
${\(^o^)/} = "オワタ"
${ Hello ?? World! `nby powershell } = "hi"
どんな文字列でも変数名として有効であることが保証されるからコード生成とかで使われるらしい
普通は文字列への埋め込み時くらいしか使わんね
374:デフォルトの名無しさん
18/12/22 16:16:19.79 VDYmdehC.net
>>360
私はコードの可読性を高めるためになるべく ${hoge} といった形で記述するようにしてます。
あと、文字列をつなぐような場合でも ${hoge} が使われます。
$hoge = "hoge"
echo "${hoge}fuga"
この場合は「hogefuga」が出力されますが、
$hoge = "hoge"
echo "$hogefuga"
これでは$hogefuga という変数を参照することになるので思ったように動作しません。
375:デフォルトの名無しさん
18/12/22 16:37:26.19 UGqq2IDw.net
なるほどね
$test="TEST"
"test"+$test+"test"
より次の方がスマートかもね
"test${test}test"
376:デフォルトの名無しさん
18/12/22 16:59:32.04 YB2ocxbA.net
>>363
そういえば日本語の変数もできるんでしたね
377:デフォルトの名無しさん
18/12/22 17:09:04.46 HuIkWn7P.net
【たけしの超常現象特番、本日18時56分】 大槻教授がUFOやマⅰトレーヤを見たらどんな反応するかな
スレリンク(liveplus板)
378:デフォルトの名無しさん
18/12/22 17:15:32.75 uHYOaa0r.net
ダブルコーテーション内で変数を値展開させたい場合空白文字で区切られていないとだめ。つまり
echo "$hoge fuga"
であれば
hoge fuga
にはなる。
hogefugaを得たい場合、俺なら
echo ($hoge+"fuga")
と書く
379:デフォルトの名無しさん
18/12/22 18:16:02.24 UGqq2IDw.net
380:echoを使う理由はなんかあるのかな? 私はecho自体つかわないので
381:デフォルトの名無しさん
18/12/22 18:17:09.93 UGqq2IDw.net
>>367
ありがと
それ見たい
382:デフォルトの名無しさん
18/12/22 18:20:02.63 b6CiPLFa.net
ログを標準出力に出力するときに普通に使う
aho=echo `command`
こうやってコマンドの標準出力の結果を環境変数にいれるときにも
普通に使う
echoなかったらなに使えばいいワケ?
383:デフォルトの名無しさん
18/12/22 18:30:20.06 UGqq2IDw.net
いや、使う場面がないので聞いただけ
通常ログに返すときにはそのままechoなしで書いているもので
上記のやり取りの例だとechoいらないな~と思ったまで
384:デフォルトの名無しさん
18/12/22 19:12:48.17 BLULObxH.net
echo使わなくてもコマンドの標準出力の結果を変数に入れられるのでは?
環境変数???
385:デフォルトの名無しさん
18/12/22 19:19:04.64 TlQhzlLR.net
オプション付けないなら意味はない
使う機会は-NoEnumerateするときくらいかな
-NoEnumerateすると配列を塊のままパイプに流せる
"1-one","2-two" | foreach { Write-Output ($_ -split "-") } | Write-Host
1
one
2
two
"1-one","2-two" | foreach { Write-Output ($_ -split "-") -NoEnumerate } | Write-Host
1 one
2 two
386:デフォルトの名無しさん
18/12/22 19:19:11.25 b6CiPLFa.net
失礼した
パワー系池沼シェルについてはオレは知らん
スレタイみずに普通のシェルの話してるかと思ってたわ
387:デフォルトの名無しさん
18/12/22 19:20:29.55 UGqq2IDw.net
そのまま書けば標準出力先への出力ですよね
私も不勉強なのですが、場合によりほかのシェル言語経験の方で
そちらではそれが普通なので、その習慣で書いているとかないですかね?
PSの環境変数にも特段echoいらないと思うし。
388:デフォルトの名無しさん
18/12/22 19:39:35.63 90OqLo7S.net
$env:aho = command で普通に入るね
echoとWrite-Outputの役割はpsに慣れてない人への広い意味でのエイリアスだと思う
シェル言語はツールとしての側面があるから、不使用の方が高尚だと矯正するようなものでもないと思う
389:デフォルトの名無しさん
18/12/22 20:18:16.73 SAN+T+wn.net
ループでWrite-Outputすると遅い気がする
390:デフォルトの名無しさん
18/12/22 20:24:16.85 SAN+T+wn.net
(measure-command{
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
$first + [timespan]::FromHours($t)
}
}).TotalMilliseconds
の
$first + [timespan]::FromHours($t)
を
Write-Output ($first + [timespan]::FromHours($t))
にすると3倍くらいかかる
391:デフォルトの名無しさん
18/12/22 20:27:37.85 uHYOaa0r.net
変数の自動展開は他の言語の経験者が一番最初に気づくPowerShellの特徴だよね
暗黙の|Out-Defaultが常に付いてる処理になっている
詳しくは下記参照
URLリンク(technet.microsoft.com)
URLリンク(blog.shibata.tech)
392:デフォルトの名無しさん
18/12/22 20:30:19.10 VDYmdehC.net
>>372
> 上記のやり取りの例だとechoいらないな~と思ったまで
ぜんぜんそれでも文法&動作的にはオッケーです。
可読性、保守性を上げるためのマイルールです。
自分だけがメンテするスクリプトなら問題ありませんが、複数の人間が
読む可能性がある場合は「何をやろうとしているのか」を
明確にするためにそうしています。
PowerShell に明るくない人が読む可能性もありますから。
なお echo は Write-Output のエイリアスですので念のため。
393:デフォルトの名無しさん
18/12/22 20:45:17.71 uHYOaa0r.net
> なお echo は Write-Output のエイリアスですので念のため。
一言余計、そんなことは誰でも知ってる。勘違い馬鹿なID:b6CiPLFa以外は
394:デフォルトの名無しさん
18/12/22 20:52:39.16 b6CiPLFa.net
ほらな低学歴ドカタまるだし()
395:デフォルトの名無しさん
18/12/22 20:57:41.33 2OCHmGHo.net
流石にこれは酷い
396:デフォルトの名無しさん
18/12/22 21:11:08.80 hL+/9mZc.net
この流れで思い
397:出した PSの出力をログに同時に吐くようにできませんか?
398:デフォルトの名無しさん
18/12/22 21:18:03.91 TlQhzlLR.net
手っ取り早いのはStart-Transcript
399:デフォルトの名無しさん
18/12/22 21:18:56.31 uHYOaa0r.net
Start-Transcript ファイル名 -append
400:デフォルトの名無しさん
18/12/22 21:24:11.29 UGqq2IDw.net
>>358
あ、用意されていて簡単にできたはずだ。なんだっけな・・・
401:デフォルトの名無しさん
18/12/22 21:47:51.46 HBvYruUV.net
$_ っていうのはどういう意味?
402:デフォルトの名無しさん
18/12/22 21:52:10.12 SAN+T+wn.net
パイプライン入力の自動変数
403:デフォルトの名無しさん
18/12/22 22:55:05.08 84E3pYZa.net
alias と入力してみ。
漏れは、Linux・コマンドプロンプトのalias を使う
%, ?
cat, cd, chdir, cp, curl, dir, echo, foreach, ls,
man, mv, ps, pwd, ren, rm, rmdir, tee, type, wget, where
たいていは、Ruby からPowerShell(PS) を呼ぶか、
ダブルクリックで起動したい時は、VBScript から呼ぶ
Ruby, PS, VBS が入り乱れる
404:デフォルトの名無しさん
18/12/23 00:15:24.77 qffc/3mK.net
ps:オレのPC
PS >.\datecount.ps1 > xxx.txt
----
datecount.ps1(>>379)
date
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
$first + [timespan]::FromHours($t)
}
date
----
xxx.txt
2018年12月23日 0:02:31 ← 開始
2000年1月1日 0:00:00
2000年1月1日 1:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 0:00:00
2018年12月23日 0:03:37 ← 終了
405:デフォルトの名無しさん
18/12/23 00:18:08.99 qffc/3mK.net
bash:オレのPC(>>392と同じ計算機)のvmwareのcentos
$ ./datecount.sh > xxx.txt
----
datecount.sh
#!/bin/bash
date
FIRST=`date +%s -d "2000/1/1 0:00:00"`
LAST=`date +%s -d "2018/1/1 0:00:00"`
A=$((FIRST-=3600))
while [ ${A} -lt ${LAST} ]
do
date -d @$((A+=3600)) "+%Y年%-m月%-d日 %k:%M:%S"
done
date
----
xxx.txt
2018年 12月 22日 土曜日 23:59:44 JST ← 開始
2000年1月1日 0:00:00
2000年1月1日 1:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 0:00:00
2018年 12月 23日 日曜日 00:01:53 JST ← 終了
406:デフォルトの名無しさん
18/12/23 00:47:12.06 qffc/3mK.net
改めてパワー系池沼シェルの遅さが実感できたわ
linuxのほうは毎回dateコマンド経由して結果を取得するものすごい悪い条件なのに
パワー系池沼シェルは組込みオブジェクト使ってもこの速度だからな
組込みオブジェクトを使わなかっらどうなるか
つまりそういうことになる
お話にならない。。。
407:デフォルトの名無しさん
18/12/23 00:59:55.54 M6Mt1G8k.net
datew
408:デフォルトの名無しさん
18/12/23 01:00:31.45 9AXglOVX.net
>>390
だけじゃなくてswitch(式)の式の値にも使われてる
意外と便利
409:デフォルトの名無しさん
18/12/23 01:02:46.02 zuMyhwwp.net
あれ$PSItemと同じなんだっけ
410:デフォルトの名無しさん
18/12/23 01:30:03.97 9E3TCu/N.net
PSでテキスト処理する上でそんままやるやつ居るんやな
411:デフォルトの名無しさん
18/12/23 01:52:13.30 9E3TCu/N.net
結果をlogに出力するだけならすぐ終わるべ
2018年12月23日 1:44:41
2000年01月01日 00:00:00
2000年01月01日 01:00:00
2000年01月01日 02:00:00
2017年12月31日 22:00:00
2017年12月31日 23:00:00
2018年01月01日 00:00:00
2018年12月23日 1:44:43
412:デフォルトの名無しさん
18/12/23 02:02:36.44 lfndw29D.net
ピラフ大王なんて、PowerShell で、5ch のスレをスクレイピングするよw
漏れは、Ruby でやるけど
413:デフォルトの名無しさん
18/12/23 02:11:53.35 M6Mt1G8k.net
単に出力がネックになってるだけだからな
dateなんて関係ねえw
414:デフォルトの名無しさん
18/12/23 02:26:18.31 zuMyhwwp.net
>>379は変数への代入とかを想定して書いたんだけどな
値を返すのを関数型言語っぽく式で書けるのはいいけど、
手続き的なコードと混ざる場合もあるからコードの意図が分かりにくくなりがち
415:デフォルトの名無しさん
18/12/23 02:35:01.23 M6Mt1G8k.net
計算結果をリストに入れるだけなら0.3秒で終わる
416: つまりほぼ画面出力かかってる時間なのに それを組み込みオブジェクトがどうのこうの訳わからんこと言ってる馬鹿さよ
417:デフォルトの名無しさん
18/12/23 02:39:37.23 9E3TCu/N.net
psちゃんはストリーム出力がやたら遅い上に日本語ロケールだとさらに遅い
418:デフォルトの名無しさん
18/12/23 08:50:16.09 z3o8Rgch.net
初学者と低能アンチが自らおバカを披露するスレはここですか。
にやにや眺めてる
419:デフォルトの名無しさん
18/12/23 10:21:20.90 qffc/3mK.net
画面出力()
やはりパワー系池沼シェルは
池沼が使ってるだけあるわ
オレの試験をみて画面に出力してると思ってるなら
相当知能に問題がある
というよりなシェルの仕組み自体を理解してない
コマンドでは両方とも標準出力をファイルにリダイレクトしている
しかもdate使ってるのはlinuxだからな
池沼はパワー系池沼シェルがdate使ってると思ってるらしいわ
普通に外部コマンド呼び出しのほうがオーバーヘッドがあるからな
まずシェルの内部コマンドと外部コマンドの違いすら分かってない
つまり、linuxはもともと相当不利
パワー系池沼シェルがこの部分で速いのはアタリマエ
基本的なことがなにもわかってない
所詮、低学歴知恵遅れのオツムの程度は
この程度
低学歴はいちいちいつも自分は低学歴でバカですと
自白するからな
420:デフォルトの名無しさん
18/12/23 10:22:49.86 zuMyhwwp.net
いろいろぐじゃぐじゃ言ってるけど、無駄改行も相まって目障りだね
同じ内容で言葉を増やすのはバカでもできて、言葉を減らすには学が必要だ、って誰が言ったんだっけかな
421:デフォルトの名無しさん
18/12/23 10:24:00.28 qffc/3mK.net
低学歴知恵遅れには
一から十までいわないと分からないからな
クソみたいに知能が低い
422:デフォルトの名無しさん
18/12/23 10:32:47.68 qffc/3mK.net
ホントなこの板はクソみたいに知能の低いのしかいないのが
よくわかるわ
423:デフォルトの名無しさん
18/12/23 10:35:50.27 M6Mt1G8k.net
ああよく見たらたしかにリダイレクトしてたわw
でどこがネックになってるの?
内部コマンド使えるpowershellが圧倒的に速かったって言いたかっただけ?
424:デフォルトの名無しさん
18/12/23 10:43:20.28 qffc/3mK.net
低学歴知恵遅れの池沼は
日付とかmsが事前に用意してくれるオブジェクトしか使わないから
問題ない
低学歴知恵遅れの池沼は
自分で作ったコマンドを標準入出力で組み合わせて使える知能すら備えてないから
問題ない
425:デフォルトの名無しさん
18/12/23 11:12:36.36 e1SIJ5NV.net
いちいち別プロセス起動するのがエレガント
だとでも言いたいのかね
426:デフォルトの名無しさん
18/12/23 11:40:26.14 M6Mt1G8k.net
このアスペの相手は無理だわw
低い次元のしょぼい知識でマウントとろうとするし
またそれ自体が目的になってるからみんな戸惑うんだと思うわ
427:デフォルトの名無しさん
18/12/23 11:57:29.53 qffc/3mK.net
あんな何度もdate呼ぶような、しかもしょうもない処理を何度も使うなら
普通だったらCで書いたコマンドを作るからな
bash:オレのPC(>>392と同じ計算機)のvmwareのcentos
$ ./datecount2.sh > xxx.txt
----
datecount.c
#include <stdio.h>
#include <time.h>
#define FIRST 946652400
#define LAST 1514732400
int main(void) {
struct tm* p_tm;
time_t t = FIRST;
for ( ; t <= LAST; t += 3600) {
p_tm = localtime(&t);
fprintf(stdout, "%d年%d月%d日 %02d:%02d:%02d\n", p_tm->tm_year + 1900, p_tm->tm_mon + 1, p_tm->tm_mday, p_tm->tm_hour, p_tm->tm_min, p_tm->tm_sec);
}
return 0;
}
428:デフォルトの名無しさん
18/12/23 11:58:06.55 qffc/3mK.net
#!/bin/bash
date
./datecount
date
----
xxx.txt
018年 12月 23日 日曜日 11:49:43 JST ← 開始
2000年1月1日 00:00:00
2000年1月1日 01:00:00
(-snip-)
2017年12月31日 23:00:00
2018年1月1日 00:00:00
2018年 12月 23日 日曜日 11:49:43 JST ← 終了
一瞬で終わる
なんでもシェルスクリプトだけでやる必要ななんかまったくない
こういった出力結果を加工するのは、
429:当然標準入出力になる
430:デフォルトの名無しさん
18/12/23 12:00:27.02 qffc/3mK.net
マウント()
低学歴知恵遅れが
いちいちオレにつかっかてきたくせに
マウントとかいってるわ
マジで低学歴知恵遅れは
ハジというもんがないらしいな
低学歴知恵遅れは
なんの取り柄もないゴミでクズのくせに
プライドだけは高いからな
ホントな低学歴知恵遅れは
どんだけゴミやねんと
431:デフォルトの名無しさん
18/12/23 12:04:59.27 M6Mt1G8k.net
支離滅裂だなこのアスペはw
ある意味見てておもろい生き物だわ
432:デフォルトの名無しさん
18/12/23 12:07:09.12 9E3TCu/N.net
あの...だからストリーム出力が遅いんですよPSちゃん
date
$log = New-Object System.Text.StringBuilder
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
foreach($t in 0..($last - $first).TotalHours)
{
[void]$log.AppendLine(($first + [timespan]::FromHours($t)).ToString("yyyy年MM月dd日 HH:mm:ss"))
}
$log.ToString()
date
これでリダイレクトなら2秒弱だけど
素実行でコンソール出力ありだと10秒ほどかかる
433:デフォルトの名無しさん
18/12/23 12:07:09.97 qffc/3mK.net
低学歴知恵遅れが
ムリして頭いいふりしようとしても
頭悪いのなんかすぐにバレるからな
残念なことに
本人は気付いてないかもしれないが
いちいち頭悪いですと自己紹介するからな
残念なことに
434:デフォルトの名無しさん
18/12/23 12:07:55.16 M6Mt1G8k.net
自己紹介乙!
435:デフォルトの名無しさん
18/12/23 12:08:19.86 qffc/3mK.net
低学歴知恵遅れって
低学歴なのがバレてないと思ってるからな
レスすればするほど
低学歴の自己紹介してるのが
分かってない
436:デフォルトの名無しさん
18/12/23 12:09:55.64 M6Mt1G8k.net
もう頭に血がのぼってる
おもろいやつだわ
437:デフォルトの名無しさん
18/12/23 12:12:26.40 qffc/3mK.net
自己評価だけは高い低学歴知恵遅れにありがちな典型的なサンプルといっていい
底辺であるほどその傾向が高い傾向にあることは
この板で多くのサンプルをみてきたからすぐにわかるわ
438:デフォルトの名無しさん
18/12/23 12:14:04.22 qffc/3mK.net
低学歴知恵遅れは自覚がない
そいつが低学歴知恵遅れなのは
低学歴がみればすぐに分かるからな
残念なことに
すぐにバレるのが分かってない
439:デフォルトの名無しさん
18/12/23 12:19:40.35 qffc/3mK.net
やっぱりな低学歴知恵遅れは板から排除しないといけないわ
まともな人間がよってこない
低学歴知恵遅れの頭悪いレスでうまってたら
まともなヤツはどんびきするからな
しかも頭悪いことを自信満々でいうからな
そして声だけはでかい
バルサン焚いて低学歴知恵遅れを
この板から駆除しないといけない
440:デフォルトの名無しさん
18/12/23 12:24:24.23 t7aRRzSS.net
糖質さんちゃんとお薬飲んでお休みなさいな、ネット耽溺は毒ですよ?
441:デフォルトの名無しさん
18/12/23 12:26:07.38 qffc/3mK.net
ほらな身に覚えがあるのが
わらわらこのスレによってきてるわ
誘虫灯になってるわ
図星だからな
442:デフォルトの名無しさん
18/12/23 12:30:51.58 9E3TCu/N.net
シェルでやる必要ないってなると
そだねーで話し終わるんですけど…
そういう主張だったの?
bash持ち出してきて着地点そこでいいの?
443:デフォルトの名無しさん
18/12/23 12:44:40.56 M6Mt1G8k.net
こいつ的にはいいんだろうw
もう少し観察してみよう
444:デフォルトの名無しさん
18/12/23 12:46:02.78 4wpzIbqj.net
まとめてNGした
445:デフォルトの名無しさん
18/12/23 13:02:32.10 qffc/3mK.net
そうオレ以外のレスはまとめてNGで正解
情報価値のある有益なレスはオレのレスしかない
他の低学歴知恵遅れのレスは
情報価値ゼロ
446:デフォルトの名無しさん
18/12/23 13:18:23.49 yKwr45+F.net
ちなみに、PowerShellらしくこんな感じではどうだろう
私の遅いマシンでもファイル出力いれても2秒ほどで終わる
$first = [datetime]"2000/1/1"
$last = [datetime]"2018/1/1"
$stream = [System.IO.StreamWriter]::new(".\xxx.txt")
$new=0..($last -$first).TotalHours | % {$stream.WriteLine($first.AddHours($_))}
$stream.Close()
447:デフォルトの名無しさん
18/12/23 13:23:15.06 yKwr45+F.net
あ~
$new= はいらんかった。
448:デフォルトの名無しさん
18/12/23 13:29:16.66 pDu+7nW/.net
コマンド実行と同じ行でechoってできますか?
例えば、
echo "cドライブ" dir c:¥
みたいな感じで
449:デフォルトの名無しさん
18/12/23 13:44:08.0
450:5 ID:p+GlREN7.net
451:デフォルトの名無しさん
18/12/23 14:21:43.11 p+GlREN7.net
>>434
セミコロンで区切ればいいです。
echo "cドライブ" ; dir c:\
452:デフォルトの名無しさん
18/12/23 14:25:20.11 qffc/3mK.net
シェルらしく書くならこうなる
param (
[string]
$o,
[datetime]
$first = [datetime]"2000/1/1",
[datetime]
$last = [datetime]"2018/1/1"
)
${datecount} = foreach($t in 0..($last - $first).TotalHours) { $first + [timespan]::FromHours($t) }
if (-not ${o}) {
${out} = ${datecount}
} else {
${out} = ${datecount} | Set-Content ${o}
}
${out}
453:デフォルトの名無しさん
18/12/23 14:26:52.23 yKwr45+F.net
>>385
>PSの出力をログに同時に吐くようにできませんか?
やっと思い出した。そのための機能がtee-objectだった
get-process |Tee-Object -FilePath dummy.txt
これでコンソール画面とdymmy.txt両方に出力される。
454:デフォルトの名無しさん
18/12/23 14:27:56.95 qffc/3mK.net
linuxなら指定したファイルにリダイレクトするのも
デバイス(/dev/stdout)にリダイレクトするのも
同じだからな
低学歴知恵遅れたちはなにをリダイレクトといってるのか
意味不明といっていい
池沼の語彙でのリダイレクトはまた違う意味なのか
わかってないでテキトーなこといってんのかよくわからんというより
> これでリダイレクトなら2秒弱だけど
> 素実行でコンソール出力ありだと10秒ほどかかる
きっとなんも分かってない
455:デフォルトの名無しさん
18/12/23 14:33:14.12 qffc/3mK.net
/dev/pts/0の端末
$ tty
/dev/pts/0
$ ls -la /dev/stdout
lrwxrwxrwx. 1 root root 15 12月 23 08:20 /dev/stdout -> /proc/self/fd/1
$ ls -la /proc/self/fd/1
lrwx------. 1 xxxxx xxxxx 64 12月 23 14:06 /proc/self/fd/1 -> /dev/pts/0
$ ls -la /dev/stderr
lrwxrwxrwx. 1 root root 15 12月 23 08:20 /dev/stderr -> /proc/self/fd/2
$ ls -la /proc/self/fd/2
lrwx------. 1 xxxxx xxxxx 64 12月 23 14:16 /proc/self/fd/2 -> /dev/pts/0
$ ls -la /dev/pts/0
crw--w----. 1 xxxxx tty 136, 0 12月 23 14:07 /dev/pts/0
/dev/pts/1の端末
$ tty
/dev/pts/1
(あとは同じで)/dev/stdoutも/dev/stderrも/dev/pts/1になる
456:デフォルトの名無しさん
18/12/23 14:35:01.72 9E3TCu/N.net
>>439
PSの出力ストリームはやたら複雑なんです
457:デフォルトの名無しさん
18/12/23 14:35:32.50 qffc/3mK.net
例えばこの↓コマンドを/dev/pts/0の端末で打ったらどうなるか
このスレにいるような低学歴知恵遅れに分からないのは分かるわ
$ echo aho > /dev/pts/1
いずれにせよ
池沼たちのレスみてたらパワー系池沼シェルがいかにウンコかよくわかるわ
その点は有益だったといえる
458:デフォルトの名無しさん
18/12/23 14:53:35.10 e1SIJ5NV.net
unix哲学の押し売りは結構です
459:デフォルトの名無しさん
18/12/23 14:56:40.70 yKwr45+F.net
そだね、Unixのシェル知らないから
何をやっているか自体が分らない
だから答えようもない。
460:デフォルトの名無しさん
18/12/23 15:05:50.41 9E3TCu/N.net
あのーここPSスレなんですけどもー?
頭大丈夫ですかー?
461:デフォルトの名無しさん
18/12/23 15:10:54.99 y1IlhbOh.net
スレタイを見ずにUNIXシェルと勘違いして見当違いのレスをした上に
恥をかかされたと逆恨みしてスレを荒らす
残念すぎる
462:デフォルトの名無しさん
18/12/23 15:12:47.09 4wpzIbqj.net
鎌ってやるなんて暇だな君たち
463:デフォルトの名無しさん
18/12/23 15:14:34.38 pDu+7nW/.net
>>436
ありがとうございますできました!
セミコロンはそういう演算子?なのですか?
464:デフォルトの名無しさん
18/12/23 15:21:36.51 qffc/3mK.net
荒らしてる?
失敬な
低学歴知恵遅れは
自分が低学歴知恵遅れでなんの役にも立ってないのを
すぐに棚にあげるからな
そもそもオレのレスしか有益な情報がない
分かるやつがスレを読めば
いかにパワー系池沼シェルがウンコか分かる構成のレスになってる
そしてこのスレにも低学歴知恵遅れしかいないことを
十分に証明できるレスの構成になってる
だれかオレ以外にこのスレで有益なレスした�
465:H
466:デフォルトの名無しさん
18/12/23 15:21:46.66 yKwr45+F.net
>>448
演算子ではなくて
行替えしないで1行で書きたいときの単純な区切り
467:デフォルトの名無しさん
18/12/23 15:24:22.01 p+GlREN7.net
>>448
そうです。他の言語でも文の区切りや行末にセミコロンを使うことが多いので、学習コストを下げるため同じ文字にしたのかもしれませんね。
468:デフォルトの名無しさん
18/12/23 15:25:34.62 yKwr45+F.net
>>449
そりゃいいんだけど、そのスクリプトが何をやっているかの説明を一緒に
付けてくれないとわからないんで、それを付けて頂戴。
普段UNIX系使っている人ばかりでないし、私は使うことは使うが
普段つかうのがSASなんで、UNIX系のシェルはディレクトリー指定や変更など
本当の基本だけ知っていれば、シェル自体を必要しなくても処理が完結するんで
何を書いているのかがわかんない。
469:デフォルトの名無しさん
18/12/23 15:46:34.98 qffc/3mK.net
まずどのスクリプトが分からんといってるのかが分からん
一行のコマンド(>>442)なら書いたが
>>440はシンボリックリンクがどうはられてるかのコマンドログだからな
470:デフォルトの名無しさん
18/12/23 15:47:44.56 yKwr45+F.net
最初のttyって何やってるの?
471:デフォルトの名無しさん
18/12/23 15:50:21.95 qffc/3mK.net
使ってる端末が
どのデバイスファイルと結びついてるかを返す
これ以上いちいち説明する気はない
やる気があるなら、自分でman読んで覚えたほうがいい
472:デフォルトの名無しさん
18/12/23 15:58:49.60 yKwr45+F.net
>>455
だから~
UnixでSAS使っていればシェル使わなくても、自分たちの処理はすんじゃうので
Unixシェル覚える気はさらさらないのよ。
473:デフォルトの名無しさん
18/12/23 15:59:58.24 z3o8Rgch.net
荒らしに構うのも荒らしということでNGIDを増やした
474:デフォルトの名無しさん
18/12/23 16:22:49.84 qffc/3mK.net
ちなみにオレもSASデータを作成する処理の対応をしたことがある
dbmsの抽出結果を直接投入したりcsvから投入したりしてる
sasは欠損値や日付の取り扱いにクセがあるから
データ加工をちゃんとしないとそのままでは大体投入できない
当然そういったデータ加工もsasへの投入も日次のJOBとして毎日シェルが呼び出されるようになってる
データセットは毎日更新され続ける
データセットを作成したあとは、ほとんどSASだけで完結できるのは、そのとおりだ
それとパワー系池沼シェルがウンコなのとはなんの関係もない
パワー系池沼シェルからexcel操作するのと変わらん話だからな
まずシェルというもんがなにか分かってない
475:デフォルトの名無しさん
18/12/23 16:35:42.95 BmCKKXji.net
【放射線ホルミシス効果】 全部バラしてヤバいよって言った方が、セルフガードするからいいと思います
スレリンク(liveplus板)
【嘘HK】 放射能と無関係を装って「心筋梗塞激増」
スレリンク(nhk板)
476:デフォルトの名無しさん
18/12/23 16:37:35.74 yKwr45+F.net
そうですか使ってましたか。
私のところでは、DB自体に投入する前加工もSASでやっている。もう30年になるの
で、SASに投入するデータの加工はSAS事態でやっている。SASに渡すために
前処理する必要は全くなく生データからDBローディングまですべてSASで行っている、
UNIX上で扱うデータなら扱えないデータは基本ないので。
といっても、ここはPowerShellの掲示板なので、以降この話は控えます。
477:デフォルトの名無しさん
18/12/23 16:59:42.72 qffc/3mK.net
SASなんかで加工してたら
まず限界時間にまに合わない
とてつもない大量のテーブルかつとてつもない大量のレコードがあるからな
SASおいてる計算機では
計算機に休む暇を与えてはいけない
投入以外の余計な処理をしてはいけない
478:この条件でひたすら投入のみになる これで限界時間ギリギリになる こんな状態でも予算つけてくれなかったからな
479:デフォルトの名無しさん
18/12/23 17:03:29.12 vUOt1bO/.net
>>461
そりゃ逆、あるいは作りが悪いか作っている人が知らないから
私がUnixのシェルを知らないのと同じようにSASを知らない人が
作ってるからだと思う。
480:デフォルトの名無しさん
18/12/23 17:41:39.11 9AXglOVX.net
SAS自慢は別にスレ建ててやってくれ
1ミリも興味ないし
481:デフォルトの名無しさん
18/12/23 18:11:00.48 vUOt1bO/.net
みんな知っていたんだろうが、私は今はじめて気が付いたんだが
import-excel
export-excel
などなどが、知らないうちにサポートされていたんだ。
早速使ってみる。
いままで自分でしこしこやっていた。
482:デフォルトの名無しさん
18/12/23 18:29:11.84 vUOt1bO/.net
使ってみたが、シートが大きくなるとめちゃくちゃ遅い
う~~ん・・・・
483:デフォルトの名無しさん
18/12/23 18:59:18.04 9AXglOVX.net
>>464
これ?
URLリンク(github.com)
標準でサポートしたのかと思ったわ
484:デフォルトの名無しさん
18/12/23 19:26:10.52 vUOt1bO/.net
>>466
入れた記憶がないんだけど・・・・それを入れたんだろうな
ボケが始まったかな?
そういえば、excelなしでexcelファイル生成みたいな話でそれをダウンロード
していたかもしれない。ちょっと喜んだんだが、xmlベースでのこの処理は
ちょっと私からすると使い物にならない。
仕方ないんでお手製の、comobject利用で行きたいと思います。
485:デフォルトの名無しさん
18/12/24 09:16:30.66 dTDa6WWm.net
しかし、この公開モジュールもったいない。改善すれば大変便利
他のサイトで回答したんだけど、データ大きくなければ、結構使える
次の例はexcelブック読んで、性別(列名)の男子だけ抽出して
新たなブック作成した例
(Import-Excel .\Member.xlsx).Where{$_.性別 -eq "男子"}|
Export-Excel .\NewMember.xlsx
これだけでも便利。自分でコマンドレット作っちゃおうかという気が
ムクムクと・・・・
486:デフォルトの名無しさん
18/12/24 17:12:10.50 X+oEGSDK.net
SAS : 睡眠時無呼吸症候群 (Sleep Apnea Syndrome)
487:デフォルトの名無しさん
18/12/29 14:12:24.74 sblaCsBM.net
多次元配列$aと$bに数値要素を入れて
それらの要素を同じ要素同士で足したり引いたり掛けたりしたものを
同じ構造の多次元配列$cに入れようとしましたが、
powershellの多次元配列の作り方が分かっていないのか、どうしても1つの成分に1つの数値が入りません
$a=@(@(1,2),@(3,4))
$b=@(@(7,8),@(9,10))
$c = New-Object "object[,]" 2,2
だとダメなんですかね?
488:デフォルトの名無しさん
18/12/29 14:18:25.07 alN1JQ5R.net
>同じ構造の
同じ構造じゃない
ジャグ配列で検索してみてからまた来てくれ
489:デフォルトの名無しさん
18/12/29 15:15:38.87 KNALm1aR.net
>>470
そういう質問もいいけど
一つ上の層に行って、何をしたいかを聞いてみてもいいかもよ。
そこにもっていかなくても良い手段、あるいは適切なコマンドレットが
すでに存在しているかもしれないので。
余計なお世話で失礼かなとは思ったけど。