PowerShell -Part 3at TECH
PowerShell -Part 3 - 暇つぶし2ch262:デフォルトの名無しさん
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
そういう質問もいいけど
一つ上の層に行って、何をしたいかを聞いてみてもいいかもよ。
そこにもっていかなくても良い手段、あるいは適切なコマンドレットが
すでに存在しているかもしれないので。
余計なお世話で失礼かなとは思ったけど。

490:デフォルトの名無しさん
18/12/29 15:46:12.70 /U5cTh+v.net
まぁこれだと「ダメです」としか返ってこないもんね

491:デフォルトの名無しさん
18/12/29 17:29:03.55 sblaCsBM.net
$a = New-Object "object[,]" 2,2
$a[0,0] = 1
$a[0,1] = 2
$a[1,0] = 3
$a[1,1] = 4
$b = New-Object "object[,]" 2,2
$b[0,0] = 7
$b[0,1] = 8
$b[1,0] = 9
$b[1,1] = 10
$c = New-Object "object[,]" 2,2
$c[0,0] = $a[0,0] + $b[0,0]
$c[0,1] = $a[0,1] + $b[0,1]
$c[1,0] = $a[1,0] + $b[1,0]
$c[1,1] = $a[1,1] + $b[1,1]
echo $c
出来ました
ありがとうございました

492:デフォルトの名無しさん
18/12/29 17:52:09.19 sblaCsBM.net
$a = New-Object "object[,]" 2,2
$a[0,0] = 1.0
$a[0,1] = 2.0
$a[1,0] = 3.0
$a[1,1] = 4.0
$b = New-Object "object[,]" 2,2
$b[0,0] = 7.0
$b[0,1] = 8.0
$b[1,0] = 9.0
$b[1,1] = 10.0
$c = New-Object "object[,]" 2,2
$c[0,0] = 0.4*$a[1,0] + 0.6*$b[0,1]
$c[0,1] = 1.2*$a[0,0] + 0.2*$b[1,1]
$c[1,0] = 0.6*$a[0,0] + 0.8*$b[1,1]
$c[1,1] = 0.3*$a[1,0] + 0.7*$b[0,1]
echo $c
PS [ディレクトリ] .\array3.ps1
6
3.2
8.6
6.5
こういうのも出来ました
ありがとうございました
2乗とか平方根とかも入れてwhileで多数回回して時代遅れのカオス論ごっこで楽しみます

493:デフォルトの名無しさん
18/12/30 16:51:48.83 Tt0EhWYe.net
よかったよかった

494:デフォルトの名無しさん
18/12/31 02:48:07.85 E3GRK6g9.net
Ruby の行列を使った方が良さそう

495:デフォルトの名無しさん
18/12/31 06:10:51.81 hv1/uFm+.net
>Ruby の行列を使った方が良さそう
わざわざRuby使うくらいならR使うでしょうに

496:デフォルトの名無しさん
18/12/31 10:17:55.48 4o6gq25f.net
Get-Chlditem の -System オプションて機能してなくね? 5.1と6.1で検証した
URLリンク(docs.microsoft.com)

497:デフォルトの名無しさん
18/12/31 10:51:50.10 4o6gq25f.net
使えないのでこんな風にしてる
gci -force |?{$_.Mode -match 's'}

498:デフォルトの名無しさん
18/12/31 13:52:03.55 i7poOdM+.net
>>479-480
普通に機能してるけど?
cmd.e xeのdir /asみたいなことを期待してるならGet-ChildItem -Force -Systemでいけるかと

499:デフォルトの名無しさん
18/12/31 20:02:41.24 4o6gq25f.net
-force ないと機能しないのか…

500:デフォルトの名無しさん
19/01/01 03:34:35.89 ssh3fXac.net
Ruby の行列では、
a = Matrix[[1, 2], [3, 4]]
b = Matrix[[7, 8], [9, 10]]
p a + b
結果
[[8, 10], [12, 14]]

501:デフォルトの名無しさん
19/01/01 09:29:48.04 HeFEoGOE.net
>>482
仕様が違うだけ
Get-ChildItem の -System は単なるフィルター
dir の /a オプションは -Force 相当の機能を含んでる

502:デフォルトの名無しさん
19/01/01 10:43:40.32 ISJZg14N.net
Rならこんな感じになるのかな?
a <- matrix(1:4, 2, 2, byrow=T)
b <- matrix(7:10, 2, 2, byrow=T)
a <- a[,1]
b <- b[,2]
matrix(c(0.4, 0.6, 1.2, 0.3), 2, 2)
* rbind(rev(a), a)
+ matrix(c(0.6, 0.8, 0.2, 0.7), 2, 2)
* rbind(b, rev(b))
結果をimage関数に渡してループすると綺麗にチカチカするんだろうか

503:デフォルトの名無しさん
19/01/01 16:03:09.00 T6MHXAKy.net
SAS/IMLだと
a={1 2,3 4};
b={7 8,9 10};
c=a+b;
print c;

504:デフォルトの名無しさん
19/01/01 16:25:47.24 BBGreIch.net
行列系数値計算ならJuliaも使いやすい
a = [1 2; 3 4]
b = [7 8; 9 10]
print(a + b)

505:デフォルトの名無しさん
19/01/01 16:57:52.05 UIhiNbM3.net
はっきりしているのは、どれもめちゃ遅い

506:デフォルトの名無しさん
19/01/01 16:59:31.69 UIhiNbM3.net
アルゴリズムを考えたり検証したりには
便利という仕組みですね。
これはこれで価値がある。

507:デフォルトの名無しさん
19/01/02 00:00:30.28 uM4gOpCa.net
いろんな言語で書いてくれてるけど
元のソースは行列の単純な和なんて求めてないよね
どうせなら元ソースのエレガントな移植が見たい

508:デフォルトの名無しさん
19/01/02 07:11:32.67 JfU1VO50.net
元のソースは何らかのルールに沿ってたものなのでしょうか

509:デフォルトの名無しさん
19/01/02 15:30:48.31 meZPNJe


510:K.net



511:デフォルトの名無しさん
19/01/02 16:52:22.21 sVSsgdXZ.net
まあ、乗ったというより
別にRubyに求めてないし、それが目的なら
もっといいものがあるよいうことを
Rubyフェチの方に教えてあげただけ。
PowerShellはそこを求めたものとちゃうから。

512:デフォルトの名無しさん
19/01/02 16:57:28.69 PMrmWLAE.net
一般人の正月:和歌を読んで批評し合う
逸般人の正月:コードを書いて批評し合う

513:デフォルトの名無しさん
19/01/02 17:56:16.48 Q1TcDhg4.net
誤)コードを書いて批評し合う
正)コードを書いてマウントごっこ

514:デフォルトの名無しさん
19/01/03 09:21:05.05 e4doPVb1.net
コードも書かずにマウントごっこするよりはマシかな

515:デフォルトの名無しさん
19/01/03 14:18:46.18 EIDJLiBS.net
出力内容に日本語(2バイト文字)が含まれているとテーブル表示の際にカラムがズレる、ってのは回避方法がないのかな。
URLリンク(i.imgur.com)
chcp 437 で英語モードに、って小細工も、Win10/srv2016 以降は出来なくなってる。
# 今気づいたが Unicode の時代に「2バイト文字」って表現は正しくないな

516:デフォルトの名無しさん
19/01/03 19:10:30.43 9E4VKJOH.net
あきらめてOut-GridViewを使うとか

517:デフォルトの名無しさん
19/01/08 18:45:23.42 EC3N2/DB.net
パワーシェルってカテゴリ的にはスクリプト・プログラム言語?それともWindowsのソフトウェア?

518:デフォルトの名無しさん
19/01/08 19:49:18.08 GRXV3JJ2.net
どちらも
シェルと言語に同じ名前が付けられてる(後者はPowerShell Scriptと言ったりするけど)

519:デフォルトの名無しさん
19/01/08 20:23:14.66 twi+nGjw.net
なるほど
バッチファイルの場合、言語がMS-DOSでソフトウェアの名前がbatって感じかな

520:デフォルトの名無しさん
19/01/08 20:34:38.44 GRXV3JJ2.net
全部ずれてる

521:デフォルトの名無しさん
19/01/08 20:45:30.53 Ri9uFdMr.net
bashとシェルスクリプト
command.comとバッチスクリプト
コマンドプロンプト(cmd.exe)とバッチスクリプト
powershell.exeとpowershellスクリプト

522:デフォルトの名無しさん
19/01/08 21:11:05.43 Ri9uFdMr.net
つかシェルとシェルスクリプト
PowershellとPowershellスクリプト
が一番わかり易かったな

523:デフォルトの名無しさん
19/01/08 22:08:03.20 twi+nGjw.net
むずかしい!w

524:デフォルトの名無しさん
19/01/09 02:01:23.48 9kxsD7dR.net
別の言い方としてフロントエンドがある
フロントエンドの形態としてシェル、
シェルの機能としてスクリプトの実行という感じ

525:デフォルトの名無しさん
19/01/09 14:51:11.50 teNQqIfe.net
PowerShellができるようになると何がいい?

526:デフォルトの名無しさん
19/01/09 17:40:53.83 iwuLoYXa.net
>>507
あなたの職業、PCの使いみち次第なので、そこが明らかじゃないとなんとも言えない。

527:デフォルトの名無しさん
19/01/09 19:51:08.47 nNa8IYsJ.net
>>507
職業で使わない前提なら、
Windowsへの追加のインストールなしにそこそこリッチなツールをスクリプト言語で作れることかな

528:デフォルトの名無しさん
19/01/09 21:58:57.96 LPlKYmug.net
それな
今どきの企業はセキュリティポリシーがしっかりしていて
PythonだのRubyだの入れたくてもできないからな

529:デフォルトの名無しさん
19/01/09 22:13:34.50 WxZlp6Z9.net
>>507
事務職の俺が思うメリット・デメリット。
■PowerShellに限らないプログラミングのメリット
PCを使った繰り返し作業を省力化できる。例えば、
ファイルの名前変更と移動を定型で定期的にやるとか、
同じWebサイトにアクセスして毎回似たようなことをするとか、



530:客さんとか他の部署から送られてくる使いづらいExcelのデータを シンプルな表に整形するとか。 ■PowerShellならではのメリット 他の人も書いてるけど、Windowsに最初から入ってる。 スクリプトファイルを渡すだけで同僚にも使ってもらえる。 (起動用のbatファイルとか、タスクスケジューラの設定とかは必要だけど) ■デメリット 全くのプログラミング素人には難しいと思う。 初めてなら、Pythonあたりを先に勉強した方がいいかも。 「パイプラインではオブジェクトが受け渡しされる」とかいわれても 初心者には何のことか分からんと思うし(俺もいまだにしっくり来てない) 適当に解説している入門書とかWebサイトには 「retrun文の後ろの値が、関数の戻り値になります」といった、 嘘じゃないけど嘘に等しいことが書いてあって初心者は訳がわからなくなる。 俺もトライアンドエラーばかりで、きちんと習得できてないです。



531:デフォルトの名無しさん
19/01/09 22:16:39.66 WxZlp6Z9.net
間違えた
return文でした・・・

532:デフォルトの名無しさん
19/01/09 22:17:35.75 nNa8IYsJ.net
すごいHaskell本を借りて100ページくらい読んだら、PowerShellの関数型風な書き方も割と理解できるようになった

533:デフォルトの名無しさん
19/01/09 22:19:11.83 nNa8IYsJ.net
関数型風というか勝手にOut-Defaultがつく挙動がそう見えるだけかもしれないけど

534:デフォルトの名無しさん
19/01/10 00:11:38.57 jhx89QXs.net
関数型は、Ruby, jQuery(JavaScript)。
map というメソッドを頻繁に使う
PowerShell(PS)の延長線上に、Rubyがある
バッチファイル → PS
シェルスクリプト → Ruby
バッチファイル・シェルスクリプトは、とにかく、ハマリが多い!
プログラミングに適さない

535:デフォルトの名無しさん
19/01/10 00:25:40.33 mktY/a5R.net
dosならまだしもwinで無理やり拡腸されたのはちょっとね・・・

536:デフォルトの名無しさん
19/01/10 00:28:19.57 FheW454d.net
>>515
この人は何でいつも同じような論調でどこにでも現れるのだろうか。
やたらruby推しするわりには具体的なrubyの良さが全く伝わってこなくて、むしろマイナスイメージをばら蒔いているような気がする。

537:デフォルトの名無しさん
19/01/10 00:33:03.30 jxmC/C32.net
>>516
誤字がひどい

538:デフォルトの名無しさん
19/01/10 04:58:55.23 Pqz/qBav.net
>>507
batファイルが書けるよりも何が便利かという視点だと、batがひどいからずっとマシというのがある
batでは初歩的な処理もできなかったり、実現までに手間を要したりする
保守性も悪い

539:デフォルトの名無しさん
19/01/10 05:25:45.52 nf36oLbM.net
>>519
それを言うなら、batとvbsやJscriptを組み合わせてようやく出来てたことが、よりPowershellでは少ないコーディングで同等以上の機能を実現できる。て書こうよ

540:デフォルトの名無しさん
19/01/10 05:57:47.50 Pqz/qBav.net
>>520
処理をちょっと追加・変更したくなったときにすぐほかの言語の利用や外部コマンド調達が必要になることを含めて、実現までに手間を要する、と言ったんだけどね
vbs等を覚えてそちら主体で書く前提なら、別途そういう視点での比較論を語ってくれ

541:デフォルトの名無しさん
19/01/10 06:03:49.10 nf36oLbM.net
MSの意図も、現実の普及や活用もvbsはbatの補間機能だよ、それらの一括後継がPowershell、そんなことを今更説明しなきゃならんとは残念至極
つかvbs覚えずにbatだけでwinの管理ワークなんかできなかったよ

542:デフォルトの名無しさん
19/01/10 07:54:48.12 e7V


543:8oUZV.net



544:デフォルトの名無しさん
19/01/10 12:28:31.19 8HdqxYaB.net
>>517
ruby を NG してる

545:デフォルトの名無しさん
19/01/10 17:29:11.64 jhx89QXs.net
そりゃ、Ruby がベスト。
Vagrant, Chef, Homebrew, Redmine も、Ruby
JavaScript(JS)は、Ruby に似せてくるから、扱いやすい。
Node.js のnpm, yarn も、Ruby のBundler そっくり。
GUI は、HTML, CSS, JS
再帰的なディレクトリのファイル操作も、glob がある
オブジェクト指向・関数型・Duck Typing・Open Class など、あらゆるデザインパターンの宝庫
Ruby から、PowerShell も呼べる。
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ダブルクリックで起動したい時だけ、VBS を使っている
ピラフ大王は、PowerShellで、5ch をスクレイピングするほどだけど、
漏れは、Ruby, Selenium Webdriver でやってる
「たのしいRuby 第5版、2016」でも読めば?

546:デフォルトの名無しさん
19/01/10 17:49:28.58 3kN+h5hG.net
インテリセンスしょぼすぎ

547:デフォルトの名無しさん
19/01/10 18:07:50.47 vGEkHdSz.net
>>524
俺もそうする

548:デフォルトの名無しさん
19/01/10 18:08:40.70 ct6DIWcV.net
>>525
わざわざ蕎麦好きが集まる蕎麦屋に出向いて、「うどんこそが至高の麺類。なぜなら~」って
講釈垂れるのと同じくらいヤボだ、って気づくべき。周りは迷惑してるんですよ。

549:デフォルトの名無しさん
19/01/10 18:11:49.88 SOl/xRps.net
どんどんrubyの評判を下げてるのがわからんのかねぇ

550:525
19/01/10 18:45:39.00 jhx89QXs.net
漏れは、PowerShell で数行書くなら、Ruby で作ってしまう
クリップボードみたいなのは、Rubyから、PowerShellコマンドを呼ぶ。
ダブルクリックで起動したい時は、VBS・bat を使う
Rubyから、Node.js を呼ぶとか、すべての言語を呼び出せるかも

551:デフォルトの名無しさん
19/01/10 18:48:24.32 ntFiGaUH.net
なるほどrubyじゃ何もできないってことだね

552:デフォルトの名無しさん
19/01/10 19:03:20.25 3kN+h5hG.net
IronRubyってどうなったの?

553:デフォルトの名無しさん
19/01/10 20:51:10.85 UUY7OixD.net
(かつて)仕様書が存在しない処理系を複製するなんてやってられなくなったんじゃないか?

554:デフォルトの名無しさん
19/01/14 13:22:32.56 i1odpryK.net
powershellのメリットは対話環境とスクリプトが同一の文法て書けること
ISEやVS codeで小さなブロックの挙動を確認しながら、それらを組み合わせて一連のワークフローを構築できる
『トライ&エラーで作ってる』って方がいたけど、まさにそういったやり方が出来ることが、専門職じゃなくて日常業務の効率化に使ってる自分にとって凄く大きな利点

555:デフォルトの名無しさん
19/01/14 16:32:26.56 mUB6pFvH.net
>>534
>powershellのメリットは対話環境とスクリプトが同一の文法て書けること
まさに同じ利点なんだけど、TIPS集みたいな感じでテキストファイルに数行のスクリプトをいくつも集めておいて
必要になったらそこからpowershellウインドウにコピペで即実行できるのがいいね

556:デフォルトの名無しさん
19/01/14 17:38:40.92 i1odpryK.net
>>535
それもあるね
psreadline有効にしておけば履歴から同じようなことできるし
unix系で当たり前だったことが、やっと出来るようになったともいえるけど

557:デフォルトの名無しさん
19/01/15 07:41:15.21 PNg+c5Yb.net
文化の変化には拒絶反応があるもの
過去のシェルでつけられてきた命令等の名前付けルールを見ても、
今のようにIT文化が広がった時のが目の利用者目線でつけられたものではなく、
あくまでOS周りのシステム開発者と利用者が同一だった時代、要は試行段階の
時代につけられが規則で、今の時代に合わなくなっている。
そこに風穴開けたのは大変良いことだろう。
既存の使い方に慣れた人にとっては、新たな流れは「また覚えることが増える」
「使い方が今までと違う」ということへの拒否反応が少なからずある。
やり取りを見ていて思ったのは、すでに旧来Unix系シェルのルールにのっとって
作られてきたものがレガシーに向かっていると思いたくない、気が付かないひとが
多いこと。時代は変化してゆく。

558:デフォルトの名無しさん
19/01/16 08:35:02.57 8/OmqdoX.net
v6.1.2 Release of PowerShell Core
URLリンク(github.com)

559:デフォルトの名無しさん
19/01/16 18:21:31.35 Y6YhZRdL.net
>>538
あんがとさん

560:デフォルトの名無しさん
19/01/31 21:35:30.95 AeQOSKqu.net
&{
while($true){
(++$i)
sleep -Seconds 1
}
} | Out-GridView
Get-Date
上を実行すると1秒ごとにカウントされた値がウインドウ表示されるけど、
ウインドウを閉じたときにそれ以降のコマンド(Get-Date)が実行されず終了するのどう回避すればいいだろう・・・?

561:デフォルトの名無しさん
19/01/31 21:44:25.79 AeQOSKqu.net
Whileの継続判定を
$stop_form = Start-Job {
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
Start-Sleep -Milliseconds 500
[System.Windows.Forms.MessageBox]::Show("計測停止ボタン")
}
のフォームを使って
while($stop_form.state -eq "running"){...}
のようにもしてみたけれどウインドウ2個表示されるので方法として頭悪い・・・

562:デフォルトの名無しさん
19/01/31 22:18:49.56 xJsSt9Re.net
Windows では、よく知らないけど、
Linux では、プロセスに親子関係がある
そして親プロセスが終了すると、子プロセスにも終了メッセージが送られて、
それに何も対処しないと、普通は子プロセスも終了する
つまり、親亀こけたら子亀もこける
シェルから起動したプロセスは、シェルの子プロセスになっている
だからデーモン・サービスのように、親プロセスから切り離すか、
親から終了メッセージが送られても、子が終了しないような工夫をする必要がある
また、パイプラインでは、ジョブという処理単位もあり、
ジョブグループにまとめられて、そのグループ全部に対して作用する

563:デフォルトの名無しさん
19/01/31 22:20:50.85 wdHuOMr6.net
>>540
while($true){++$i|out-gridview;sleep -seconds 1;get-date}

564:デフォルトの名無しさん
19/01/31 22:33:49.84 nQoHUWUF.net
powershell {
&{
while($true){
(++$i)
sleep -Seconds 1
}
} | Out-GridView
}
Get-Date

565:
19/01/31 23:10:29.40 GI5VQ7Hx.net
>>542
>デーモン・サービスのように、親プロセスから切り離すか
これ、なんか特別なことをしましたっけ…

566:542
19/01/31 23:44:01.11 xJsSt9Re.net
Windows では知らないけど、
Linux なら、systemd で、サービスを起動できる

567:デフォルトの名無しさん
19/01/31 23:44:18.82 AeQOSKqu.net
>>543
いにしえのブラクラかと・・・
>>544
一応こんな感じで、runspacepoolで実行するようにはしてみたけれど、
現実には


568:whileの中で実行する関数とかをASTの構文解析使って渡してやる必要があって、少し手間なんですよね Out-GridViewによるプロセス中断を制御できればなと思っていました



569:デフォルトの名無しさん
19/01/31 23:57:01.76 eCrLlhCC.net
>Windows では知らないけど、
このひとなんなん
こわい

570:デフォルトの名無しさん
19/02/01 07:42:04.59 92aZjlm0.net
>>545
>>542はWindowどころかLinuxもよく理解できてないみたいだからスルーするがよろし
親プロセスなんてどうでも良くてたぶん制御端末がクローズされた時にSIGHUPが送られる話と勘違いしてる

571:デフォルトの名無しさん
19/02/01 09:45:34.37 CxyFcB/M.net
>>547
パッと思いつきだけで考えたけど、
Start-Job
Workflow
あたりを使うのはどうでしょうね(未確認)。

572:デフォルトの名無しさん
19/02/01 10:57:54.88 Df7lr2kE.net
>>547
Out-GridView だけを、あちらで実行するとか。
GridView に表示するオブジェクトは、スレッドセーフでないといけないかも。
$run = [RunspaceFactory]::CreateRunspace()
$run.Open()
$ogv = $run.CreatePipeline()
$ogv.Commands.Add('ogv')
$ogv.InvokeAsync()
$exec = {$i = 0; for (;;) {(++$i); sleep 1}}
try {
 & $exec | % {if ($run.RunspaceAvailability -ne 'Busy') {throw} $null = $ogv.Input.Write($_)}
}
catch {
 Write-Warning 'GridView が閉じました。'
}
Get-Date

573:デフォルトの名無しさん
19/02/02 21:37:38.54 GDLTgOlM.net
もうOut-GridView側の処理は別ps1ファイルで別けて
メイン側からStart-Process に -NoNewWindow -PassThru -Wait つけて終了まで待って
終わったらメイン側の処理に戻ればいいんじゃね
ISEじゃ余分に窓出ちゃうけど直起動なら窓増えないし
結果受け取りが必要なら一手間いるけど

574:デフォルトの名無しさん
19/02/03 05:19:27.02 U6zkwiYj.net
URLリンク(i.imgur.com)
型指定した変数に$nullを代入できないの?

575:デフォルトの名無しさん
19/02/03 10:45:58.13 p2YNM7CO.net
PS > [bool]""
False
PS > [bool]$s
False
なので$nullではなく空白が代入されてる
代入の時点で型変換されてる?

576:デフォルトの名無しさん
19/02/03 11:34:45.18 gZVRTEN5.net
psのnullはnullじゃないってどこかで記事見たな

577:デフォルトの名無しさん
19/02/03 12:12:22.77 p2YNM7CO.net
PS > [string]$s -eq $null
False
PS > $s -eq $null
True

578:デフォルトの名無しさん
19/02/03 12:17:47.78 sBfvPdNi.net
型変換が定義されてるっぽいね

579:デフォルトの名無しさん
19/02/03 12:58:35.28 jpAIKS8U.net
$nullの型が何なのか調べればわかること
$null.GetType()
You cannot call a method on a null-valued expression.
At line:1 char:1
+ $null.GetType()
+ ~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
まとめ
結構嫌な感じですね。

580:デフォルトの名無しさん
19/02/03 13:06:40.62 KnacfqZI.net
>>553
[string]::IsNullOrEmpt


581:y($s) NullならTrueが返るから if([string]::IsNullOrEmpty($s)){ "ぬるだよ"}



582:デフォルトの名無しさん
19/02/03 13:52:06.12 fFxNo4TL.net
>>559
[string]::IsNullOrEmpty("") もtrueになるんだが
String.IsNullOrEmpty(String) Method
URLリンク(docs.microsoft.com)
>指定された文字列が null または空の文字列 ("") であるかどうかを示します。

583:デフォルトの名無しさん
19/02/03 14:28:24.77 gZVRTEN5.net
うーむ・・・
[string]$s = $null
$s -eq [string]$null
$s -eq $null
$s.GetType()
True
False
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object

Remove-Variable s
$s -eq [string]$null
$s -eq $null
$s.GetType()
False
True
null 値の式ではメソッドを呼び出せません。
発生場所 行:5 文字:1
+ $s.GetType()
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) []、RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

584:デフォルトの名無しさん
19/02/03 14:38:16.60 KnacfqZI.net
>>560
じゃこんな感じで
[string]$s=$null
if($s -eq [string]$null){"ぬるぬるだよ"}

585:デフォルトの名無しさん
19/02/03 14:53:04.55 KnacfqZI.net
可能であれば [string]$s=$null
でなく    [object]$s=$null でよければ
ならば、普通に比較ができるんだけどね

586:デフォルトの名無しさん
19/02/03 14:53:36.20 KnacfqZI.net
何でフォントが変わったんだろ?

587:デフォルトの名無しさん
19/02/03 17:18:00.01 gLy6KBGU.net
stringやintはC#と同じくnull許容型ではないということだな
[string]$s = $null
$s
// 代入時にキャストされ空文字列になる
[int]$i = $null
$i
// 代入時にキャストされ0になる
[Nullable[string]]$s = $null
$s
// $nullが代入できる

588:デフォルトの名無しさん
19/02/03 17:37:25.59 KnacfqZI.net
>>565
>stringやintはC#と同じくnull許容型ではないということだな
C#にstringのnull許容型ってないよね。
参照型には?を付けられないよね。

589:デフォルトの名無しさん
19/02/03 17:47:48.25 KnacfqZI.net
>>565
>[Nullable[string]]$s = $null
>$s
>// $nullが代入できる
やってみたら、今度は文字代入するとエラーになるぞよ
Unable to find type [Nullable[string]]. Details: 'System.Nullable`1[T]' 上の Gene
ricArguments[0]、'System.String' が型 'T' の制約に違反しています。

590:デフォルトの名無しさん
19/02/03 18:06:20.48 gLy6KBGU.net
ああすまん、[Nullable[string]] はダメだったか
intで動作確認してたわ
では訂正
PowerShellのstringはnullを許容しません、だな

591:デフォルトの名無しさん
19/02/03 20:22:36.62 wQ2AkwMN.net
>>566
C#8.0

592:デフォルトの名無しさん
19/02/14 06:50:42.41 EWDxMe0z.net
今まであまり気にしてなかったけどPesterってめちゃくちゃ便利なんじゃねえか
他言語で書いたプログラムの結合テストがスゴく書きやすい

593:デフォルトの名無しさん
19/02/14 09:06:58.55 k6/DH+7Z.net
>>570
いいもの教えてもらった。ありがとう。

594:デフォルトの名無しさん
19/02/14 22:51:37.48 8Eclc9m3.net
powershellの標準出力やエラー出力を、自分で作成したフォームのTextBoxにリダイレクトできないでしょうか?
C#単体ではできたのですが、powershellの出力の仕組みがよくわからないので。
C#のConsole.SetOutやConsole.SetError相当のがないものかと。

595:デフォルトの名無しさん
19/02/14 23:42:44.14 CDGUBW/T.net
>>572
Powershellから.Net Frameworkを利用できることは解ってる?

596:デフォルトの名無しさん
19/02/15 20:32:06.22 VV8Lu8eJ.net
>>570
かんがえてみれば、VSCodeでC#なんかのひな形生成してるのって
PowerShellだね。同じことやってんだろな。

597:デフォルトの名無しさん
19/02/15 22:37:05.29 JVFXEcJ1.net
>>573
既にpowershellスクリプト内のC#で出力用フォームを作っていて、
シェル上から
[System.Console]::WriteLine("hello from System.Console")
でフォームへの出力までは確認できてるのですが、
"hello from Write-Host" | Write-Host
とかのpowershellのパイプラインと結びつける


598:方法が判りません。 という状態です



599:デフォルトの名無しさん
19/02/15 23:35:43.92 BkaZ3+61.net
Ruby で、1-liner のフィルタ。
ファイル名を大文字で表示する
ls | ruby -lne 'print $_.upcase'
ARGF を1行ずつ読み込んで、変数$_ に格納する。
ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル
ruby -lne 'print $_.upcase' a.txt b.txt
sed -n, awk をエミュレートしたもの

600:デフォルトの名無しさん
19/02/15 23:54:24.30 I8iEDAq8.net
sed、awkでいいな。
わざわざ100倍遅くする必要はない。
そして死ね。

601:デフォルトの名無しさん
19/02/15 23:55:34.76 Y7lTk+zi.net
>>572
C#単体ではどうやって実現したの?

602:デフォルトの名無しさん
19/02/16 12:36:04.55 td/FtdQ5.net
>>572
write-error とか write-warning とか write-output とか他にも
いろいろあるけど、そのこと言ってる?

603:デフォルトの名無しさん
19/02/17 16:02:03.17 jxo9FooS.net
powershellのソース読むとOut関係はそんなインターフェースが無いっぽいのが判ったので
全部%{[System.Console]::WriteLine($_)}に通すことにしました

604:デフォルトの名無しさん
19/02/19 01:05:58.24 rqZOBHxw.net
(494,500,"`nズン"),(523,300,"ズ"),(494,250,"ン"),(330,600,"ズン"),(330,250,"ド"),(330,250,"コ")|
%{write-host "`nズン♪";Add-Type -a System.speech;$s=[Speech.Synthesis.SpeechSynthesizer]::new();$s.rate=1;[Console]::Beep(330,500);sleep -m:600}{
write-host -n -f:(10..15|random) "$($_[2])♪";[console]::Beep($_[0],$_[1])}{
write-host -f:(10..15|random) "`n`nキヨシ!!`n";$s.Speak("きいっよおっしぃ いいいっ!");$s.Dispose()}

605:デフォルトの名無しさん
19/02/19 11:18:15.41 jsQqlcaV.net
>>581
それ、しゃべるの?うちの環境では喋らなかった。

606:582
19/02/19 11:20:37.97 jsQqlcaV.net
>>581
喋ったわ、PCの設定の問題だった

607:デフォルトの名無しさん
19/02/19 14:42:09.09 cO5Algvr.net
URLリンク(dev.classmethod.jp)
> 4000以上のコマンドをエクスポートしているとPowerShell Galleryでの公開がリジェクトされてしまう

608:デフォルトの名無しさん
19/02/19 15:26:18.95 xz+0XgYy.net
似たようなのは、VSCodeでもあるね。
たとえば、C#のコンソールモジュール作ろうとして
dotnet new console -o xxx とやると
dotnet-new はありませんみたいな

609:デフォルトの名無しさん
19/02/20 14:59:45.45 MrRFAFnZ.net
v6.1.3 Release of PowerShell Core
URLリンク(github.com)

610:デフォルトの名無しさん
19/02/23 20:34:37.39 K6odEV0u.net
WindowsでしかPS使わないんだけど
早めにWindowsPS5.1から、PS6.1に移行した方がいい?
5.1で作ったスクリプトとか、そのままだと6.1でほぼ動かないよね。
5.1でゴリゴリ作って資産を溜め込むと将来的に困った事になるのかな。
でも、6.1はドキュメントが整備されてなくて、調べるのが辛い。

611:デフォルトの名無しさん
19/02/23 21:00:34.25 mBphVd+l.net
OSに標準搭載されるならともかく今は現状維持で良いんでない
スクリプトが軒並み動かんような破壊的な変更では無かったと思うけど

612:デフォルトの名無しさん
19/02/23 21:10:17.16 K6odEV0u.net
.net flamework呼び出すスクリプトが多くて
ここをCoreに置き換えないといけないんだよね?
そこが上手くいけるのかな


613:って。 PS自体の互換性は割と大丈夫っぽいんだけど。



614:デフォルトの名無しさん
19/02/23 21:26:32.03 U8qcMvKV.net
.NET Coreの範囲だったらいいけど、.NET Frameworkと比べるとすごく狭そうだからなあ

615:デフォルトの名無しさん
19/02/23 21:41:56.40 QCtZNWil.net
>>590
そんなにかわらんやろ

616:デフォルトの名無しさん
19/02/23 22:07:09.64 U8qcMvKV.net
でもCoreには、Windows formsとWPFが無いよ

617:デフォルトの名無しさん
19/02/23 22:20:27.28 U8qcMvKV.net
悪い、俺の知識が古かった
Core 3.0ではサポートされるんだな

618:デフォルトの名無しさん
19/02/23 22:42:29.56 3sqzQkTc.net
3.0はdnSpyとか既に導入しているアプリもちょくちょく見るね
SCDにできるのが野良配布の開発者には良さげ

619:デフォルトの名無しさん
19/02/24 05:23:00.00 EIdikGBL.net
>>587
ほぼ問題なく動いてるよ

620:デフォルトの名無しさん
19/02/24 15:29:42.14 aT0Lsbsv.net
>>595
ってことは、WindowsPS5.1で作っても
後々、6.xに移植するのはかなり容易ってことかな?

621:デフォルトの名無しさん
19/02/24 16:23:30.62 njB6xu8t.net
OSチームが謎のps推ししてるんだからそう動作が変わるとも思えない(全く信用はしてないが)

622:デフォルトの名無しさん
19/02/24 21:05:12.28 JgPRA9Sg.net
分からない所があるなら、まずは公式ドキュメントを読めよ
PowerShell Core 6.0 の重要な変更
URLリンク(docs.microsoft.com)
PowerShell Core 6.1 の新機能 - 破壊的変更
URLリンク(docs.microsoft.com)

623:デフォルトの名無しさん
19/02/24 21:25:21.67 njB6xu8t.net
encoding以外ほぼどうでもいい内容だな

624:デフォルトの名無しさん
19/02/25 06:14:15.76 WiC9+kGP.net
>>595
上で言っているエンコードと、サポートされていない画面系(Forms,WPF)以外は
特段の違いはないと思っていいと思う。

625:デフォルトの名無しさん
19/02/25 17:25:12.02 PrYchFgA.net
System.Windows.FormsみたいなWindows固有のGUI系はサポートされない。
今のところこれで困ってる。
Core3.0でサポートされるから、将来的には大丈夫なんだろうか。

626:誰かスクリプト教えて下さい、、、
19/02/26 08:07:40.70 OWiOsoxx.net
Windowsサーバのディスク断片化を検知するPowerShell

627:デフォルトの名無しさん
19/02/26 08:18:02.82 OWiOsoxx.net
誰か教えて下さい
断片化を検知するパワーシェル
一定の断片化でデフラグするパワーシェル

628:デフォルトの名無しさん
19/02/26 09:02:46.40 dRkGmNcH.net
>>603
しつこい

629:デフォルトの名無しさん
19/02/26 12:06:29.45 DYKZ90LU.net
>>603
とうとうこっちに来たのか…、要件をまとめられない限り、お前さんに仕事は無理、勿論回答も無理。丸投げなどもっての他、はよ仕事降りて病院行け

630:デフォルトの名無しさん
19/02/26 12:13:41.62 DYKZ90LU.net
こいつはWindows板のスレに2/12に登場し、周りから色々アドバイス貰っても、壊れたレコードのように「わかりません、教えてください」を繰り返し「もう来ませんさようなら」と言っては再び現れる
スレリンク(win板:373番)-

631:デフォルトの名無しさん
19/02/26 12:24:30.73 W0wJxBNy.net
>>606
なんだそりゃワロタwwwww

632:デフォルトの名無しさん
19/02/26 12:41:56.50 5MxkS3P7.net
断片化?
そんな難しいプログラムを、書けるわけないだろ
断片化を判定するようなコマンドなんて、無いだろ?
そういうのは、それ専門の会社が作っている、アプリを使う。
自作できるようなものじゃない

633:デフォルトの名無しさん
19/02/26 14:04:50.81 xyBbmsCy.net
Win10だと自動でデフラグするけどな。

634:デフォルトの名無しさん
19/02/26 14:29:41.52 n


635:1GswSmU.net



636:デフォルトの名無しさん
19/02/26 14:47:12.84 iHcW87Sg.net
>>603
Optimize-Volume
URLリンク(docs.microsoft.com)
後は勝手にしろ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch