1 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 16:08:31.66 ID:4oQ1Kxot.net] 前スレ PowerShell -Part 3 https://mevius.5ch.net/test/read.cgi/tech/1539074808/ 次スレは>>980 が立ててね!!
352 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 16:01:29.47 ID:DriXa/wG.net] rem ff.cmd @echo off setlocal cmd /k "pwsh -File ".\firefox-shutdown.ps1"" # firefox-shutdown.ps1 Start-Sleep -Seconds 10; Get-Command; Start-Sleep -Seconds 3; Get-Process firefox* | Stop-Process;
353 名前:デフォルトの名無しさん mailto:sage [2020/06/09(火) 16:26:23 ID:DriXa/wG.net] Start-Sleep -Seconds 10; mspaint "010371104.gif"; Start-Sleep -Seconds 3; Get-Process firefox* | Stop-Process;
354 名前:300 [2020/06/11(木) 17:55:09 ID:fJWIdGby.net] 教えてください。 ADユーザーの最新ログオン日時を取得したいです。 記述としては、 $Now = Get-Date -Format 'yyyyMMdd_hhmmss' $logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now ) $users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local " foreach ($user in $users) { Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline $grps = (Get-ADPrincipalGroupMembership -identity $user).name $line = '"{0}",' -f $user.SamAccountName $line = $line + ('"{0}",' -f $user.Enabled) $line = $line + ('"{0}",' -f $user.LastLogon) と思いましたが、最終ログオン日時を取得するのは LastLogonであっているでしょうか? また、最終ログイン日時の後にフルネームを取得したいときは、 $Now = Get-Date -Format 'yyyyMMdd_hhmmss' $logPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ('{0}.csv' -f $Now ) $users = Get-ADUser -Filter * -SearchBase " OU=ユーザー,DC=test,DC=local " foreach ($user in $users) { Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline $grps = (Get-ADPrincipalGroupMembership -identity $user).name $line = '"{0}",' -f $user.SamAccountName $line = $line + ('"{0}",' -f $user.Enabled) $line = $line + ('"{0}",' -f $user.LastLogon) $line = $line + ('"{0}",' -f $user.Fullname) となるでしょうか?
355 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 09:35:33.43 ID:IRe5SA+Y.net] v6.2.6 https://github.com/PowerShell/PowerShell/releases/tag/v6.2.6 v7.0.2 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.2
356 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 10:07:01.73 ID:tUTXhBxn.net] >>352 Get-ADUser は、デフォルトでは一部のプロパティしか取得しません。"LastLogon" が必要な場合は -Properties で指定する必要があります。 $users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" ↓ $users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" -Properties 'LastLogon' さらに、LastLogon で取得される日時データはシリアル化されたものですのでヒューマンリーダブルに変換する必要があります。 $line = $line + ('"{0}",' -f $user.LastLogon) ↓ $date = [DateTime]::FromFileTime($user.LastLogon) $line = $line + ('"{0}",' -f $date.ToString("yyyy/MM/dd HH:mm:ss")) 「フルネーム」ですが、プロパティとしては Name が該当するものになります。 $line = $line + ('"{0}",' -f $user.Fullname) ↓ $line = $line + ('"{0}",' -f $user.Name)
357 名前:354 mailto:sage [2020/06/12(金) 10:07:36.18 ID:tUTXhBxn.net] まとめるとこうです(ファイル書き出しの部分は省略)。 $users = Get-ADUser -Filter * -SearchBase "OU=ユーザー,DC=test,DC=local" -Properties 'LastLogon' foreach ($user in $users) { Write-Host ('{0} : ' -f $user.SamAccountName) -NoNewline $grps = (Get-ADPrincipalGroupMembership -identity $user).name $line = '"{0}",' -f $user.SamAccountName $line = $line + ('"{0}",' -f $user.Enabled) $line = $line + ('"{0}",' -f $user.Name) $date = [DateTime]::FromFileTime($user.LastLogon) $line = $line + ('"{0}",' -f $date.ToString("yyyy/MM/dd HH:mm:ss")) Write-Host $line }
358 名前:354 mailto:sage [2020/06/12(金) 10:09:03.73 ID:tUTXhBxn.net] ただし、私自身も 10 年くらい前に AD の情報から LastLogon を取得することを検証したのですが、以下の理由から断念しました。 ・LastLogon のデータは各ドメコンが個別に保持しているデータなので、ドメコンが複数ある場合は各ドメコンごとに値が異なる (各クライアントが認証要求を行ったドメコンでしか更新されず、各ドメコン間で同期されない) ・ユーザが PC でログオンしたタイミング以外でも、LastLogon は更新される (ログオフや長時間離席していた場合など) 正確なログオン日時が取りたい場合は、各クライアント上で取得する必要があります。イベントログを見れば分かります。 私は結局、ファイルサーバのテキストファイルにログオン日時とユーザ名を書き込むログオンスクリプトを作成したと記憶しています。
359 名前:354 mailto:sage [2020/06/12(金) 10:22:05.71 ID:tUTXhBxn.net] 追伸。 >・LastLogon のデータは各ドメコンが個別に保持しているデータなので、ドメコンが複数ある場合は各ドメコンごとに値が異なる 全てのドメコンから値を取得して、最も値の大きいものを採用する、というやり方も出来ます。 それでも、LastLogon がログオン操作以外でも更新されてしまうことには変わりませんので、確実に実行するならやはりログオンスクリプトをおすすめします。
360 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 16:10:21.89 ID:6Yfh5mGy.net] Power Shellってアプリケーション作れんですか?
361 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 18:18:25.00 ID:Jkz+gOtE.net] アプリケーションって何?
362 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 18:44:27.27 ID:/dqGhWwV.net] >>358 普通に作れるよ GUIもWPF使えるし
363 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 18:45:58.91 ID:gCbNSmDh.net] window表示するイベントドリブンなexeのことじゃないかな
364 名前:デフォルトの名無しさん [2020/06/12(金) 18:55:49.90 ID:tr06rVi2.net] もうそれ最初からC#でやれば良くね?っていう
365 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 19:42:03.65 ID:sTuFS1ZK.net] 大部分C#で書いてパワシェで書きやすい部分だけデリゲートでインジェクションするパターンなら多用しとるわ
366 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 20:21:21.09 ID:6LTYSgwt.net] ただのコマンドプロンプトだと思ってた スゲーワケわからん
367 名前:デフォルトの名無しさん mailto:sage [2020/06/12(金) 20:53:03.96 ID:tSkvENox.net] オブジェクト指向シェル言語だからな
368 名前:300 [2020/06/14(日) 00:11:44.27 ID:JXZUsp2d.net] >>354 ありがとうございます! 検証環境で無事出力確認できました! しかし最終ログイン日時の取得は難しいんですね。 今回はそれほど精密な値は求められないので良かったですが、 ドメコンには注意なんですね。
369 名前:デフォルトの名無しさん mailto:sage [2020/06/15(月) 19:20:43.36 ID:KO8t20+1.net] ドメコンにリアルタイム性は期待できないと思ったがやっぱそうだよな
370 名前:デフォルトの名無しさん [2020/06/16(火) 08:27:08.93 ID:flP7FZNr.net] LastLogin を各DCから拾って最新値を取り出すスクリプトあったよ https://gallery.technet.microsoft.com/scriptcenter/Get-Last-Logon-for-Users-c8e3eab2
371 名前:デフォルトの名無しさん [2020/06/16(火) 11:32:29.65 ID:r0rBA9XG.net] コマンドプロンプトでecho a b cを実行すると出力結果は a b c PowerShellでecho a b cを実行すると a b c なのはなんで? エラーにもならずにbやcはどう扱われてるの?
372 名前:デフォルトの名無しさん [2020/06/16(火) 11:55:26.03 ID:dJYiaODe.net] echo a b c とかやってみれば、以下にcmdがクソかよくわかると思うよ。
373 名前:デフォルトの名無しさん [2020/06/16(火) 11:56:36.32 ID:dJYiaODe.net] あ、間のスペースも消えてなくなるのか。 echo___a_____b____c _をスペースに。
374 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 12:32:39 ID:0Yfa1k+l.net] いやいやいや 引数なんだから当然だろ あとは出力で改行するかどうかだけじゃん
375 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 12:44:08.30 ID:zfRgO9so.net] echo "a b c" " " で囲えば、a b c と表示される
376 名前:デフォルトの名無しさん [2020/06/16(火) 12:53:01.50 ID:r0rBA9XG.net] 聞きたいのはそういう類じゃないんだな echo (=Write-Output) のSyntaxが Write-Output [-InputObject] <PSObject> [-NoEnumerate] [<CommonParameters>] だからa が-InputObjectの<PSObject>になるのはわかる bやcはどういう理屈で処理されるの?
377 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 14:16:42.05 ID:PL2rwu//.net] >>374 echo a b c は echo @('a', 'b', 'c') と同じ扱いとするように実装されてるんでしょ
378 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 14:40:34.28 ID:p9YvTGLE.net] まあ調べた374がpowershellの引数展開についてまとめて分かりやすく報告してくれるでしょ
379 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 14:48:49.11 ID:C/0BZ8DU.net] MSの説明では、正確には [-InputObject] <PSObject[]> となってる
380 名前:デフォルトの名無しさん [2020/06/16(火) 16:42:16.77 ID:r0rBA9XG.net] del a b cはちゃんとエラーになる さっぱりわからん😩
381 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 17:12:01.69 ID:MVe0R048.net] Write-Outputの-InputObjectパラメータにはValueFromRemainingArguments属性がついてるから その場合はパラメータ名が明示されてないものはすべてInputObjectにバインドされるんよ 確認はしずらいけど以下で確認できる (Get-Command Write-Output).ParameterSets[0].Parameters | where name -eq InputObject まああんまりこの属性ついてるのはないからecho とかWrite-Hostあたりはこうなってるくらいの認識でいいよ PowerShell7だとJoin-Pathもこの属性がついてる
382 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 17:24:04.82 ID:8ZMUuPb8.net] echoの引数がUNIXとかだとアレだよ
383 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 17:25:39.53 ID:MVe0R048.net] >>379 訂正:パラメータ名が明示されてないものでポジショナルバインディングもできないもの
384 名前:デフォルトの名無しさん [2020/06/16(火) 17:45:58 ID:r0rBA9XG.net] なるほど ありがとう
385 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 19:16:29.09 ID:bkoiHKSB.net] PowerShellの起動がなんか凄いモタつくんだけどおまかん? Windows10Home PS7.01 スクリプト書いて渡しても、 何も出ない黒い画面がしばらく出て怖がられたり、何個も起動されたりするし
386 名前:デフォルトの名無しさん mailto:sase [2020/06/16(火) 21:23:47.76 ID:aR46ypRq.net] >>251 ,312 右クリックじゃなくてCtrl+Vではどう?
387 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 22:43:53.36 ID:Tk9CpyzQ.net] cmd -L 9875 shinjyuku Tokyo Japan の1列目を1行で変数に格納したいのですが、方法がわかりません。 $work=(cmd -L | Select-String "shinjyuku" ) $id=$work -split " " Write-Output $work[1] これを1行で書ける方法を教えてください。 よろしくお願いいたします。
388 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:40:23 ID:n71ojSL1.net] cmd -Lが何なのか判らないのでcmd /c echoの例で (cmd /c echo 9875 shinjyuku Tokyo Japan | %{ $_ -split " " })[0]
389 名前:デフォルトの名無しさん mailto:sage [2020/06/16(火) 23:41:31 ID:n71ojSL1.net] 忘れてた頭に$id=付けてね
390 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 07:40:39.83 ID:0yXiYm7U.net] >>386 ありがとうございます 特に隠すようなコマンドでもなかったのですが、 インターネット速度の自動計測スクリプトを作ってみようとしてます .>\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' 15047 OPEN Project (via 20G SINET) Tokyo Japan > $i=(.\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' | %{$_ -split ' '}[0]) > Write-Output $i[1] 15047
391 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 07:50:00.92 ID:PujUJ59z.net] cmd .exeに-Lオプションがあるのかと思った人は俺以外にもたくさんいるはず
392 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 08:00:55.98 ID:H0Dcbe9T.net] VSCode で、PowerShell の拡張機能を入れると、構文チェックで、 Write-Host を、Write-Output か、Write-Verbose に変えろって警告される PowerShell/PSScriptAnalyzer https://github.com/PowerShell/PSScriptAnalyzer/blob/master/RuleDocumentation/AvoidUsingWriteHost.md
393 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 08:04:57.13 ID:H0Dcbe9T.net] 漏れは回線速度を、NETFLIX で測っている https://fast.com/ja/
394 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 10:09:26.78 ID:U7B7s7qz.net] >>388 (.\speedtest.exe -L | select-string 'OPEN Project \(via 20G SINET\)' | %{$_ -split ' '}[0])[1]
395 名前:392 mailto:sage [2020/06/17(水) 10:13:28.30 ID:U7B7s7qz.net] >>388 あれ、speedtest.exe の「-L」って、ネットワーク的に近い場所のサーバを 表示するだけで、実際の計測はしてないようですけど、これで良いんですか? >>388 の続きがある、ってことですかね。
396 名前:392 mailto:sage [2020/06/17(水) 10:21:19.19 ID:U7B7s7qz.net] >>388 タスクスケジューラで回すことを考えてるのかも知れませんが、単に .\speedtest.exe -s 6766 とか .\speedtest.exe -s 15047 といった感じにしないのはなぜですか? speedtest.exe -L を実行する意図がよく分かりません。
397 名前:392 mailto:sage [2020/06/17(水) 10:29:32.27 ID:U7B7s7qz.net] >>388 連投ごめんなさい、speedtest.exe は出力形式を CSV とか JSON とか色々 選べますので、ヒューマンリーダブルのものを加工するよりもそっちのほうが 簡単だと思います。 実行例:近隣サーバの列挙 PS > .\speedtest.exe -L -f csv "ID","Name","Location","Country","Host" "24333","Rakuten Mobile , Inc","Tokyo","Japan","ookla.mbspeed.net" "15047","OPEN Project (via 20G SINET)","Tokyo","Japan","speed.open.ad.jp" "28910","fdcservers.net","Tokyo","Japan","lg-tok.fdcservers.net" 〜以下略〜 実行例:サーバを指定した計測 PS > .\speedtest.exe -s 15047 -f csv "OPEN Project (via 20G SINET) - Tokyo","15047","4.43","0.605","0","72540509","45781634","871440390","582254568","https://www.speedtest.net/result/c/e998102d-d04a-4258-9aae-6dd3afbbf323"
398 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 15:45:25.40 ID:UcA8Gcsf.net] ジョブをパイプの途中で使いたいと考えています 1 .. 3 | % { $_; sleep 1 } | & { process { ">$_" }} これは1秒間隔で結果が出ます Start-Job { 1 .. 3 | % { $_; sleep 1} } | Receive-Job -wait これも1秒間隔で結果が出ます 1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait これは結果がまとめて出ます 1秒間隔で結果を得るにはどうすれば良いのでしょうか # パイプラインで入出力がsjisのコマンドとutf8のコマンドを通すのが最終目的です # データ生成 | sjis入出力 | utf8入出力 みたいなイメージ # パイプラインでエンコーディングを混在させるのに$OutputEncodingの方は # スコープで分ければすみますが、[console]::OutputEncodingはスコープ無関係 # なのでジョブで分けようかと
399 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 16:28:19.33 ID:pLBooGKC.net] なんでワンライナーでやる必要があるのかね、こういうの 保守とか考えないのかね
400 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 16:55:10.36 ID:/58stVp5.net] パイプの弊害か
401 名前:デフォルトの名無しさん mailto:sage [2020/06/17(水) 17:44:32.75 ID:UcA8Gcsf.net] >>397 コマンドラインで結果をすぐに見たいからですね ページャーにつないで欲しい結果が出てきたら確認して終了 ステップごとに完了待ちしてたら時間がもったいない
402 名前:デフォルトの名無しさん [2020/06/17(水) 23:59:11.03 ID:H0Dcbe9T.net] >>396 >1 .. 3 | % { $_; sleep 1 } | Start-Job { process { ">$_" }} | Receive-Job -wait 1 .. 3 | % { $_; sleep 1 } この部分を、Start-Job の中に入れたら?
403 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 05:52:46 ID:7bz/apiR.net] $ary_names = @('太郎','次郎','三郎','四朗','五郎') write-output $ary_name[@] #bashの記法 太郎,次郎,三郎,四朗,五郎 的なことをしたい。※区切り文字はなんでも可。 現状、配列に文字列をくっつけると1行で出るので write-output ("a"+$aaa).trim("a") という強引な方法をとっております。もっとPowershell的にスマートな方法があれば お教えくださいませ。
404 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 06:58:53 ID:3wPjj0xg.net] $ary_names -join ','
405 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 07:18:11.97 ID:7bz/apiR.net] >>402 ありがとうございます!
406 名前:デフォルトの名無しさん mailto:sage [2020/06/18(木) 09:01:24.17 ID:hwvpLd3O.net] >>400 それだと最終目的のためにはStart-Jobの入れ子が必要になるなあ 制御不能になりそうだし面倒なので避けたい cmd.exeを使うことにします
407 名前:デフォルトの名無しさん [2020/06/19(金) 06:41:17 ID:RNyMoV2a.net] $s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds} 2秒間隔、トータル10秒という結果に困惑している
408 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 07:30:31.94 ID:JIIBGf6G.net] >>405 二重ループを期待してたってこと?
409 名前:405 [2020/06/19(金) 08:42:12.76 ID:RNyMoV2a.net] 最初は2秒、それから1秒間隔でトータル6秒だと思ってた 1秒待ちをStart-Sleepでなく別のプロセスで待たせても変わらなかった
410 名前:デフォルトの名無しさん [2020/06/19(金) 08:51:47 ID:GhHOGZr1.net] パイプつなぎはいわゆるgenerator(PowerShellでの呼び方は知らない)になるってことかな?
411 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 08:52:39 ID:JIIBGf6G.net] 1に対して最初のfor-eachの中身処理した後に次のfor-eachの中身処理。 2に対して... 3に対して... 4に対して... 5に対して... ふたつのfor-eachの中身がどういう順に処理されてるか確認できるように表示を工夫してみたら?
412 名前:405 [2020/06/19(金) 09:08:23.61 ID:RNyMoV2a.net] そこはなんとなくイメージできたんでもういい パイプラインの各段を別のプロセスにすると6秒で終了する 同じように6秒で終了すると思ってたら違ったんで戸惑ったというお話
413 名前:405 [2020/06/19(金) 11:12:17.79 ID:RNyMoV2a.net] $s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { process { Start-Sleep 1; ">${0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds} 別スレッドを指定したらトータル6秒になった 一人研究発表会になっちまったな。すまぬ。
414 名前:405 [2020/06/19(金) 11:40:12.67 ID:RNyMoV2a.net] よく見たら結果がおかしい。お手上げだ。諦めた。
415 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 17:20:54 ID:qQd5c1Zr.net] >>397 おまえはpythonでもつかってろ
416 名前:デフォルトの名無しさん mailto:sage [2020/06/19(金) 18:23:41.02 ID:OOcqKGQK.net] ラクダが笑ってんぞ
417 名前:405 [2020/06/19(金) 21:01:31.39 ID:RNyMoV2a.net] できたーーーー $s=[datetime]::Now; 1 .. 5 | ForEach-Object { Start-Sleep 1; ">{0}" -f $_ } | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds} にちょい足しして $s=[datetime]::Now; 1 .. 5 | ForEach-Object -Parallel { Start-Sleep 1; ">{0}" -f $_ } -ThrottleLimit 1 | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds} にしたらStart-ThreadJobを使った時より遅いけど簡単に予想してた結果になった お騒がせしました
418 名前:405 [2020/06/19(金) 21:15:58.78 ID:RNyMoV2a.net] こ、今度こそできたー $s=[datetime]::Now; 1 .. 5 | Start-ThreadJob { $input | ForEach-Object {Start-Sleep 1; ">{0}" -f $_ }} | Receive-Job -Wait -AutoRemoveJob | ForEach-Object { Start-Sleep 1; ">{0} {1}" -f $_, ([datetime]::Now - $s).TotalSeconds} やっぱりこれが最終版ということにしたい お邪魔しました
419 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 00:50:50.12 ID:na6pkPqz.net] はいつぎ
420 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 08:11:14.95 ID:wKnheY+E.net] Powershellを使いこなすにはcomを知らなければならないと聞いたのですが、 comについてはどうやって学ぶのがオススメですか? ググラビリティの悪い単語なので、 思うように検索できません Excellの機能を使ってあれこれしたいです
421 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 09:03:13.32 ID:5oXecify.net] COM の使い方 https://docs.microsoft.com/ja-jp/previous-versions/direct-x/cc351700(v=msdn.10)
422 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 11:29:31 ID:XppcwtFP.net] Powershellを使い始めました 皆さん、こんなの全部覚えてるんですか? どうやって覚えました? ファイル開いて書き込むだけで こんなにもたくさん覚えないといけないって 大変だったんじゃないですか? $output_file = "C:\bin\hoge.txt" $sw = New-Object System.IO.StreamWriter($output_file, $false, [Text.Encoding]::GetEncoding("UTF-8")) $sw.WriteLine("aaa") $sw.WriteLine("あああ") $sw.Close() $sw.WriteLine("あああ") $sw.Close() この辺はまだ、覚えられるのですが、 New-Object System.IO.StreamWriter←InputOutputを、ストリームにライトするんだろうな $output_file, $false, ←ファイル名と、追記、上書を指定するんだろうな。 [Text.Encoding]:: ←なんで[]包むんだ、:: ←このダブルのコロンは何だ、 GetEncoding("UTF-8")) ←何でファイル作ってるのにGetなんだ、 単純に $mojiko-do="UTF-8"で New-Object System.IO.StreamWriter($output_file, $false,$mojiko-do)じゃないんだと、 覚えることや、なぜこうなってるんだに少々ビビってます。 皆さんが、どうやってこんなに複雑で面倒なものを覚えたか、コツがあったら教えてください。
423 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 11:33:23 ID:XppcwtFP.net] ほかにも、メソッド、プロパティ?クラス?で書き方がものすごいたくさんあるようで、めまいがします。 覚えれば仕事が楽になることは分かっているので、頑張りたいところなんですが あまりの複雑さに、皆さんがどうやって覚えたのか、コツがあればぜひともお教えください。
424 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 11:46:07.33 ID:6HpZ1NhN.net] 良くも悪くも.NETが前提だから 先にC#を覚えるのがコツかな
425 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:28:41.13 ID:sltMp+ny.net] コード量が多いってことと覚えなきゃいけない知識量は必ずしも一致しないからな Perlみたいに省略できまくるワンライナーのほうがスパゲティったときわけ分からなくなる
426 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:29:17.17 ID:dcvMDCGE.net] とにかく書いて動かす やってみる、作ってみる 国語力、英語力は少しつけようとする
427 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 12:31:14.10 ID:E6EedD+K.net] .NETなんて前提にしなくてもマルチプラットフォームで使える文法を身につけるのが先
428 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 13:13:11.69 ID:w0A+CU3q.net] >>420 ファイルに書き込むだけならコマンドレットで足りる 痒い所に手が届かない時にググりながら.NETをボチボチ使って行けば良い
429 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 13:13:46.53 ID:F3e6GYXo.net] 正直言ってPowerShellは覚える必要ない スクリプトファイルを作って使うならC#を使うのと大差ない それならC#を覚えて使う方がいい コマンドラインシェルとして使うなら.NETやらCOMやら取り込む使い方は 何かあった時にシェルが巻きぞえになって、シェルを殺すしかなくなる そうならない程度に言語自体の機能だけで使うなら、とりたて覚えるほどでもない
430 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 13:42:16.03 ID:dcvMDCGE.net] 本番環境その場で場当たり的にコマンド打つのはあり得ないしな まあすごくユルい会社なら知らんが
431 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 13:50:27.59 ID:zwBEwaPL.net] >>420 その書き方は.NETライブラリを使っているのでPowershellの初歩の枠を越えてる 追記するだけならこう $output_file = "C:\bin\hoge.txt" "aaa" | Out-File $output_file -Append -Encoding UTF8 "あああ" | Out-File $output_file -Append -Encoding UTF8 こうしてもいい "aaa", "あああ" | Out-File $output_file -Append -Encoding UTF8 UTF16でいいならこれ "aaa", "あああ" >> $output_file Powershell 5以前には欠陥があって、BOMなしUTF8を新規作成する簡単な手段がなかった だからStreamWriterを持ち出すようなサンプルが普及していて、初歩のはずなのに難しいと感じる要因になってる
432 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 14:13:22.51 ID:Xz+FX1Oy.net] 必要はないけど覚えたら便利
433 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 14:35:58.75 ID:YZMPfrl8.net] 最初から暗記する必要はなくて、機能を一覧表にしておいて 必要に応じてそれを参照、コピペすればいい 出現頻度の高いものは自然と覚える いずれにしても手打ちするのは時間の無駄なので コピペ推奨
434 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 16:51:19.56 ID:KBDfWM5t.net] 習得してない人達のアドバイスは聞く必要がない あっだからできないんだっていう見本にはなるけど
435 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 16:58:42.46 ID:py+iqQxS.net] 俺以外のアドバイスは聞く必要がない
436 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 17:35:07.43 ID:6sC7z1nS.net] >>420 >コツがあったら教えてください。 PowerShell に限った話じゃないけど、学校の授業みたいに「勉強ありき」で 努力するよりも、「これをやるためには PowerShell を使うしか無い」という 状況に追い込まれると覚えやすいですね。 あと、積極的に英語のフォーラムなどから情報を得るようにしたほうが良いと思います。 やはり、日本語と英語では情報量が雲泥の差ですので。 Google 翻訳を使えば何とかなります。
437 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 20:10:35.90 ID:WPfafdOl.net] >>434 > 「これをやるためには PowerShell を使うしか無い」という状況 そんな状況は、普通は無い。 あるとすれば、>>428 が言った > 本番環境その場で場当たり的にコマンド打つ ぐらい。
438 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 23:24:31.04 ID:tXS4Zxv6.net] PowerShell(PS)で、ビジネスロジック・複雑なものを書いたら、ダメ! 基本的に、CSV・JSON などは、Ruby で書いて、 起動部分だけを、コマンドプロンプト・PS・VBS などで作る
439 名前:デフォルトの名無しさん mailto:sage [2020/06/20(土) 23:38:30.06 ID:sltMp+ny.net] Pythonにしてくれ頼む
440 名前:デフォルトの名無しさん mailto:sage [2020/06/21(日) 08:39:56.92 ID:PKUYu7rs.net] >>435 >そんな状況は、普通は無い。 仕事で MS のエンタープライズ系製品を扱ってると、嫌というほど そういう状況に遭遇しますね。 Windows Server, Exchange, SQL Server, Office 365 あたりの 設計、構築、運用に携わってれば日常茶飯事です。 そういう仕事に携わるようになってから PowerShell を覚えた、って人が 多いと思ったけど、そうでもないのかな?プログラム板だから違うのかな?
441 名前:デフォルトの名無しさん mailto:sage [2020/06/22(月) 18:21:34.75 ID:njZ7JPCW.net] >>0438 君は正常。
442 名前:デフォルトの名無しさん [2020/06/24(水) 07:34:20.49 ID:9MFoHisW.net] コマンドプロンプトでバッチを作るとちょっとした自動化に便利というのを最近知って調べたら 今はPowerShellCoreが現行とたどり着いたが やっぱり移行するしないで揉めてる
443 名前:436 mailto:sage [2020/06/24(水) 08:08:25.26 ID:rM4tv+8j.net] さすがに、バッチでプログラミングしてはいけない! 可読性が低すぎる Ruby スクリプトなどを起動するだけにしておくべき
444 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 08:40:10 ID:L+v/qVAN.net] >>440 用途・要件次第。 業務利用という前提だけど、自分だったらこういうポリシーで緩やかに移行する。 ・既存の cmd バッチや WSF、VBS → 基本的には移行(移植)しない ※例外:改修が必要になった場合は個別対応 ・新規 → 基本的には PowerShell で作るべき ※例外:極々単純なもの、自分だけが使い捨てするもの
445 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 08:44:24 ID:/txx2vwO.net] 可読性w 可読性に煩いやつ程低レベルだよね 三項演算子とか
446 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 09:05:28.99 ID:W7e3ICMc.net] >>441 お前はRuby禁止のスレでRubyでは〜Rubyでは〜とやるのをやめろ。ノイズにしかならない糞レスはスレの可読性を下げるだけだ。
447 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 09:51:09 ID:LpqCs0qI.net] 440で思い出したけど、powershell coreって今どうなってるんや 自分は実行環境としては5.1をメインで使ってるけど、みんなどこら辺なんや
448 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 10:09:13.32 ID:wIzfCOgT.net] win10プレインストールしか使っとらんわ というかツール勝手に入れられない客先環境で戦うためのツールって認識
449 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 10:48:39.06 ID:oYgVDO6A.net] >>446 > ツール勝手に入れられない客先環境で戦うためのツール ほんそれ。 いまメインでやってる案件だと、お客さんから貸与されてる作業用 PC があって、 お客さんの環境にはそのマシンしか繋げられない。もちろん、世に数多とある便利ツールを 好き勝手に入れることは出来ない。 でも PowerCLI などの PowerShell モジュールのインストールは純正管理ツール扱いで 許可されてるので、構築とか保守作業では PowerShell スクリプトを使いまくってる。 いちいちマウスでカッチンカッチンやってたら、日が暮れちゃうからね・・・。
450 名前:デフォルトの名無しさん [2020/06/24(水) 12:17:32.10 ID:9MFoHisW.net] >>442 なるほど。 どうも。
451 名前:デフォルトの名無しさん [2020/06/24(水) 21:01:47.98 ID:jVaXlMW4.net] scriptblock[] を受け取って、scriptblockをそれぞれスレッドで動かして パイプでつないで実行するfunctionを書きたいんだがうまく書けない ようするに $s = [datetime]::Now 1 .. 10 | % { sleep 1; ">$_" } | % { sleep 1; ">$_" } | % { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $s).TotalSeconds } を実行すると >>>1 3.1179897 >>>2 6.1354357 >>>3 9.1403334 >>>4 12.1434852 と3秒間隔で結果が出るんで $s = [datetime]::Now threadedpipe @( { 1 .. 10 }, { % { sleep 1; ">$_" } }, { % { sleep 1; ">$_" } }, { % { sleep 1; ">{0} {1} " -f $_, ([datetime]::Now - $using:s).TotalSeconds }}) みたいに書いて、最初が3秒目で1秒間隔で結果出力したい いろいろ試して諦めたんだが、そもそもPowerShellではこういうfunctionは書けないの?
452 名前:デフォルトの名無しさん mailto:sage [2020/06/24(水) 22:06:24.12 ID:VGKuFIs7.net] powershellのコマンドはプロセス作らないから無理じゃね マルチスレッドをそんなお手軽に制御できたら夢みたいだけど
453 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 00:26:33.50 ID:GAspYPHa.net] あれでもForeach-object あたりにparallelこなかったっけ
454 名前:デフォルトの名無しさん [2020/06/25(木) 00:40:28.26 ID:BtDpxRK3.net] 並列に動かすってことは普通にやれば1秒間隔じゃなくてほぼ同時に出力されることになる どういう意図なのかはわからないけど無理やりやるんなら入力側で一秒ずつ待ってやるか $sw = [Diagnostics.Stopwatch]::StartNew() 1..10 | % { ">$_"; sleep 1 } | % -pa { sleep 1; ">$_" } | % -pa { sleep 1; ">$_" } | % { "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds } もしくは出力側で一秒ずつ待ってやるか 1..10 | % -pa { sleep 1; ">$_" } | % -pa { sleep 1; ">$_" } | % { sleep 1; "{0} {1:F2} " -f $_, $sw.Elapsed.TotalSeconds }
455 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 00:44:41.05 ID:LTqYJW83.net] シェルスクリプトみたいに各プロセスが並列的に流れてくるテキストを処理して… みたいのをやりたいのかなと推測してる
456 名前:デフォルトの名無しさん [2020/06/25(木) 08:46:34.24 ID:L3VdfOGw.net] そうそうそういうこと イメージとしては https://ja.wikipedia.org/wiki/命令パイプライン パイプラインのステージごとに1スレッド起動して全データで使いまわしたい 4ステージのパイプラインなら4スレッドで動かす ForEach-Object の -Parallel はデータごとにスレッドを起動するから別物 スレッドプールで使いまわすにしてもちょっと違う ちなみに sleep させてるけど時間がかかる処理の代用ね
457 名前:デフォルトの名無しさん [2020/06/25(木) 08:53:56.13 ID:L3VdfOGw.net] こっちの方がイメージが近いかも https://ja.wikipedia.org/wiki/パイプ_(コンピュータ)
458 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 09:37:48.10 ID:piKX+XZq.net] 普通にワンライナー諦めれば次の作業にすすめるんじゃない?
459 名前:デフォルトの名無しさん [2020/06/25(木) 09:50:30.28 ID:L3VdfOGw.net] ワンライナーなんか関係ないんだけど 原理は >>416 にあるから、それを簡単に実現できるように function threadedpipe { param([scriptblock[]] $sbs) を書きたいと言ってる
460 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 09:56:30.77 ID:1+fg5ofc.net] あぁまたこいつだったか
461 名前:デフォルトの名無しさん [2020/06/25(木) 10:49:27.00 ID:dZiolc11.net] >パイプラインのステージごとに1スレッド起動して全データで使いまわしたい これが根本的に間違ってるだろ。 パイプで連結するってことは、前後(依存)関係があるってことで、それぞれをスレッド分割したところで全く意味がない。
462 名前:デフォルトの名無しさん [2020/06/25(木) 11:16:02.92 ID:L3VdfOGw.net] 何言ってんの? パイプラインってものをわかってない これスクリプトファイルにして試してみ function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }} filter mul10 { sleep 1; $_ * 10 } filter add1 { sleep 1; $_ + 1 } filter fmtresult { "{0} {1}" -f $_, ([datetime]::Now - $script:s).TotalSeconds } "スレッドなし" $s = [datetime]::Now recvdata | mul10 | add1 | fmtresult "ステージごとに別スレッド" $s = [datetime]::Now Start-ThreadJob { filter add1 { sleep 1; $_ + 1 } Start-ThreadJob { filter mul10 { sleep 1; $_ * 10 } Start-ThreadJob { function recvdata { foreach ($i in 1 .. 10) { sleep 1; $i }} recvdata } | Receive-Job -Wait -AutoRemoveJob | mul10 } | Receive-Job -Wait -AutoRemoveJob | add1 } | Receive-Job -Wait -AutoRemoveJob | fmtresult
463 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 11:35:16.74 ID:emOdy//g.net] きたない
464 名前:デフォルトの名無しさん [2020/06/25(木) 11:41:54.06 ID:L3VdfOGw.net] んだからfunction threadedpipeを作って見やすくしたいっつってんだろ
465 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 12:35:03.44 ID:WfI766VN.net] そこじゃないだろ
466 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 13:13:44.27 ID:sZY/v5D+.net] >>462 単に興味本位で聞くんだけど、差し支えなかったら教えて。 具体的にどんなデータをどんな状況で処理しようとしてるの?
467 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 16:37:26 ID:MV6c2Qez.net] なにけんけんしてんの?
468 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 20:19:35.75 ID:hxSOAVLp.net] >>462 繰り返しになるけどPSはunixシェルと仕組みが全然違うから厳しいと思う パイプのバッファリングはどう仕組むつもりなの?
469 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 21:11:04 ID:L3VdfOGw.net] いまだにこんな見当違いを目にしてびっくり 試せるように >>460 を書いたのに試してないのかな Start-ThreadJobが使えない環境なら、代わりにStart-Jobを使っても動くぞ スレッドとジョブの起動速度差で少し遅いけどちゃんと動くから試してみろよ というわけで、動作することはちゃんと確認できてる 俺が聞いたのは、>>460 みたいにごちゃごちゃ書くのが面倒だから threadedpipe @({recvdata}, {mul10}, {add1}, {fmtresult}) のように書けるような function threadedpipe が作れるかどうかなの まあ制約付きで一応できたんだけど
470 名前:420 mailto:sage [2020/06/25(木) 23:05:56.80 ID:ZIjS4UcO.net] とりとめもなく、推敲もなく適当に書き散らかしてごめんなさい レスありがとうございます 理解して、Powershell組むのはかなり困難そうなので Myコピペライブラリでも作って、理解しないでも組めるような 体制を作っていこうと思います ありがとうございました。 ちなみにファイル作成は >>で用は足りました
471 名前:デフォルトの名無しさん mailto:sage [2020/06/25(木) 23:48:32.33 ID:GAspYPHa.net] きたないコードで目的も意味不明 まさに自慰
472 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 01:13:06.63 ID:UcUHbC3j.net] 質問者より明らかにレベル低いのにイチャモンだけは一流だな だまってろよお前は
473 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 05:47:21.88 ID:ZKLfm8jC.net] >>466 > パイプのバッファリングはどう仕組むつもりなの? 普通にFIFOを実装するだけだろ 何が難しいと思ってるんだ?
474 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 06:30:47.02 ID:uqHA56uo.net] >>470 お前もだなw
475 名前:デフォルトの名無しさん [2020/06/26(金) 07:02:56.31 ID:rwBI62Tc.net] ここがどうだとかじゃなくて、 汚いとかって言い方傷つくだろうが
476 名前:デフォルトの名無しさん mailto:sage [2020/06/26(金) 10:47:41 ID:lJi08xny.net] >>449 こんな感じ? ただ動くだけのサンプル。エラー処理とかオブジェクトの後始末とか何もしていない。 function Invoke-ThreadedPipeline([ScriptBlock[]] $ScriptBlock) { $p = $ScriptBlock | % { $p = [RunspaceFactory]::CreateRunspace().CreatePipeline() $p.Commands.AddScript($_) $p.Runspace.Open(); $p.InvokeAsync() $p } while ($p = @($p | ? {-not $_.Output.EndOfPipeline})) { $i = [Threading.WaitHandle]::WaitAny(($p | % {$_.Output.WaitHandle})) $o = $p[$i].Output.Read($p[$i].Output.Count) if ($i -lt $p.Length - 1) { $null = $p[$i + 1].Input.Write($o, $true) if ($p[$i].Output.EndOfPipeline) {$p[$i + 1].Input.Close()} } else { $o } } } $o = Get-Date Invoke-ThreadedPipeline ( {1..10}, {process {Start-Sleep 1; ">$_"}}, {process {Start-Sleep 1; ">$_"}}, {process {Start-Sleep 1; ">$_"}} ) | % {'{0} : {1}' -f $_, (New-TimeSpan $o).TotalSeconds}
477 名前:474 mailto:sage [2020/06/26(金) 10:49:06 ID:lJi08xny.net] スクリプトブロックのバインドとか、スコープとか、面倒な問題は見ないふり。 そもそも、PowerShell のスコープはスレッドセーフにはできていないので、 問題に対処するのは、ほとんど不可能なのかも。
478 名前:デフォルトの名無しさん [2020/06/26(金) 12:23:31.85 ID:hzH3p+iw.net] IT掲示板群 ttp://x0000.net/forum.aspx?id=15 学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net 数学 物理学 化学 生物学 天文学 地理地学 IT 電子 工学 言語学 国語 方言 など simulationライブラリで純粋な関数式プログラミングをする ttp://x0000.net/topic.aspx?id=3631-0 UIライブラリ (C#, 2D) を作ったよ ttp://x0000.net/topic.aspx?id=3688-0 連続と離散を統一した! ttp://x0000.net/topic.aspx?id=3709-0 4Dエンジン(画像有り) ttp://x0000.net/topic.aspx?id=3677-0 matrixのライブラリ ttp://x0000.net/topic.aspx?id=3711-0 ある強力なFor関数 ttp://x0000.net/topic.aspx?id=3630-0 SQLライブラリ ttp://x0000.net/topic.aspx?id=3675-0 PS malloc / free を実装してみた (C#) ttp://up.x0000.net/files/TMallocTest.zip
479 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 04:12:29.94 ID:sb7IOZLx.net] 教えてください。 powershell.exeに "powershell.exe"が見つかりません。名前を正しく入力したかどうかを確認してから、やり直してください。 ってダイアログが出て怒られるのだが、 これってどういうことですか?
480 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 08:19:48.13 ID:EbIp5fqD.net] >>477 単なるウケ狙いなら別だけど、本気でなんとかしたいのならば、 前後の経緯を含めて詳細に説明してもらわないとなんとも言えない
481 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:06:15.18 ID:sb7IOZLx.net] そうですねすみません。 Python3.6、Bazel 2.0.0、MSYS2、Visual C++ Build Tools 2019、WMF5.1、 CUDA toolkit 10.1、cuDNN 7.6を入れて、Tensorflow 2.2をビルド。 x64 Native Tools Command Prompt for VS 2019から、bazel buildでビルド中に、 「powershell.exeが見つかりません。〜」のダイアログが出る。ダイアログの左上はpowershell.exe。 放置すると最大4個出てビルトが一時停止するが、ダイアログの「OK」で閉じると再開する。しばらくすると、また出る。 PCは、 OS:Windows7pro sp1 x64 CPU:Core2Quad Q9550 GPU:Geforce GTX1650super MEM:8G
482 名前:デフォルトの名無しさん mailto:sage [2020/07/05(日) 09:07:58.29 ID:sb7IOZLx.net] です。 何か気が付くところがあれば教えてください。
483 名前:デフォルトの名無しさん [2020/07/06(月) 15:26:47.18 ID:ENMHKR++.net] powershell.exeが見つからない。 だからこそ、poweshell.exeが見つからなくてはと思っている。
484 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 16:00:54.38 ID:AV85qEaL.net] はいすべった
485 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 19:14:17.53 ID:mGwQnOrU.net] PATHが通ってないんじゃないの サポート切れのWindows7を使い続けてて大丈夫か
486 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 19:34:12.08 ID:BdiDJNUx.net] 建前上esuあるから必要な部署はそれ当てて使ってるよ
487 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 20:54:49 ID:zdAH+P0d.net] win7だって(自分で削除しなけりゃ)普通にpathは通っているはずだけど まあ確かめてみることだね
488 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 20:56:13 ID:0H1iFJXS.net] ダイアログが出てる時にタスクの中にpowershell.exeがいませんでした。 誰が出しているのか追いかけてみます。 お騒がせしました。
489 名前:デフォルトの名無しさん mailto:sage [2020/07/06(月) 21:05:43.69 ID:fLXZOc4N.net] 32bit版 or 64bit版を探しにいってるんじゃないの?
490 名前:デフォルトの名無しさん [2020/07/07(火) 12:27:32.25 ID:Csl+eNq2.net] Windows 10 なら、コマンドプロンプトで、 where powershell と入力すると、 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
491 名前:デフォルトの名無しさん mailto:sage [2020/07/07(火) 21:09:26.46 ID:IcFS4Epu.net] whereは10だけじゃなくて7にも標準搭載されてる 98や2000ならリソースキットに含まれてる
492 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 09:02:38.89 ID:n9XGFFVi.net] NuGetパッケージ使いたい時ってどうすれば使えんの 例えばSeleniumを使いたい場合C#なら dotnet add package Selenium.WebDriver これで使えるようになるけどPSの場合はどうすれば
493 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 21:53:51.85 ID:I6xaQmI+.net] Make using NuGet packages installed with Install-Package easier to use - make Add-Type support NuGet packages https://github.com/PowerShell/PowerShell/issues/6724
494 名前:デフォルトの名無しさん mailto:sage [2020/07/17(金) 09:19:06 ID:6MuP2T5H.net] v6.2.7 https://github.com/PowerShell/PowerShell/releases/tag/v6.2.7 v7.0.3 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.3
495 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 01:22:35.38 ID:r0N61jeX.net] 明治の「 おいしい牛乳 」ってあるけど 「 おいしい 」って自分で付けちゃうなんて 強気というかふてぶてしいよな? 「 PowerShell 」からも同じにおいがするぜ
496 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 01:48:02.23 ID:UQ3TOH2s.net] Apple & IBM「…」
497 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 10:09:22 ID:860vhoVN.net] Powerこそ力
498 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 10:37:13 ID:56CkEgqB.net] shellこそ貝殻!
499 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 14:36:37.83 ID:jOZb/2Gr.net] 💪🐚
500 名前:デフォルトの名無しさん mailto:sage [2020/07/24(金) 14:40:35.13 ID:30uJqngI.net] powerpoint 力点?
501 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 12:02:30 ID:gYncIR+S.net] >>131 >>132 pwshw 普通のコンソールアプリだとリンクオプション変えるだけでできる気がするが 何が長引いとるんや? windows以外にも対応するのが大変なんかな
502 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 17:41:10.43 ID:e4hfVbk2.net] ある値で、とあるファイルをgrep検索かけて grepで引っかかったら 変数に0、grepで引っかからなかったら変数に1 ということをしたいのですが、どんな方法で実現できますでしょうか。 linux でいうとこういうものです # cat hoge.txt | grep abc ←知りたいのはここ相当のもの # echo $? 0 ←abcが引っかかった # # cat hoge.txt | grep abc ←知りたいのはここ相当のもの # echo $? 1 ←abcが引っかからなかった # よろしくお願いいたします。
503 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:00:29.06 ID:3scCogHG.net] $r = gc hoge.txt | sls abc if ($r -ne $null) { # 引っかかった & $rにはslsの結果 } else { # 引っかからない }
504 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:07:53.30 ID:e4hfVbk2.net] >>501 ありがとうございます!ばっちりです。 追加で申し訳ないんですけど、これを変数をgrep対象にして 戻り値を取得する事ってできますでしょうか? > Write-Output $hoge aaa ←こんな感じで複数行はいってる変数 bbb ccc ddd eee ffff
505 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 18:56:58.07 ID:3scCogHG.net] $hoge | sls abcでいいんじゃね
506 名前:デフォルトの名無しさん [2020/08/13(木) 19:18:09 ID:rGVB7rFL.net] (cat hoge.txt) -as [string] -cmatch "abc" とか? TrueFalseになっちゃうけど
507 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 20:45:21.78 ID:hEr1UF+A.net] ふつーはifに直接つっこむ if (Select-String abc hoge.txt -CaseSensitive -Quiet) { if ($hoge | Select-String abc -CaseSensitive -Quiet) {
508 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 21:13:55.51 ID:takIe+yE.net] 個人的には>>504 のTrueFalse管理が好きかな 01なら簡単に変換出来るし $r = (cat hoge.txt) -as [string] -cmatch "abc"; [int]!$r;
509 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 22:02:49.13 ID:hEr1UF+A.net] 巨大ファイルを全部なめたいの?
510 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 05:21:16 ID:SCMnTycc.net] 漏れは、Windows 10, WSL, Ubuntu 18.04 を入れているから、 grep は、Linux 側でやるか、Ruby などを使う Windows側のPowerShell などでは、やらない。 複雑なスクリプトは、Linux側のRubyでやる
511 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 07:16:55.02 ID:fFUBtJk9.net] >>501 gcの結果って配列でしたっけ? 配列の$nullとの比較の場合、nullを左辺にしないといけないんじゃなかったでしたっけ? もうpowershell側で修正されてるかな
512 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 08:15:51.24 ID:beR79RQl.net] 推奨 NG ワード: Ruby 漏れ
513 名前:デフォルトの名無しさん [2020/08/14(金) 23:17:26.92 ID:SCMnTycc.net] >>502 Linux のgrep なら、 AND 検索、パイプで grep -i 単語1 ./* | grep -i 単語2 OR 検索、-e で grep -i -e 単語1 -e 単語2 ./* 途中で改行しても、同じ grep -i "単語1 単語2" ./*
514 名前:デフォルトの名無しさん mailto:sage [2020/08/15(土) 16:13:38.92 ID:qyy6aN9C.net] >>509 -eqの配列フィルタのことだと思うけどgcやslsは$nullを含む配列は返さないから問題ない
515 名前:デフォルトの名無しさん mailto:sage [2020/08/24(月) 20:47:25.66 ID:VQq4kdHe.net] ストアにPowerShell Preview登場 https://www.microsoft.com/ja-jp/p/powershell-preview/9p95zzktnrn4
516 名前:デフォルトの名無しさん mailto:sage [2020/08/25(火) 20:56:27.18 ID:+ct4ya2Y.net] GitHubのPreviewとどう違うのかと思ったら、アイコンが違うな なんか気持ち悪い色になってる
517 名前:デフォルトの名無しさん mailto:sage [2020/08/25(火) 22:59:28.31 ID:SeBJUZXv.net] powershellスクリプトで高DPI対応をしたいのですが、可能でしょうか? やりたい事は高DPI環境で画面キャプチャを取ることですが、 スケーリングに応じて実際の解像度より小さい値が画面サイズとして返ってきてしまいます。 SetProcessDPIAware()を最初に呼んでも効果がありませんでした。 普通のアプリのようにEXEにmanifestファイルを埋め込むこともできないので無理でしょうか?
518 名前:デフォルトの名無しさん [2020/08/29(土) 13:02:51.79 ID:z6uRv8YY.net] 使ってるエクセルアドインのアプデが不定期に入るんだけど、 その時はエクセルを閉じなきゃいけないので、エクセルVBAでアプデ処理できない なのでVBSでセンドキーしてたんだけど、APIなら画面ロック状態でもOKと でも素のVBSでAPIを使うには、エクセルを呼び出すと(エクセル4マクロ) お、パワーシェルはAPIが使えるスクリプトか、やっと使う時が来た ググると MessageBox のサンプルはあるものの、肝心の FindWindow と PostMessage のサンプルがない MessageBox なんかどんなバッチで使うんだと 適当に書いてみたら、しれっとウィンドウハンドル0で沈黙 ググったら、管理権限がどうとかいう話もあり、それ以上は調べてないけどハマり警戒で断念 その話がほんとだとすると、サードパーティー製のアドインを起動してる標準ユーザーに管理権限を持たせるわけにいかない(スパイ警戒) お、ワードにもVBAあるじゃんかで普通に解決w VBA最強w バッチはVBAとDOSが安定 ドキュメントを持たないVBAのみのスクリプト、「VBAS」をリリースした方が良かったんじゃないかね (パスワードの暗号化だけパワーシェル使ってるが) もっと言うと、VBAでドットネットコンポーネントを呼べるようにするとか(呼べる?) んでパワーシェルはわざわざ長い名前のドットネットコンポーネントを呼び出してセンドキーのサンプルばかり センドキーならVBAでもVBSでもいいじゃんていう 名前も短いし
519 名前:デフォルトの名無しさん [2020/08/29(土) 13:37:55.53 ID:z6uRv8YY.net] 関係ないけどアクセス権て、最重要が情報漏洩、つまり読み取り権限であって、インストール権限なんかどうでもいいんだよな ソフトなんか他社製だし秘密でもなんでもない 壊れても、再インストールするだけ
520 名前:デフォルトの名無しさん [2020/08/29(土) 13:53:57.66 ID:z6uRv8YY.net] ていうか WindowsUpdate や OfficeUpdate がまさにその考え方だよね 最新化は自動であるべきで権限は不要 Officeのアドインもそうあるべき 初回だけ許可が必要で、アプデは自動
521 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 16:26:04.73 ID:BYm68LqT.net] ID:z6uRv8YY スレ住民に言いたいこと・聞きたいことがあるのであれば、もう少し簡潔に書いてもらえませんか? あと、2〜3行ならともかく >>516 ぐらいのボリュームで書くなら、読点だけじゃなく句点も省略しないほうが良いですよね。正直、読みづらい。 申し訳ないのですが、斜め読みすら断念しました。
522 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 17:29:18.45 ID:uW7NzDft.net] >>519 読む必要ないよ PS腐してVBAマンセーしてるだけ セキュリティの基本も知らず、rwxのxなんて無意味って宣ってる
523 名前:デフォルトの名無しさん mailto:sage [2020/08/29(土) 21:29:35.58 ID:2f/XylsB.net] スタートメニューを右クリックしたら、 一般ユーザー用・管理者用の、2種類のPowerShell がある コードも管理者用では、ExecutionPolicy だったか忘れたけど、特別な書き方がある
524 名前:デフォルトの名無しさん [2020/08/30(日) 10:18:34.85 ID:j2JU6h3h.net] >>520 セキュリティの基本が分かってないのはマイクロソフト マイクロソフトはメーカーだからシステムを守ることをセキュリティと勘違いしてる 守るべきはユーザーの持つ秘密情報 プログラムが改変されようとも、最終的にそのユーザーコンテキストで読めてはいけないデータにアクセスできなければよい プログラムは壊れても再インストールできるが、情報漏洩は回復できない
525 名前:デフォルトの名無しさん [2020/08/30(日) 10:21:08 ID:j2JU6h3h.net] 相変わらず、無内容の人格攻撃文化 腐ってんね
526 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 11:22:28.54 ID:roK+ZKVb.net] >>522 「MS は基本がなってない!MS よりも、俺のほうが正しいぞ!」 で、あなた様はどんなバックグラウンドを持つお方で、これまでどんなことを成してきた方なのですか?
527 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 11:25:22.99 ID:6EFwsuE9.net] >>523 自分の無理解を棚上げしてスレ違いでむやみにあちこち叩くの辞めた方が良いよ 人に教えを請う立場の書き込みにはとても見えない PSスクリプトの実行に必要なのは監理者権限ではなく適切な実行ポリシーの設定 これだけ教えてあげたんだからもうここには書き込まず一人で調べてね
528 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 13:47:22.04 ID:e/T9q/5N.net] 昔からマイクロソフトをdisって一人前面する技術者は一定数いた
529 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 14:37:48.96 ID:Y6JzX6tf.net] 「Microsoftのバグ」との戦い https://xtech.nikkei.com/it/article/COLUMN/20080819/312956/
530 名前:デフォルトの名無しさん mailto:sage [2020/08/30(日) 15:57:42.01 ID:PraMtyj1.net] >>526 M$とか書く奴おるねw
531 名前:デフォルトの名無しさん [2020/08/30(日) 17:34:08 ID:6ShNfOXb.net] >>521 管理者権限じゃないと実行出来ないコマンドを使う時用くらいの認識しかなかったわ
532 名前:デフォルトの名無しさん [2020/08/30(日) 21:51:36.19 ID:g5q4aE3p.net] Microsoftは「製品の問題点」と「仕様」を最初に明確にするので、それも批判されてたよね。 Linuxの場合、サポートを提供するベンダーで「バグと仕様を明確にできる」のはRedhatくらい。 その他のベンダーは明確にすることが出来ない。 Kernel作ってるのは他人だから。 「仕様として今後も維持される動作」か「バグとして修正される動作」か即座に知ることが出来るのは、待たずに作業を続けられるので、とても良いことのように感じるけど、実際は批判が多い。
533 名前:デフォルトの名無しさん [2020/08/31(月) 01:56:18.43 ID:Sr2UUXBk.net] ついに公務員の副業が解禁される時代が到来した https://hybridstyle.net/side-job065/ フリーランス市場規模が20兆円を突破 -副業は8兆円- https://hybridstyle.net/work-style020/ 時代は週休3日制へ【週休3日制導入企業まとめ】 https://hybridstyle.net/work-style016/ 会社員の副業が急増、副業フリーランス4年で3倍、経済規模は約8兆円??副業収入は平均74万円 https://www.businessinsider.jp/post-165077#cxrecs_s 本業のストレス解消、副業で月70万、転職のお試し…会社に内緒で副業する人たちの本音 https://www.businessinsider.jp/post-176835#cxrecs_s どんな仕事でいくら稼いでいる? 副業をしている13人に聞いたそのリアル https://www.businessinsider.jp/post-180772#cxrecs_s 会社が個人を縛り付ける時代は終わった。これからは、個人が仕事を求めて、チャンネルのように会社を切り替えていく。 https://www.wantedly.com/companies/newpeace/post_articles/65530 誰も教えてくれなかった「フリーランスは厳しい」ではなく「甘い」という真実。 https://www.wantedly.com/companies/newpeace/post_articles/54124 【特集】年収1000万円以上「フリーランスの流儀」vol.2 https://tabi-labo.com/286733/journey-six-figure-freelance-nathan 「排出物ゼロ、廃棄物ゼロ、貧困ゼロ」究極のエコ・リゾートがフィリピンに https://tabi-labo.com/284193/nautilus-eco-resort 仕事は9割外注すれば売り上げが爆増する https://headlines.yahoo.co.jp/article?a=20190416-00028392-president-bus_all
534 名前:デフォルトの名無しさん [2020/09/01(火) 22:23:09.69 ID:cXm81OcM.net] >>525 だって教えを請う立場じゃないから それはそっちの勝手な思い込み 「普通に解決w」と言ってる通り、文字通り 出来事の感想を述べただけ
535 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 22:34:51 ID:mz7Z6faK.net] >>532 「MS は基本がなってない!MS よりも、俺のほうが正しいぞ!」 の次は 「俺は教えを請う立場じゃない」 ですか。Ruby厨に次次ぐ逸材が登場ですね。 で、あなた様はどんなバックグラウンドを持つお方で、これまでどんなことを成してきた方なのですか?
536 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 22:57:48.88 ID:XzhpNrm1.net] >>532 そんなのここじゃなくてTwitterにでも書いてろよ
537 名前:デフォルトの名無しさん [2020/09/01(火) 23:15:36.13 ID:cXm81OcM.net] >>524 ところで 建物でいうと、プログラムは家電等の快適装備 ユーザー情報は金庫 A.家電の設置 B.金庫の開錠 どっちがセキュリティレベル上かね? どうも(MSというより)メーカーは、Aを最高権限と考えてる様子 (コンピューターでは物理的に、金庫機能も家電の1つに過ぎないからだろうけど) ボタンをユーザーが押したからなんなのか コンビニの年齢確認と同じで、何を確認したのか ダイアログでベンダーを確認したか? リアルな名称のダイアログなんか簡単に作れる(続く)
538 名前:デフォルトの名無しさん [2020/09/01(火) 23:15:52.09 ID:cXm81OcM.net] >>524 (続き) たとえ本物でも、ベンダーに悪意がないことをどうやって確認するのか まして国が株価操縦してるモラル破壊な社会、大企業だからって信用できない そこで A.保護ユーザー(管理者) B.実行ユーザー(標準) こう分け、Bでベンダーソフトを実行すれば、Aの機密情報を読めない と思いきや、アプデ時に昇格ボタンを押してしまうと、なんでも読める権限で実行される ボタンをユーザーが押そうがバッチで押そうが同じ 全くセキュリティになってない ならば、あえてBを管理者にし、B自身のコンテキストでアプデさせる Aのフォルダから「Administrators」を外しておけば、 インストール権限がありながら、Aの機密情報を読めない、はず (この時、所有権や偽装でUACが反応しない状態なら、 その特権からも「Administrators」を外し、かわりにAを設定しておく)
539 名前:デフォルトの名無しさん [2020/09/01(火) 23:16:32.08 ID:cXm81OcM.net] >>524 くしくも偶然一部を書いてたが mevius.5ch.net/test/read.cgi/tech/1451927425/876-877 さらに言うと、複数の権限があり、ケルベロスによってサーバー機能による高速取込までユーザーコンテキストを通したシステム ユーザー問合せに即時対応するため、操作ログも一元管理される 操作ログは全ユーザーに追加権限だけがあり、閲覧はシステム権限が必要 アクセス権はテーブル自身にあり、どのようなルートからも突破不可能 行政手続に係る深いプライバシーを大量に扱うので、情報漏洩が命取りになる企業 しかし、そういう別件逮捕のようなことを、「人格攻撃」と言う 別件が議論に関係してはならない それにプライバシー侵害は「誹謗中傷」の要件の一つ @嘘(無根拠な憶測)、Aプライバシーの侵害、B人格攻撃、「誹謗中傷」の3要件を全部兼ね備えるというw で、お前は何をしたのか こっちは人格攻撃気質じゃないので、当然興味ないが
540 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 23:29:07 ID:XzhpNrm1.net] >>535 下手な例えをだすのは無理解の証 >>536 昇格ボタン押せる時点で既に怪しい まともな運用してたら昇格ボタン押すのに監理者のアカウントが必要 例え昇格ボタンを押しても読み取り権限が得られるとは限らない これもまともな運用してたら所有者にしか読み取り権限は得られない つまりユーザーフォルダ内は当該ユーザーしか読み取れないのがまともな運用 結局無理解由来の誤解なわけで、まさに>>527
541 名前:デフォルトの名無しさん [2020/09/04(金) 06:56:56.59 ID:BT/SeEq8.net] 客先も何も自社もポリシー変更できないからバッチは実行できないわ 簡単なファイル操作とかも.batでやることになってる Powershellに移行できない
542 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 08:30:44.47 ID:PFscGLUJ.net] ps1をポリシー付きで呼び出す1行バッチを書けばいいんじゃない? 冗長だけどbatをメンテするのに比べたらずっといいと思う
543 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 09:00:17.63 ID:nHf7diD2.net] CurrentUserすら許さずbatはOKって 客先はともかく自社でそれは謎
544 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 10:38:48.17 ID:HOWqt3vZ.net] >>539 まともな情シスを抱えていて、かつ運用ルールが徹底している会社なら、 きちんと申請すれば大丈夫なように思えるけど。
545 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 10:55:49.00 ID:9bn0no2k.net] Powershellってマイクロソフト提供のスクリプトですら証明書の期限切れがあるからちょっと不安になる
546 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 11:00:10.92 ID:Z5LzkW/+.net] >>543 無期限の証明書作れる方がヤバいでしょ
547 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 17:55:32.72 ID:pFNwt9H1.net] まぁそれはそうなんだけど10年後にいきなり動かなくなると軽くパニックになるのは容易に想像できる って言うか何件か証明書切れを経験すると不安になるのも理解できる
548 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 21:29:53.57 ID:GUj1t4WA.net] MSの怖いところはいつサポートを切られても文句が言えないんだよな よくそんなもん使うよ
549 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 22:08:14.36 ID:r9WlhdFA.net] vbsなんてもうサポートされてないけどドメインのログオンスクリプトでいまだに大活躍ですよ
550 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 22:37:22.42 ID:2uatcP4v.net] >>546 いつ切られるかなんて話ならApple製品の方が問答無用
551 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 22:48:13.98 ID:HXgxD56a.net] MSほど後方互換性に配慮する企業はない
552 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 22:50:13.00 ID:yQcUkcYq.net] >>546 Googleって知ってる?
553 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 23:13:47.33 ID:pFNwt9H1.net] サポートガーとか言い出したらすべてのソフトメーカーも同じだしMSはサポート期間を明示してる分マシな方
554 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 00:41:16 ID:/H4NwAXT.net] オープンソースじゃないから的なやつでしょどうせ
555 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 01:11:02.97 ID:F930ZZ+s.net] しかもMSは予告したサポート期間切れたようなのでも なんだかんだズルズルと最低限のサポートはしよるしな
556 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 09:05:47.68 ID:Z+0szYX9.net] オープンソースでも、誰もメンテしなくなったらサポート切れたと同じになるけどな
557 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 09:29:26 ID:5bXKo+C7.net] >>549 Win10 で未だに VB6 が公式にサポートされているのは驚異的だわな
558 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:23:09.94 ID:NgOfEUV/.net] VB6のサポートって切れたんではないの? でも実際にWin10でもそれなりに動くってことは 相当配慮してるんだろうね
559 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:38:02.26 ID:poolRPMo.net] >>556 > VB6のサポートって切れたんではないの? IDEの話と混同してないか? Microsoft は、Windows Vista、Windows Server 2008 (R2 を含む)、Windows 7、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows 8.x、および Windows 10 上で実行される既存の Visual Basic 6.0 アプリケーションをサポートすることにコミットしています。 https://docs.microsoft.com/ja-jp/lifecycle/faq/developer-tools#what-lifecycle-policy-does-visual-basic-60-follow
560 名前:デフォルトの名無しさん mailto:sage [2020/09/05(土) 14:41:51 ID:5bXKo+C7.net] >>556 これ。言葉足らずだったけど、ランタイムのほうね。 https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/visual-basic-6-support-policy
561 名前:556 mailto:sage [2020/09/06(日) 12:44:28.70 ID:K+uwWPzG.net] >>557-558 ああ、そうなのか。 どうりでうちの開発現場でエラーが出まくってるのに 無理やりIDEをインストールしてた訳だわ。 当然まともに動かなくてソース見る用になってたがw
562 名前:デフォルトの名無しさん mailto:sage [2020/09/06(日) 21:35:48.31 ID:zycnfOVF.net] PowerShell Core6.xはサポート終了したけどね https://docs.microsoft.com/ja-jp/powershell/scripting/powershell-support-lifecycle#powershell-releases-end-of-life
563 名前:デフォルトの名無しさん mailto:sage [2020/09/07(月) 10:29:11.62 ID:LrNxLO4b.net] 教えてください! 数学関数よく使うので、[math]打たなくていい方法ありませんか? pythonだと from hoge import *みたいなやつです。 usingの使い方はよく分かりませんでした…
564 名前:デフォルトの名無しさん [2020/09/08(火) 13:39:15 ID:Czt9vV5Q.net] RubyってNGした方がいいの?
565 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 14:06:08.38 ID:4U/U3HlV.net] うん
566 名前:デフォルトの名無しさん mailto:sage [2020/09/08(火) 21:32:03.60 ID:gglleEZ2.net] >>561 クラス名なので省略出来ない $m = [System.Math]; $m::PI; でちょびっとだけ短くなるけど
567 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 14:10:00.30 ID:dcbbv6DU.net] >>564 ありがとうございます!
568 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 17:56:46.99 ID:COY4N7BF.net] >$m = [System.Math]; これって$mに何を代入してることになるの?
569 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 21:07:17.97 ID:Mz5kQg8j.net] System.Mathを表すTypeクラスのインスタンス C#のtypeof(System.Math)に相当する
570 名前:デフォルトの名無しさん mailto:sage [2020/09/09(水) 23:13:42.66 ID:COY4N7BF.net] >>567 ありがとうございます インスタンスとして受け取ったからstaticメンバーは参照できるのか 何でもありだな
571 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 18:44:59.29 ID:tjN1C/3z.net] Typeクラスのインスタンスが特定のクラスとして振る舞うのか。 オブジェクト志向のメタ構造というか自己言及的というか、 頭の悪い俺はクラクラしてくる。
572 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 21:10:45.59 ID:Cm2gzsSs.net] "".GetType()::IsNullOrEmpty("foo") なんてものもちゃんと動く わざわざこんな書き方するメリットは知らん
573 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 22:50:14.76 ID:7Cy3Hp6X.net] Type型クラスがクラスとして振る舞うんじゃない 静的メンバ演算子(::)がRuntimeType型の値と文字列値を取って、静的メンバを返す だから $parent = [System.Math]; $child = "E"; $parent::$child; はちゃんと評価される
574 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 12:34:16.51 ID:pT8kzvft.net] whileの条件式がうまく動かないので教えてください。 Test-NetConnectionでサーバのポートが開いているかチェックして 開いていなかったら、開くまで待つ処理をしたいのですが、 なぜかWhileループに入ってくれません。 条件を$result -ne "True"にすればうまく動くのですが、なぜFalseの条件だと動かないのでしょうか あとTest-NetConnectionでポート開いていないときにWARNINGメッセージが表示されるのですが これって表示抑止できませんか? コード $ProgressPreference="SilentlyContinue" $ErrorActionPreference = "silentlycontinue" $server = "127.0.0.1" $result = Test-NetConnection $server -port 22 -InformationLevel Quiet while ($result -eq "False") { Write-Output "OFF" $result = Test-NetConnection $server -port 22 -InformationLevel Quiet } write-host "kaishi"
575 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 12:53:42.29 ID:NB1HNIe8.net] Booleanと文字列を比較してるからかなぁ while ($result -eq $false) { にするとか while ($result.ToString() -eq "False") { にするとか
576 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 12:59:04.71 ID:gjBM/R2S.net] >>572 $result -eq $false
577 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 13:03:07.97 ID:pT8kzvft.net] while ($result -eq $false) { でうまく動きましたー!ありがとうございました trueは文字列比較で動くのにfalseはダメなのは不思議です。
578 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 13:10:32.29 ID:NB1HNIe8.net] trueの場合には-neにしてたから、動いてる様に見えただけなんじゃね?
579 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 16:28:25.02 ID:Bx4nil+B.net] while (!$result)でよくね
580 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 18:29:23.50 ID:NpK7vu/k.net] 当世風だなw
581 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 22:52:54.65 ID:XEIeaeUL.net] /1GBとかやると容量計算が捗るのを今日知った
582 名前:デフォルトの名無しさん mailto:sage [2020/09/13(日) 23:32:26.16 ID:NpK7vu/k.net] >>579 こういう風には使えないんだね。残念。 get-childitem C:\Windows | select fullname, length/1KB
583 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 08:38:10.64 ID:Cd/NVq2C.net] get-childitem C:\Windows | select fullname,@{N="length";E={$_.length/1KB}}
584 名前:580 mailto:sage [2020/09/14(月) 15:59:14.68 ID:O60yV8/t.net] >>581 ( ;゚Д゚)マジカ…
585 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:11:25.52 ID:zNRePcSL.net] ドキュメントにも載ってる公式機能よ https://docs.microsoft.com/ja-jp/previous-versions/dd315291(v=technet.10)#-property-object https://docs.microsoft.com/ja-jp/previous-versions/dd315291(v=technet.10)#%E4%BE%8B-4
586 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 22:36:01.27 ID:O60yV8/t.net] おみそれしました。参考にしまつ (=゚ω゚)ノ
587 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 17:44:30.49 ID:vvfuKi+i.net] 会社のパソコンでvscodeでのスクリプト作成 しようとしているのですが 下記問題に当たって苦しんでいます。 助言ください 1.vscodeのextentionのインストールができない。 →会社ネットワークは認証付きプロキシ環境なのでその設定が必要ぽいが設定してもダメ、とりあえずファイルを個別にインストールして対処 2.powershellデバッグしようとすると、初めて使うモジュールの分析をしています。と表示されて進まない 対象モジュールはpackagemanegement.psm1 1.4.7 これもプロキシの問題でインストールに苦労しました。
588 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 17:51:28.05 ID:7Yffzl/8.net] >>585 認証付きプロキシでも普通に使えてるけど…って思ったらいくつもissue上がってるし、こっちの環境でも「XHR failed」ってエラーになるな
589 名前:デフォルトの名無しさん mailto:sage [2020/09/24(木) 09:55:49.02 ID:R8JuKz31.net] >>262 selectに -expandpropatye みたいなのを足せば何とかなるかも…
590 名前:デフォルトの名無しさん [2020/09/25(金) 01:41:03.68 ID:hFZS0B6G.net] ヒアドキュメントの変数使う時に変数を前方参照(後方参照?)したいんですが、 できませんかね # スクリプトの頭の方で参照したい $heredoc # ヒアドキュメントはスクリプトの後ろにまとめたい $heredoc = @` abc `@
591 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 01:55:05.65 ID:mGml3uVc.net] Ruby でも、出来ない
592 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 04:02:41.97 ID:pAwXdRR4.net] >>588 それって静的変数みたいなものですかね?考え方は
593 名前:デフォルトの名無しさん [2020/09/25(金) 22:07:41.04 ID:hFZS0B6G.net] UNIX系のシェルの仕様見ても前方参照できるようなことは書いてなありませんでした だめっぽいですね 一旦ファイルとして後ろまで読むみたいなアクロパティックな方法しかなさそう
594 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 22:15:02.42 ID:5mEzuFCz.net] 自分自身をファイルオープンして末尾を読み出すとか。 昔、自分自身を解凍するシェルスクリプトがUNIX系アプリのインストーラとしてよく使われてたよね
595 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 22:17:06.26 ID:5mEzuFCz.net] おっと書かれていたか
596 名前:デフォルトの名無しさん mailto:sage [2020/09/25(金) 23:45:08.08 ID:BU0fUt+3.net] 処理をスクリプトブロックや関数の中に入れてもいいなら $f = { echo $heredoc } $heredoc = @` abc `@ . $f
597 名前:デフォルトの名無しさん mailto:sage [2020/09/26(土) 22:07:47.79 ID:BjfAYIo4.net] わけがわからん現象にでくわした シンボリックリンク作成権限を付けたユーザーなんだけど New-Item -Type Directory -Name dir New-Item -Type SymbolicLink -Name sym -Target dir これを管理者で実行すると SYMLINKD になるんだけど 管理者にならずに実行すると SYMLINK になるのはどういうこと?
598 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 09:30:31.69 ID:HvAokpg1.net] chcp 65001 をやっても画面のユニコード文字列が文字化けするのはなんで?
599 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 11:16:54.85 ID:4AaMSaam.net] >>596 [Console]::OutputEncoding = [Text.Encoding]::UTF8 これだとどう?
600 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 11:18:33.39 ID:4AaMSaam.net] >>596 あと、いちどここ見てみたら https://www.vwnet.jp/Windows/PowerShell/CharCode.htm
601 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 12:01:00.23 ID:45wzgCn0.net] Windows Terminalは絵文字とかもちゃんと表示できるらしい、使ってないけど
602 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 16:37:33.79 ID:zpUujZFe.net] 管理者にならずに New-Item でフォルダーへのシンボリックリンクを張ると SYMLINKD でなく SYMLINK ができるという >>595 なんだが PowerShell を C:\Users\ユーザー で起動した場合だけ起こるっぽい Windows PowerShell では起きないし、起動フォルダーを変えても起きない なんだこれ?
603 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 18:25:49.52 ID:4AaMSaam.net] >>600 うちの環境 (Win10 2004) だと以下の通り。いずれもシンボリックリンク作成権限を与えた一般ユーザ。 PowerShell 5.0 開始ディレクトリに関わらず、再現せず PowerShell 7.0.3 開始ディレクトリに関わらず、再現する よく分からんね。
604 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 21:02:03.10 ID:qVXRXcgH.net] 昔からpsのアクセス権周辺の実装は怪しいと思ってる 専用コマンド呼ぶなり.NET呼ぶなりした方がいいよ
605 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 22:00:17.33 ID:zpUujZFe.net] なぜうち(Win10 1909 18363.1082)では起動フォルダーで挙動が変わるんだろう C:\Users\ユーザー で起動した PowerShell 7.0.3 だと、どこで New-Item しても発生する その PowerShell で、さらに PowerShell を起動すると C:\Users\ユーザー で起動した場合は、どこで New-Item しても発生する 別のフォルダーで起動した場合は、どこで New-Item しても問題ない こうなる理由が予想もできない
606 名前:デフォルトの名無しさん mailto:sage [2020/09/27(日) 23:03:00.71 ID:zpUujZFe.net] あーごめん 管理者でも C:\Users\ユーザー で起動したら発生した 管理者になるかどうかは関係なかった 理由はさっぱりだが……
607 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 10:27:40.26 ID:6RK1A/yN.net] >>601 >>604 もしかすると、 1. ターゲットをフルパスで指定する 2. ターゲットの相対パスを「.\\」か「./」で始まる形式で指定する 3. New-Item の直前に [Environment]::CurrentDirectory = Get-Location を実行する のどれかを試すと、PowerShell 7 でも問題は起こらなかったり?
608 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 20:33:13.25 ID:1OU6a08X.net] 試した 1 〇 (でも張りたいのは相対パスのリンク) 2 × 3 〇 [Environment]::CurrentDirectory を基準
609 名前:ノターゲットのフルパスを求めて フォルダーだったら SYMLINKD 、それ以外は SYMLINK を作ってるっぽい # >>603 を書く時 C:\Users\ユーザー では試してなかった……。 カレントディレクトリを移動しても [Environment]::CurrentDirectory は変わらない となると悪いのは カレントディレクトリを返さない [Environment]::CurrentDirectory ? それとも [Environment]::CurrentDirectory を参照する New-Item ? [] [ここ壊れてます]
610 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 11:44:19.44 ID:xkYzZNyK.net] >>606 ごめん。ソースの履歴を見たら、v7.0.3 のときは、2. の方法は無意味だったみたい。 v7.0.3 の実装は、>>606 さんの想像のとおり。 そもそも、ターゲットの相対パスを解決するときの基準は、カレントのパスではなくて、 シンボリックリンクそのもののパスだよね。 なので、プロセスのカレントディレクトリ([Environment]::CurrentDirectory)の代わりに、 PowerShell のカレントロケーション($PWD)を基準にしたとしても、やっぱりバグる。 New-Item -Type Symbolic -Name Foo\Bar -Target .\Zot みたいなケースとか。 でね。最新のソースには、相対パスのターゲットのための修正が施されているのだけれど、 これが、「.\」か「./」で始まるパスのときは、基準にカレントロケーションを使う、 という中途半端かつ誤ったもので...。
611 名前:デフォルトの名無しさん mailto:sage [2020/09/29(火) 20:49:56.27 ID:J7wCjMtV.net] 常に リンクのフルパス → ターゲットのフルパス とたどるだけなのに……w 早く修正されますように
612 名前:デフォルトの名無しさん mailto:sage [2020/09/30(水) 08:50:32.18 ID:6kAerFE6.net] [Environment]::CurrentDirectoryや[IO.Directory]::GetCurrentDirectory()の罠 他のモジュールも同じ問題を抱えてないか心配になる
613 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 10:19:36.95 ID:tnCBqate.net] New-Itemはハードリンクもバグってる こっちはWindows以外のOSでも問題になるはず New-Item -Type Directory -Name linktest New-Item -Name linktest\target New-Item -type HardLink -Name linktest\hardlink -Target linktest\target に対して、こんなメッセージでエラーになってしまう New-Item: Could not find item linktest\target. 興味深いのは New-Item -Type HardLink -Name linktest\hardlink -Target target と間違えてみると New-Item: Cannot find path 'カレントディレクトリ\target' because it does not exist. ちゃんと正しいエラーメッセージが返る 不思議だ
614 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:05:38.94 ID:NSqrZd61.net] >>610 >New-Item -type HardLink -Name linktest\hardlink -Target linktest\target 5.1と7.0.3で試したけどエラーにならなかったぞ
615 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:26:37.01 ID:tnCBqate.net] これでどう? (長すぎて切れるかも) $origCurDir = [System.Environment]::CurrentDirectory New-Item -ItemType Directory -Path linktest Push-Location linktest New-Item -ItemType Directory -Path dir Push-Location dir # linktest/dir New-Item -ItemType Directory -Path subdir Set-Content -Path file -Value "hello" New-Item -ItemType HardLink -Path hardlink_1 -Value file New-Item -ItemType SymbolicLink -Path symlink_1 -Value subdir Pop-Location # linktest New-Item -ItemType HardLink -Path dir/hardlink_2 -Value dir/file New-Item -ItemType SymbolicLink -Path dir/symlink_2 -Value subdir Push-Location dir # linktest/dir [System.Environment]::CurrentDirectory = $PWD New-Item -ItemType HardLink -Path hardlink_3 -Value file New-Item -ItemType SymbolicLink -Path symlink_3 -Value subdir Pop-Location # linktest [System.Environment]::CurrentDirectory = $PWD New-Item -ItemType HardLink -Path dir/hardlink_4 -Value dir/file New-Item -ItemType SymbolicLink -Path dir/symlink_4 -Value subdir Pop-Location [System.Environment]::CurrentDirectory = $origCurDir Get-ChildItem -Path linktest/dir | Sort-Object -Property CreationTime | Format-Table Attributes,LinkType,Target,Length,Name
616 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 13:25:40.85 ID:1QpEVKY8.net] mklink一行でええじゃん
617 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 13:57:48.64 ID:w3BWfVBY.net] >>613 これを思い出した ******** アメリカのNASAは、宇宙飛行士を最初に宇宙に送り込んだとき、 無重力状態ではボールペンで文字を書くことができないのを発見した。 これではボールペンを持って行っても役に立たない! NASAの科学者たちはこの問題に立ち向かうべく、10年の歳月と120億ドルの開発費をかけて研究を重ねた。 その結果ついに、無重力でも上下逆にしても
618 名前:水の中でも氷点下でも摂氏300度でも、 どんな状況下でもどんな表面にでも書けるボールペンを開発した!! 一方、ソ連は鉛筆を使った。 [] [ここ壊れてます]
619 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 14:35:00.30 ID:Ck+HovvX.net] リンクを張ることが目的なのではない PowerShellの不具合を見つけることが目的なのだ
620 名前:デフォルトの名無しさん mailto:sage [2020/10/02(金) 21:34:24.75 ID:ljpWPhwK.net] 誰か英語ができる人 >>612 のテストを添えて「New-Itemでのhardlink/symlink作成に [Environment]::CurrentDirectoryが影響する」ってタイトルでイシューを立てて欲しい
621 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 01:55:55.82 ID:0vVVHGK+.net] 昔はよくConnectに投稿したりしたんだけどねぇ
622 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:45:42.05 ID:68v91MPk.net] よろしくお願いします
623 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 22:48:38.93 ID:7NrhvCrT.net] バージョン上がって使いやすくなってきたねpowershell Shellより扱いやすいからmacにもインスコしたわ コンソールに貼り付けて実行した時に右クリックの貼り付けとctlvの貼り付けで動きが違うのは何で?
624 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 17:12:39.48 ID:Pj4o9N0c.net] 遅レスすまんね >>597 だめだった >>598 見てみる
625 名前:デフォルトの名無しさん mailto:sage [2020/10/07(水) 01:28:53.25 ID:OLUeUK9d.net] あるファイルを消そうとしたら「このファイルは開かれているため〜」と表示されて消せなかった。 こういう場合、自分はリソースモニターでファイルを開いているアプリを探すんだけど 最近入った現場では管理者以外はリソースモニターを使えないように設定されていて困った。 それで質問なのですが、powershellのコマンドでファイルを開いているアプリを探す方法はあるのでしょうか?
626 名前:デフォルトの名無しさん mailto:sage [2020/10/07(水) 02:03:23.70 ID:HMBCuleJ.net] https://stackoverflow.com/questions/39148304/fuser-equivalent-in-powershell こんなん出てきたがどう?
627 名前:621 mailto:sage [2020/10/08(木) 03:04:42.09 ID:daaVvwfY.net] >>622 めっちゃ参考になります。っていうかこれでやります。 サンクス!
628 名前:デフォルトの名無しさん mailto:sage [2020/10/08(木) 19:15:35.07 ID:zkqa7tbj.net] 試せば判るけど >>622 はプロセスがロードしてるDLLとかのモジュールしか得られないよ 開いてるファイルはプロセスに紐付いてるハンドル取得して一個一個チェックするしかないよ 実装はpowershellじゃかなり大変だからhandle.exeっていうMSが公開してるツール使ったらいいよ
629 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 06:30:09.66 ID:JjVHZHwh.net] セキュリティガチガチでネットにも繋がらないうちの現場じゃ無理だな
630 名前:デフォルトの名無しさん mailto:sage [2020/10/14(水) 11:09:36.08 ID:s64A8YK8.net] うちの会社は「キッコーマン」のHPが見れません、”コーマン”がフィルターに引っかかるのですw
631 名前:デフォルトの名無しさん mailto:sage [2020/10/15(木) 21:32:35.73 ID:vPm9QJ4K.net] openfiles コマンドでファイルを開いているプロセスを調べる 【 Windows】 tooljp.com/windows/doc/Server2008/openfiles/openfiles.html Openfiles https://web.archive.org/web/20120424081342/technet.microsoft.com/ja-jp/library/cc772842 (v=ws.10).aspx
632 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 17:51:59.12 ID:2b9DYeQb.net] 職場で「さすがパワーシェラー!」って言われたんだけど パワーシェルを使う人のことをそう呼ぶものなの?
633 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 17:57:10.05 ID:Ske6VIT2.net] 聞いたことないな むしろ馬鹿にされてる気分
634 名前:デフォルトの名無しさん mailto:sage [2020/10/17(土) 23:05:50.24 ID:DNKik4OU.net] 洋書で良い本ないですか? 和書だと数冊しか出てないので…
635 名前:デフォルトの名無しさん mailto:sage [2020/10/18(日) 21:28:34.46 ID:6x+7Jy+N.net] in actionは読んだのかね あとはCoreのソース読んでくのが手っ取り早い
636 名前:デフォルトの名無しさん mailto:sage [2020/10/19(月) 22:58:13.20 ID:TaaQ8sH/.net] >>631 原書は第3版まで出てるんですね ありがとうございます
637 名前:デフォルトの名無しさん [2020/10/24(土) 21:41:19.65 ID:1s91cR1z.net] 多次元配列(ジャグ配列ではなく)を1次元配列に平坦化する高速な方法ありませんか? データ数は100万個くらいです。 @($a | % {$_}) 検索したら↑のカッコいい方法が出てきましたが、 私の環境で6秒ほどかかり速度に不満があります。
638 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 23:22:07.28 ID:ZaC2aARH.net] パイプとForeach-Object自体が遅いからね データがオンメモリにあるならforeach文のが速い
639 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 23:28:40.40 ID:ZaC2aARH.net] あとは万個の繰り返し処理になるわけだからpowershellで書いたら全体的には当然遅い 対策としては繰り返し部分だけC#に渡すとかだね
640 名前:デフォルトの名無しさん mailto:sage [2020/10/24(土) 23:45:12.07 ID:V4Y88WB8.net] 万個とかエッチ!
641 名前:633 [2020/10/25(日) 00:13:47.38 ID:orpbcY2p.net] foreach文にすると0.8秒まで速くなりました! とりあえずこの方法でやってみます $b = foreach($x in $a){$x}
642 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 02:13:33.54 ID:8PerFZ8f.net] >>636 美人穴が「この商品は累計○万個も売り上げたということです!」とかいうとおっきする
643 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 20:51:17.25 ID:Bltg1B/v.net] >>633 >多次元配列(ジャグ配列ではなく)を1次元配列に平坦化する高速な方法ありませんか? なんでジャグ配列ではなく多次元配列なんだろう
644 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 23:05:57.46 ID:Ny8q0G3C.net] ジャグラーは定番だ
645 名前:デフォルトの名無しさん mailto:sage [2020/10/25(日) 23:57:20.55 ID:sGr6+tXm.net] 多次元配列のほうがメモリ上で綺麗に配置されている分、高速化の選択肢が多いかもしれないって発想じゃね
646 名前:633 [2020/10/26(月) 00:00:33.37 ID:R7zaLxag.net] >>639 ExcelファイルからCOM経由で範囲データを取ってくるとobject[,]になるためです
647 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 08:09:54.14 ID:mujdTIU3.net] なんでそれを1次元にするんだろう
648 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 12:01:58.05 ID:bVz9LMJg.net] >>641 実際には多次元配列の方が遅い
649 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 13:22:10.82 ID:l+r11Fp5.net] >>644 理由は?
650 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 14:41:24.14 ID:RInXL5ja.net] PowerShellというか.NETの仕様 .NETには1次元配列の要素にアクセスするための専用命令があるので速い 多次元配列の要素にアクセスするにはプロパティみたいなアクセサメソッドを使わなきゃいけないので遅い
651 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 16:19:55.73 ID:l+r11Fp5.net] >>646 多次元だと倍以上遅いと言う根拠あるの?
652 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 16:27:11.02 ID:RDi5ol2j.net] めんどくせー奴だな
653 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 17:00:59.84 ID:XYschmPc.net] 体感速度は変わらん
654 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 17:43:17.64 ID:jItJ//Mq.net] >>647 自分で試せば良いんじゃね
655 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 17:46:52.74 ID:l+r11Fp5.net] 要は根拠もなしに > 実際には多次元配列の方が遅い と妄想をほざいてただけって話かよw
656 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 17:56:32.09 ID:jItJ//Mq.net] >>651 うん、良いんじゃね、そういう結論で。 以上でよろしいか?
657 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 17:58:32.50 ID:j+tAxxjP.net] >>651 質問に答えず茶化すだけかよw
658 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 19:30:32.27 ID:l+r11Fp5.net] >>653 >>652 に言ってくれよw
659 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 19:43:09.27 ID:/01g7c5c.net] >>ID:l+r11Fp5 たくさん構ってもらえて良かったね
660 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:06:18.23 ID:l+r11Fp5.net] >>655 恥の上塗りかなw
661 名前:633 mailto:sage [2020/10/26(月) 20:09:14.97 ID:5qWbLIDu.net] >>643 Excelファイルから取得したデータを更に別の処理に使うのですが、その際に1次元で渡す必要があるためです
662 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:09:30.70 ID:/TCFG/M1.net] 実装としては添え字でメモリの位置を計算して参照するだけだから 一次元でも多次元でも原理的には速さは変わらないぞ
663 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:13:28.15 ID:jItJ//Mq.net] >>656 きみが絶対的に正しいことはスレ住人の総意で共通認識なのだから、もう十分だろう? そのへんで勘弁してもらないかな。なんなら土下座して謝るよ。
664 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:17:45.03 ID:mujdTIU3.net] ちゃんとアンカー追えよ ジャグ配列vs多次元配列が1次元vs多次元配列に化けてるぞ >>647 >多次元だと倍以上遅いと言う根拠あるの? 「倍以上遅い」なんてどこから来たんだろう
665 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:28:30.59 ID:l+r11Fp5.net] >>658 >>646 によると専用命令があるらしいけど、嘘なのかね? >>660 ああすまん、脳内で二次元配列 ⇔ ジャグ配列 って思ってたわ まあ3次元以上なら専用命令とやらがもっと速くないとダメだけど
666 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 20:36:57.75 ID:mujdTIU3.net] あんたはまず「倍以上」の出所を説明しないと
667 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 21:11:41.27 ID:EAm4Av0T.net] www5b.biglobe.ne.jp/~yone-ken/VBNET/IL/il15_UseArray.html > ILにも1次元配列については専用の命令が用意されています。
668 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 21:49:29.23 ID:AmD6br2D.net] #2次元配列初期化 Measure-Command { $i = 0; $array = New-Object "object[,]" 1000,1000 for ($x = 0; $x -lt $array.GetLength(0); $x++) { for ($y = 0; $y -lt $array.GetLength(1); $y++) { $array[$x,$y] = $i++ } } } #ジャグ配列初期化 Measure-Command { $i = 0; $array = New-Object "object[]" 1000 for ($x = 0; $x -lt $array.length; $x++) { $array[$x] = New-Object "object[]" 1000 for ($y = 0; $y -lt $array[$x].length; $y++) { $array[$x][$y] = $i++ } } } たしかに初期化の段階でジャグ配列のが速いね
669 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:09:49.38 ID:l+r11Fp5.net] >>662 ジャグ配列知らんの? 二次元相当のジャグ配列だと2回辿らないとダメだから倍は速くないとトータルで遅くなるでしょ
670 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:22:45.88 ID:5/h2v6nN.net] >>665 PSで例見せてよ
671 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:37:25.27 ID:l+r11Fp5.net] ILの話にPSとか言われてもw
672 名前:デフォルトの名無しさん mailto:sage [2020/10/26(月) 22:48:42.22 ID:l+r11Fp5.net] 軽くググったら最近の.Net Coreとかだと状況次第って感じやね https://takap-tech.com/entry/2020/02/24/213932 原理考えたらまあ妥当な結果だと思う
673 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 01:23:06.66 ID:IPa2oLl3.net] なるほど勉強になります
674 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 13:37:08.15 ID:bD3kPd/D.net] なるほど理解できません
675 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 15:37:54.18 ID:az6RTKF7.net] 処理系の実装に寄るけど、うまくインデックスを張れば 速度的には同等になるはずだけどな
676 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 19:29:05.55 ID:k9DNZwa6.net] >>671 どういう理論なんだ? ランダムアクセスだとジャグ配列は次元毎にメモリーアクセスして辿らないとダメだけど多次元配列ならインデックスの計算してその場所にアクセスするだけだから多次元配列の方が速い シーケンシャルアクセスだとアクセスの多くは最後の次元のアクセスだから毎回インデックスを計算する多次元配列よりジャグ配列の方が速いと思う まあめっちゃ最適化して多次元配列を1次元配列に展開するようなコードにまで落とせたら多次元配列の方が微妙に速くなるかも
677 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 19:52:31.91 ID:Sd8akiyh.net] なんにせよ多次元配列を1次元配列に高速に平坦化する方法分からないんだろ グダグダスレ引き延ばしておきながらなw
678 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 21:46:07.02 ID:UFBDJ7q0.net] @($a) Foreach-Objectもforeach分も要らない
679 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 21:47:10.61 ID:UFBDJ7q0.net] foreach分 → foreach文
680 名前:デフォルトの名無しさん mailto:sage [2020/10/27(火) 22:27:25.79 ID:6aj92Tm3.net] >>673 そんな低レベルなことでドヤれるとか羨ましいわw
681 名前:デフォルトの名無しさん mailto:sage [2020/10/28(水) 19:54:09.10 ID:RpzUgl/d.net] >>674 >@($a) PSってこんなオチが多いね $aって打てば全部列挙されて出てくるんだからあれれとは思うんだけどさ
682 名前:633 mailto:sage [2020/10/29(木) 21:32:08.09 ID:/oXwNFXj.net] >>674 返信遅れてすみません。 0.2秒まで速くなりました。 シンプルかつナンバーワンですね 目からウロコでした。
683 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:08:28.85 ID:u3CTd5OP.net] >>677 こういうトリッキー系?は趣味PGならいいんだけど 業務PGに実装するには躊躇するんだよなあw
684 名前:デフォルトの名無しさん mailto:sage [2020/10/29(木) 23:35:09.18 ID:ebCj94Ij.net] え? これは常識では・・・
685 名前:デフォルトの名無しさん mailto:sage [2020/10/30(金) 08:08:54.65 ID:xvehW8+X.net] PowerShell使うならほぼ常識、てか知らないと辛いレベル そもそもPowerShell自体が色々トリッキーな動作するし、特に配列周り
686 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 13:12:42.29 ID:cgiVh2xg.net] $a = [Object[,]]::new(3,3); $a.Rank は 2 $b = $a; $b.Rank は 2 $b = & { $a }; $b.Rank だと 1 $b = $a + @(); $b.Rank でも 1 もちろん $b.Length はどれも 9 $b = $a が特例のように思えてきた どうしてこうなるのかきちんと理屈が知りたい
687 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 14:39:03.01 ID:Q6ZeZ8N8.net] 配列での foreach の使用 (C# プログラミング ガイド) https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays 多次元配列の場合、右端の次元のインデックスが最初に加算されていき、次にその左の次元、またその左、というような方法で各要素がトラバースされます。 int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } }; // Or use the short form: // int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } }; foreach (int i in numbers2D) { System.Console.Write("{0} ", i); } // Output: 9 99 3 33 5 55
688 名前:682 mailto:sage [2020/11/02(月) 17:29:09.65 ID:cgiVh2xg.net] 明示的な foreach の使用は興味がないなあ $b = $a も $b = & { $a } も $a を $b に代入するのに なんで結果が違うのかが知りたい
689 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 17:46:27.91 ID:O692h/lZ.net] 最初のやつ以外はシンプルな代入じゃなくて演算してるから、演算の結果が一次元配列になっただけじゃないの
690 名前:682 mailto:sage [2020/11/02(月) 17:50:23.99 ID:cgiVh2xg.net] $b = & { $a } も演算? 具体的にどういう演算になるのかわからない
691 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 17:54:46.38 ID:Razdsa9H.net] >>682 >$b = & { $a }; $b.Rank だと 1 >$b = $a + @(); $b.Rank でも 1 この2つは$aがそれぞれ評価されて1次元になって$bに代入されてる $b = & { $a } の場合$aの前にカンマを入れれば型は保たれる $b = & { ,$a } PowerShellの謎仕様
692 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:05:40.51 ID:Razdsa9H.net] おそらくスクリプトブロックを通過するときと 右辺や左辺に置いて演算するとき それぞれ1次元に変換されてしまう仕様みたい
693 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:07:36.92 ID:O692h/lZ.net] >>686 起動演算子にスクリプトブロックを渡してるんだから演算でしょ スクリプトで $a とだけ書くと$aが評価されて左上から順に9行分の出力が得られる $b=&{$a}はその出力の代入になってる
694 名前:682 mailto:sage [2020/11/02(月) 18:14:48.39 ID:cgiVh2xg.net] じゃあやっぱり単純な代入 $b = $a だけが特別で それ以外は配列が展開されるってことか 理解した >>687 & { $a } だと配列 $a が展開される & { ,$a } にすれば配列の配列 ,$a が展開されて配列 $a がそのまま渡される
695 名前:682 mailto:sage [2020/11/02(月) 18:50:05.02 ID:cgiVh2xg.net] あれ違うな 単純な代入だけでなく Comma operator も特例になるのか
696 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 18:58:29.51 ID:WQUINiFK.net] >>691 特例だとか自分勝手な解釈をする癖を直さないと、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。 自分が既に頭の中に描いているイメージに合わせて無理に解釈方法を寄せていくのではなくて、本来理解すべき仕様の方に自分の中の理解を修正して近づけていく方がいいぞ。
697 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:13:13.99 ID:eTL99CIn.net] ウザっ
698 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 19:59:31.61 ID:D4NZ1UY1.net] >>692 TPO をわきまえられずトンチンカンな御高説垂れる人も、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
699 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 20:30:51.76 ID:Razdsa9H.net] >>690 原理的にはジャグ配列にして空評価させて返すで合ってると思う 恐らく処理系のソース読み込まないと判らないよ 配列返す関数作る時も同じ方法
700 名前:682 mailto:sage [2020/11/02(月) 20:44:58.19 ID:cgiVh2xg.net] ,$a は Comma operator で1要素の配列を返すけれど その時に $a は展開されずに2次元配列のまま これは単純な代入と同じ扱いだよね
701 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 21:48:13.16 ID:Qlwbnxz+.net] { $a } は { Write-Output $a } の事 Write-Output に配列を渡した時の挙動を考えればいい https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output By default, Write-Output enumerates through collections provided to the cmdlet. However, Write-Output can also be used to pass collections down the pipeline as a single object with the NoEnumerate parameter.
702 名前:デフォルトの名無しさん mailto:sage [2020/11/02(月) 22:48:01.97 ID:O692h/lZ.net] ウザかろうと思って特例云々につっこむのやめたけどやっぱり書くわ 代入は代入でしかなく特例も何もない いつだって右辺の値をありのままの型と値で代入するだけ $b=&{$a} というのを代入として認識するからおかしくなる $b=$a.Rank と書いたら$bは数値になるわけだけど、代入したから数値になった!とは思わないでしょ あくまで.Rankを評価した結果が数値になって、その数値を$bに代入したに過ぎない $b=&{$a} も &{$a} の評価結果が一次元配列になる仕様なだけで、代入が何かの法則性に寄与している訳ではないし、一次元配列になるという一貫したルールや思想があるわけでもない
703 名前:682 mailto:sage [2020/11/03(火) 00:15:03.20 ID:Da50zhuo.net] operand を展開してから operator にわたすんじゃなくて operand をそのままわたして operator が展開したりしなかったりする たぶん理解した
704 名前:デフォルトの名無しさん mailto:sage [2020/11/03(火) 08:59:33.05 ID:HUEo3Cdu.net] >>682 の$b = $a は$aの参照を$bに代入している $a = [Object[,]]::new(3,3) $b = $a $b[0,0] = 1 echo $a[0,0] #=> 1 $b = & { $a } は { $a }というスクリプトブロックを実行して戻り値を代入する { $a } の意味は >>697 を見ろ
705 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 10:50:57.08 ID:ZJcGuVz6.net] >>694 初学者が変な誤解すると二度と修正する機会ないからな みんな巡り巡って自分が被る迷惑を未然に防ごうと必死なわけよ
706 名前:デフォルトの名無しさん mailto:sage [2020/11/04(水) 20:48:58.85 ID:0afqdDmu.net] いつの間にかヘルプの翻訳作業が始まってた https://github.com/MicrosoftDocs/PowerShell-Docs.ja-jp/tree/live/reference/7.1
707 名前:デフォルトの名無しさん mailto:sage [2020/11/07(土) 21:29:59.64 ID:AAgSLehy.net] こんなシェルを書きました。 function get_stop_code { $hoge=(Get-Content stop_code.txt) } while ($true) { get_stop_code Write-Output $hoge } シェル実行中に、stop_code.txtの中身を書き換えても get_stop_codeがファイルの中身を拾ってくれません いろいろ試したら、こうしたらうまくいきました。がすっきりしません。 function get_stop_code { $hoge=(Get-Content stop_code.txt) Write-Output $hoge } while ($true) { $stop_code=(get_stop_code) write-output $stop_code } get_stop_codeがファイルの中身を、while ($true)の中でうまく拾ってくれる 書き方を教えてください。
708 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 00:25:05.60 ID:gCrk6dnE.net] これって遅延展開系の話なのかな?
709 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 02:53:16.74 ID:mlfH60EQ.net] スコープの話だと思うよ 関数の内側で変数を書き換えてもローカルスコープ内の変数の更新にしかならないので、関数から戻ったら値は書き換わってない 関数を次のように書き換えて明示的にスクリプトスコープの変数を更新してやればいい function get_stop_code { $script:hoge=(Get-Content stop_code.txt) } PSのスコープって特殊で悩ましい 特にループの初回、ほかの言語みたいに未宣言の変数だぞとエラーになってくれればまだいいんだけど、変数が作られて親からも見えちゃうから混乱する
710 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 08:09:56.71 ID:0BM2Z5Uf.net] おれも一瞬ではなく数分、>>703 の問題がわからなかった とりあえず頭にSet-StrictMode -Version Latestを付けとけばエラーにはなる
711 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 10:11:33.41 ID:vf10kFcr.net] >>705 ありがとうございます。 >関数の内側で変数を書き換えてもローカルスコープ内の変数の更新にしかならないので、関数から戻ったら値は書き換わってない というのは、 >>703 だと、 同じシェル内にある$hogeであっても、 @get_stop_code関数内の$hoge Awhile ($true)内にある$hoge の2種類があり、 while ($true)内で、get_stop_code関数を実行しても、 @の$hogeしか書き換わらないから、求める結果が得られない。 って事でしょうか。
712 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 12:20:50.04 ID:mlfH60EQ.net] そんな感じ 関数はローカルスコープを作る whileの方はその外側にあたるから親スコープになる ちなみにPSではwhileブロックはローカルスコープを作らないのでスクリプト全体のスコープと同じ
713 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 14:40:55.27 ID:vf10kFcr.net] >>708 ありがとうございます。 スコープですね、勉強になりました。 きっと、しっかり理解すれば便利な仕様なんでしょうが、 初学者にとっては罠でしかありませんね・・・こういうの・・・。
714 名前:デフォルトの名無しさん mailto:sage [2020/11/08(日) 21:23:36.42 ID:TgcNdU0w.net] about_Scopes https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847849(v=wps.640)
715 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 11:42:35.91 ID:tOFQB4no.net] ダイナミックスコーン
716 名前:デフォルトの名無しさん [2020/11/09(月) 13:18:24.63 ID:hpK1fX+1.net] >>707 その前にシェルという単語の使い方がおかしい ファミリーベーシックで「ファミコン書きました」と言ってる感じで 恥ずかしいのでやめたほうがいい
717 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 13:43:05.15 ID:6e3D9VGJ.net] シェルスクリプトはシェルスクリプトであってシェルではない
718 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 18:13:48.88 ID:XoDGsHQu.net] 今どきファミリーベーシックに例えても人に通じないぜーっ!!
719 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 18:47:25.54 ID:8i+JRxOJ.net] べーしっ君はもっと通じないだろw
720 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 21:56:26.60 ID:zTstc6LM.net] ショットシェルだったら散弾のことでちょっとかっこいいぐらいなのに… hb-plaza.com/wp/wp-content/uploads/2013/12/00buck001.jpg
721 名前:デフォルトの名無しさん mailto:sage [2020/11/09(月) 22:20:12.83 ID:7qqOuQ5J.net] ちょっと知れるね
722 名前:デフォルトの名無しさん [2020/11/09(月) 22:31:51.42 ID:NYGqo7nG.net] ポンタポイントが付くか楽天ポイントが付くかの違いで基本的には一緒だよ
723 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 02:41:01.00 ID:TotITmpP.net] スクリプトスコープ以外にも、関数スコープがあるのは便利。 C, Ruby と同じ 関数スコープが無い言語は、プログラミングが異常に難しい
724 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 04:19:48.53 ID:UHXHz0W1.net] その程度の事で「異常に」難しいんじゃ向いてないんじゃない? 多少面倒臭いなと思う事はあっても
725 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 04:24:34.34 ID:/n5BB76T.net] 再帰呼び出しで・・・
726 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 09:42:32.98 ID:v1zmG+Gm.net] むしろローカル変数の恩恵に理解を示し、グローバル変数を強制されたら不安だと思う感性の方が普段たくさんプログラミングしてるんだろうなと感じる 変数iを使ったループの中でさらに別の変数iを使った関数を呼ぶと無限ループのバグになる 代わりにjにしようとか考えてると早晩行き詰まるので「i_関数名」みたいな変数名を常に使うことを思い付く 関数名は短くしたいと考えるようになって可読性がまずいことに 短いスクリプトしか書かない用途の言語ならいいけど、そうでないなら品質の低いコードを招く言語になるだろうな
727 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 13:37:25.83 ID:xsn7mmhw.net] ローカルとグローバルの話はまあややこしいな
728 名前:デフォルトの名無しさん mailto:sage [2020/11/10(火) 13:43:57.86 ID:xsn7mmhw.net] 自分のいる世界の常識が他の場所で通用するかどうか それを生きていて初めて見せられた例がプログラミングのローカルとグローバルだった なんていうPCヲタも少なくないだろうなあw ブロック過ぎたらまっさらに戻る言語なら 関数が動かないと思ったらちゃんと戻り値にして出さないとなあ 報告連絡相談 と同じ
729 名前:デフォルトの名無しさん mailto:sage [2020/11/12(木) 08:30:03.86 ID:HWijez2q.net] Announcing PowerShell 7.1 https://devblogs.microsoft.com/powershell/announcing-powershell-7-1/
730 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 01:15:46.84 ID:TgKG6lgf.net] プログラム経験ほぼゼロの初心者です。 プログラムのコマンドラインの引数に変数を使うと上手く動作しません。 ttps://aji0.web.fc2.com/ ←ここのAviUtlControlというソフトを使ってコマンドラインでAviUtlに動画ファイルを送りたいんですが、 「& auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) "$args"」とすると 「ファイルの読み込みに失敗しました。このファイル形式には対応していないか対応するコーデックやプラグインが登録されていない可能性があります」 とエラーが出て読み込めません。 同じファイルを「& auc_open.exe "(読み込ませたいファイルのフルパス)"」とすると開けます。 「Start-Process -FilePath auc_open.exe "(読み込ませたいファイルのフルパス)"」とした場合auc_open.exe自体が動作しません。 書き方を間違えているでしょうか? 普通に開ける動画ファイルもあるので相性の問題かもしれないのですが…。
731 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 02:31:24.83 ID:8Ha10j62.net] >>726 Paramで宣言してないなら、$argsじゃなくて$args[0]じゃない? https://microsoftou.com/ps-arguments/ 文字列じゃなくて「配列」のまま渡しちゃってるんじゃないかな? Start-Process -FilePath auc_open.exeでauc_open.exeが開かないなら、auc_open.exeのあるディレクトリとは違うディレクトリで実行してるとか? auc_open.exeのあるディレクトリに移動するか、auc_open.exeをフルパスで指定してみたら?
732 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 03:29:17.05 ID:TgKG6lgf.net] ありがとうございます。$args[0]に書き換えてみましたが、結果は同じでした。 リンク先に従ってParam($Arg1)と一行目に書いてみると「空の文字列が渡されている」とエラーになりました。 もちろん$args1に書き換えています。 GetType().FullNameで$args[0]を調べてみましたが、System.Stringになっていました。 上記では省略しましたが、auc_open.exeはフルパスで書いています。 変数を使っていますが、write-hostで調べたところパスに間違いは無かったです。 windowsやpowershellのバージョンのせいな気もしてきた。windows10は1906でpowershellはバージョン5.1です。
733 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 03:41:57.52 ID:TgKG6lgf.net] あ、そうそう、このAviUtlControlというソフトは、もともとコマンドラインの無いAviUtlに 強引にコマンドラインを外付けにするため、実際の動作はAviUtlの「ファイルを開く」を遠隔操作しているだけみたいですね。 windowsのファイルを開くダイアログボックスが表示されるので。 そういう動作をしているのに、ps1ファイルにフルパスで直接ファイルを指定した場合は正常に開けて $argsを使ってps1ファイルにD&Dした場合は「ファイルが対応していない」というエラーが出るよく分からない挙動になります。 $argsもwrite-hostしてみましたが、ちゃんと目的のファイルがフルパスで格納されています。
734 名前:726 mailto:sage [2020/11/13(金) 03:56:04.19 ID:TgKG6lgf.net] $args[0]ではなく$argsをGetType().FullNameしてみるとsystem.object[]になっていました。 $args = [string]$argsとして文字列に変換してみましたが結果は同じ。 あと、$args[0]をwrite-hostしてみると拡張子の末尾に[0]がついていましたがこれは正常ですか?
735 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 05:04:21.79 ID:HX9sr4kC.net] >>726 & auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) "$args" ↓ & auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) $args それでだめなら & auc_open.exe(AviUltでコマンドラインからファイルを開くプログラム) $args[0] こんな簡単な話じゃ無いよなあ?
736 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 10:40:00.19 ID:3YZH6rMm.net] どうせパス名に()や[]が付いているというオチなんでしょ
737 名前:726 mailto:sage [2020/11/13(金) 12:38:30.15 ID:TgKG6lgf.net] >>731 >>728 で試しました。 バッチファイルで (フルパス)auc_open.exe %1 とし、動画ファイルをD&Dしたら正常に開けました。 powershellと動画の相性か、書き間違えているかです。 pastebinに貼っておきます。 ttps://pastebin.com/Dupj68Z4 このスクリプトで何がやりたいのかというと、録画したテレビ番組のCMカットするのに 動画ファイルを開く→音声ファイルを追加読み込みという手順を踏まなきゃいけないのをボタン一発で済ませたいんです。
738 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 13:31:59.37 ID:907SkV9V.net] "$args" は$argsって文字列と解釈されるから、 $argsは参照されない & $open "$args"は$argsという引数として解釈されてる "$m2v" + "*.wav"も$m2v*.wavと解釈される 変数を参照したいなら変数はダブルクォートで囲ってはダメ & $open $args $m2v + "*.wav" のようにする
739 名前:726 mailto:sage [2020/11/13(金) 13:57:21.84 ID:TgKG6lgf.net] >>734 ありがとうございます。結果は変わりませんでした。 最初に書いたように正常に開ける動画ファイルもあるので本当に相性問題かもしれません…
740 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 16:35:19.24 ID:907SkV9V.net] すぐ相性問題で解決したことに使用とする奴嫌い 変数内にダブルクォート付きの文字列を格納してないのは分かってる?
741 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 19:25:55.17 ID:pkjRHYH3.net] "$args"と書いたらinterpolationされるので$argsの内容は参照されるよ PSもモダンなので "my name is $name" みたいな書き方ができる リテラルになるのは'$args'と書いた場合 でも"$args[0]"と書いたらダメ どこまで変数でどこから文字列なのかが想定と合わない "$($args[0])"と書く必要がある [0]を付けないと配列への参照になるから"$args"だと引数間に改行コードが入る 読み込めない動画はパスに空白に含まれているのかもしれないな
742 名前:デフォルトの名無しさん [2020/11/13(金) 19:30:14.24 ID:34jLv13e.net] >>726 cmd[.]exe(コマンドラインと呼んでいるものの実体)に引数が渡るときの パースの問題の可能性がある フルパスに空白が入っているかどうかで成否が変わったりしない? "$args" を ""$args"" or `"$args`" にしてみたら
743 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 19:33:35.59 ID:pkjRHYH3.net] あと "$($args -join ' ')" も試すといいかもな
744 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 19:37:05.80 ID:pkjRHYH3.net] これスペースが連続するファイル名があると失敗するな… 切り分けにはなるからいいか
745 名前:デフォルトの名無しさん [2020/11/13(金) 19:40:36.71 ID:lrdHTx5A.net] psって難しいんだな
746 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 19:55:31.96 ID:8Ha10j62.net] >>728 $argsは配列なので、その中身の一番目を取り出すために$args[0]って書くってことだよ 自分でGetTypeして$argsはobject[]、$args[0]はStringだって確認出来てるじゃん それに加えて、$argsを書き換えて使うのは混乱するから、$args = [string]$args じゃなくて、$m2v = $args[0] みたいにして、$m2vの方を使ったら? その上で、>>734 のアドバイスに従って修正したものをpastebinに貼ってみて 相性が気になるなら、「正常に開けない動画ファイル」を「正常に開ける動画ファイル」と同じ場所に同じ名前で置いてみて開けるなら相性じゃないって確認できるよ c:\abc.m2v ←開ける d:\[movie]\zz xyz.m2v ←開けない みたいな状況だとして、(abc.m2vを退避してから)zz xyz.m2vをabc.m2vにリネームしてc:\に置いてみたら開けるんじゃないかな?
747 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 20:45:29.62 ID:HX9sr4kC.net] >>738 >フルパスに空白が入っているかどうかで成否が変わったりしない? 空白とかマルチバイトとかあっちの問題か!
748 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 21:24:00.55 ID:34jLv13e.net] >>738 \"$args\" かも 昔自分で書いたもののひとつはそうなってた 理由の説明はできん
749 名前:デフォルトの名無しさん [2020/11/13(金) 21:28:03.15 ID:n6TD+JMZ.net] ぱわーしぇるがシェルではない事が証明されたな
750 名前:デフォルトの名無しさん mailto:sage [2020/11/13(金) 23:47:58.29 ID:LLS1FCOb.net] ファイルパス・ユーザー名に、空白・日本語を使うと、バグる。 半角英数字・ハイフン・アンダーバーだけにする Windows のパスには、空白が入っているものがあるので、ヤバイ
751 名前:726 mailto:sage [2020/11/14(土) 00:23:47.78 ID:8FDial4y.net] あああああ原因分かったあああ! 全角スペースだああ! 駄目なファイルの全角スペースを削除したら読み込めました! しかし修正方法が分からない…。とりあえず>>742 さんの言う通り$m2v = $argsとして、以下ここで貼られていた改善案の結果 "$args"の場合:$m2vの中身→フルパス $args[0]の場合:$m2vの中身→最初の半角スペースまで ""$args"" →スクリプト自体がすぐに終了 `"$args`" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。 "$($args -join ' ')" →ファイル読み込みに失敗 $m2vの中身→フルパス \"$args\" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。 "$($args[0])"→ファイル読み込みに失敗、$m2vの中身は最初の半角スペースまで 正直$args[0]を理解できてない気がします。殆ど変わってませんが、とりあえずpastebinに貼っておきます。ttps://pastebin.com/AQZqQ6aX
752 名前:726 mailto:sage [2020/11/14(土) 01:10:54.25 ID:8FDial4y.net] あ、下記忘れましたが"$args"と$args[0]も最初と変わらずファイル読み込みに失敗します。
753 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 01:52:08.34 ID:OfQ57GBv.net] -joinじゃ空白の連続があるとバグることには気付いてたけど、PSが全角空白をホワイトスペースとして扱うのは盲点だったわ こういうところPSは厄介だな…… そのスクリプトは呼び出された時点で既に引数が復元不能になってるので、スクリプトの呼び出し元を変える必要がある powershell C:¥your-script.ps1 "a b c.avi" のように呼び出しているのだとしたら powershell -file C:¥your-script.ps1 "a b c.avi" と書き換えると動く ちなみにスクリプト内でParamを明示的に定義して powershell C:¥your-script.ps1 -oreore_arg0 "a b c.avi" のように呼んでもいいらしい
754 名前:726 mailto:sage [2020/11/14(土) 03:06:15.72 ID:8FDial4y.net] >>749 行けました! ありがとうございます! 後半の意味がちょっと分からないんですが、動画ファイル名を明確にしろということでしょうか?
755 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 04:21:18.02 ID:C2BVBS/P.net] 引数をシングル・ダブルクォーテーションで囲む事で、 1つの引数として解釈される 囲っていないと、複数の引数として解釈されてしまうから こういうのは、Linux では、うるさいぐらいに注意する
756 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 05:26:16.13 ID:/XxpwyFY.net] 最初にPCに自分の名前を流用した名前を付ける時点で 半角英数にする、空白入れないというのを徹底しないと自動化には程遠い
757 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 05:35:00.14 ID:YIajn/qh.net] おめやで(*´▽`*)
758 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 07:04:37.55 ID:4EKVBZXC.net] おめやで?
759 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 10:49:04.93 ID:OfQ57GBv.net] >>750 自分で引数名を定義して渡すやり方 引数ひとつひとつの範囲を明確にできるのでPSにおかしな解釈をされようがなくなる どちらかというと経験者向けの参考として書いたから動いたなら気にしなくていいと思う Powershell Paramで検索したら詳しく出てくる
760 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 11:12:05.60 ID:OfQ57GBv.net] >>751 今回はその常識に反するPS固有の問題だよ powershell C:¥foo.ps1 "a b c" d e f # 全角半角空白混在 のように書くと、経験的な常識では $args[0] = "a b c" $args[1] = "d" $args[2] = "e f" の3つに分解されることを期待するけど、今回は a 〜 f が全部バラされて$argsは6個の配列になるという事象 経験から問題を矮小化しがちになるのは老化による成長鈍化だと思う 自戒を込めて
761 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 11:18:40.57 ID:xztQReuw.net] 省略しないで実際に流したコマンドをそのまま晒したほうがいいような気はする せいぜい数行だろうし
762 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 13:03:46.86 ID:eAmLQM6Q.net] WindowsのD&Dによるバグ仕様を回避するためにはpathに半角spを含めておいた方が良い
763 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 14:43:52.28 ID:vnxWLQnj.net] >>756 > a 〜 f が全部バラされて$argsは6個の配列になる どのバージョンだよ 5.1、7.0、7.1で試したけど $args[0] は "a b c"、$args.Length は 4 になるぞ
764 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:37:31.99 ID:OfQ57GBv.net] >>759 バージョン5.1をcmdから呼び出して確認した 再現しなかったのは-fileを指定したからじゃない?
765 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:44:28.74 ID:cwgCwaC3.net] >>759 Windowsのパラメーターの分解は呼ばれ側プロセスで処理すんだけど powershellは起動時のバージョンと実行時のバージョンが違うことがある powershellのバージョン違いを複数入れてる場合が恐らく該当する 引数4になるパターンはpowershellバージョン2で実行されてる powershell -v 2 で起動した場合は引数4 powershell -v 5 は全部バラけて引数6 俺はこういうバグだか仕様だかに付き合うの嫌だから一時ファイルや環境変数とかでやりとりする
766 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:04:59.98 ID:cwgCwaC3.net] [Environment]::CommandLine や [Environment]::GetCommandLineArgs() を使うとpowershellに因らない.NETで処理したパラメーターが得られるからこれが安全かもね
767 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:05:13.61 ID:OfQ57GBv.net] -v 2 で起動したらたしかに引数4になったけど $args[0] は a になったわw -v 2 だと全角スペースが区切りとして解釈されない
768 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:21:10.31 ID:OfQ57GBv.net] 原理はこんな感じかな? まずPS外から呼び出したときは引数はいわゆる普通にparseされる powershell C:¥foo.ps1 "a b c" d e f → C:¥foo.ps1、"a b c"、d、e f の4引数 powershell.exeに-fileも-commandも指定されなかったとき、powershellはすべての引数を-commandの対象として扱う powershell.exeは引数をワンライナーのスクリプトとして処理しようとする 複数に分割されて受けたパラメーターをコードで例えると $args -join ' ' のような残念な方法で結合する & "C:¥foo.ps1 a b c d e f" 相当のスクリプトが実行される 全角スペースを区切りと見なすかどうかはPSのバージョン次第
769 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 20:24:33.59 ID:6rE1W4Lt.net] シングルクォーテーションならいけるんじゃなかったっけ
770 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 20:25:14.57 ID:ojc3zNUJ.net] これはひどい PS由来の機能は信用しない方がいいな
771 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 21:14:45.67 ID:BVcYkKlk.net] 全角スペースを許すプログラミング言語まとめ https://pronama.jp/2015/09/06/allows-ideographic-space-programming-languages/
772 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 21:25:00.22 ID:OfQ57GBv.net] >>765 シングルで試したらいけたわw シングルならPS外では単なる文字として扱われるからcmdから呼び出したとき C:¥foo.ps1 'a b c' d e f の5引数になって、連結結果は & "C:¥foo.ps1 'a b c' d e f" 相当になるからうまくいく模様
773 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:11:59.00 ID:ssVCI5qt.net] Excelのセル内の文字列全部ではなく、セル内の一部の文字列だけ文字色を変更する事は出きますか?
774 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:33:49.14 ID:lpvH3HhJ.net] 自決しました。かおもじ
775 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 20:48:34.28 ID:0Gsdb/Fk.net] >>756 powershell C:\foo.ps1 "a` b` c" d e` f
776 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 20:01:43.24 ID:ako3hAti.net] .Net Frameworkの質問になるかもしれんが、Powershellから使うのでこちらに 対話型のスクリプト作っててユーザーからファイルやフォルダのパスの入力を求めるのにGUIにしようと思って System.Windows.Forms.FolderBrowserDialogとか FileBrowserDialogとかを使ってやろうとしてますが、 ダイアログ画面が他のウインドウに隠れてユーザーが気づきません。 最前面表示させるにはどうすればよいでしょうか?
777 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:23:54.75 ID:ako3hAti.net] 自決しました。 topmostプロパティをtrueに設定したFormオブジェクトを FolderBrowserDialogオブジェクトのShowDialogメソッドの引数に渡すんですね。 こういう方法はマニュアル読んでもまったくわからない。苦手。
778 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 22:56:50.75 ID:goyIH8CW.net] >>773 待て早まるな
779 名前:726 mailto:sage [2020/12/03(木) 20:12:26.39 ID:AP2X4U04.net] >>726 です。先日は貴重なアドバイスをどうもありがとうございました。 申し訳無いんですがまた詰まってしまったので助けて下さい。 Trim(2505,6665) ++ Trim(9815,34297)〜 という内容のテキストファイルを整形して 2505 6665 9815 34297 という形にしたいんですが、改行が出来ません。 ttps://orahoview.com/replacetextinfilebypowershell/ ここを参考に $utltrimfile = $(Get-Content (テキストファイルのパス)) -replace ") ++ Trim(" "`n" $utltrimfile = $trimfile -replace "," "`n" $utltrimfile > (テキストファイルのパス) と書いてみたんですが「`nを使用できません」とエラーが出ます。\nでも同様の結果でした。 改行をする方法はありますか?
780 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 20:44:02.20 ID:gj1mOZdT.net] >>775 数字以外が出てきたらそこで区切ることで配列にする 配列要素のうち空文字列であるものを除外 配列をまるごとファイルにリダイレクトして改行された出力結果を得る $utltrimfile = $(Get-Content (テキストファイルのパス)) -split '\D' | ?{$_ -ne '' } $utltrimfile > (テキストファイルのパス)
781 名前:726 mailto:sage [2020/12/03(木) 21:29:21.46 ID:AP2X4U04.net] 出来ました! ありがとうございました!
782 名前:デフォルトの名無しさん [2020/12/07(月) 00:00:56.83 ID:8Ddysj0U.net] PowerShellにinterfaceありますか? 空のクラス定義するしかないですか?
783 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 00:09:24.05 ID:rAKRPC/o.net] ■Powershellコマンドを実行する PS C:\Users\hoge> Get-NetIPConfiguration InterfaceAlias : Wi-Fi InterfaceIndex : 10 InterfaceDescription : TP-Link Wireless USB Adapter NetProfile.Name : Buffalo-A-428D (以下略) なんかたくさん出る ■(Powershellコマンド).列の名前 を実行する PS C:\Users\hoge> > (Get-NetIPConfiguration).NetProfile.Name Buffalo-A-428D .列の名前で指定したものしか出ない。 こういう(コマンド).列名っていうので、出力を絞る方法に名前ってありませんか?
784 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 00:52:35.54 ID:fL+10lW/.net] grep
785 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 00:55:50.26 ID://YuCj5S.net] interfaceってたぶんJava的な意味でのやつか
786 名前:デフォルトの名無しさん [2020/12/07(月) 00:57:24.19 ID:8Ddysj0U.net] >>781 そうなのよ
787 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 01:07:36.68 ID:nVLltyNc.net] : だね
788 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:14:39.74 ID:Zb+BuNXc.net] >>779 . はプロパティ逆参照演算子だよ Property dereference operator
789 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:24:15.67 ID:Zb+BuNXc.net] . で出力を絞る方法、正確には対象を選ぶ方法は、一般的にはプロパティアクセスが該当するかな
790 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 08:49:51.37 ID:Qq2AGx/W.net] メンバーアクセス演算子 . https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_operators#member-access-operator- オブジェクトのプロパティおよびメソッドにアクセスします。 メンバー名は式にすることができます。 $myProcess.peakWorkingSet (Get-Process PowerShell).kill() 'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
791 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 15:48:31.93 ID:5uzreY+I.net] copy-itemでディレクトリを指定して、内部のファイルがパス260文字以上でエラーを出すとき、そのパスを取得する方法はあります?
792 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 16:04:01.41 ID:8iO4bdx+.net] >>787 Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathEnabled -Value 1
793 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 18:20:51.52 ID:5uzreY+I.net] >>788 ありがとう ただそのやり方はwin10にしか出来ないようで、win8.1ではLongPathEnabledは存在しないようです ググってもLongPathEnabledのwin8.1版は見つからないもので……
794 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 22:33:03.33 ID:wvARFKZP.net] >>789 単に制限回避したいなら \\?\ 使えば良いんじゃないかな https://stackoverflow.com/a/53099257 https://superuser.com/a/760601 そうじゃなくて、260文字以上のパスを探したいなら、そういうツールがいくつかあるよ https://sourceforge.net/projects/tlpd/
795 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 23:37:26.80 ID:5uzreY+I.net] >>790 試してみます ありがとなす
796 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 15:51:45.96 ID:CDSpQQd3.net] 外部コマンド | PowerShellの関数って風にパイプでつないで処理するとき 出力側が終わるまで一旦全部バッファリングしてから、ようやくPowerShellに処理が移る感じになるんですが 並列で処理するようにするにはどうすればいいでしょうか?
797 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 21:12:35.73 ID:6BQNLUy5.net] #1個めループ for($i=0; $i -le 10; $i++) { $hoge="ikkaime_" Write-Output $hoge$i } #2個めループ for($i=0; $i -le 10; $i++) { $hoge="nikaime_" Write-Output $hoge$i } これを1個のforにまとめる素敵なアイデアございませんでしょうか。 何がしたいかというと、1個めのループ(10回)が終わったら、$hogeをniakieme_にして、 もう10回ループさせて終わるようにしたいです。
798 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 21:25:03.78 ID:3lwwmG32.net] $hoge="ikkaime_" for($i=0; $i -le 20; $i++) { if ($i -eq 10) { $hoge="nikaime_" } Write-Output $hoge$i }
799 名前:デフォルトの名無しさん [2020/12/10(木) 21:59:45.86 ID:/iej8cKu.net] foreach ($hoge in 'ikkaime_', 'nikaime_') { for ($i = 0; $i -lt 10; $i++) { Write-Output $hoge$i } }
800 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 23:27:25.70 ID:uqnVDABe.net] $ikkaime = @() $nikaime = @() for($i = 0; $i -le 10; $i++) { $ikkaime += "ikkaime_$i" $nikaime += "nikaime_$i" } Write-Output $ikkaime Write-Output $nikaime
801 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 03:49:50.69 ID:bpjP0VBu.net] "ikkaime_","nikaime_"|%{$hoge=$_;0..9|%{$hoge+$_}}
802 名前:793 mailto:sage [2020/12/11(金) 23:44:28.19 ID:YtFbF7ro.net] ありがとうございました。 書き方がいくつもあるんですね。 非常に脅されたました。 ありがとうございます。 ちなみに、>>795 で処理しました。
803 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 23:55:43.98 ID:BGcESmPN.net] インクリメントのループはこう書いたほうがスッキリする foreach ($i in 0..9) {
804 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 00:05:08.43 ID:w0iK+TRN.net] >>797 こういうパイプがネストしてるのに違和感あるんだけど 多少効率悪くてもパイプ1本にできないかな
805 名前:デフォルトの名無しさん [2020/12/13(日) 01:22:24.35 ID:cCJaeZ7C.net] for ($i=1; $i -le 2; $i++){ Switch($i) { 1 {(1..10) | %{"ikkaime_"+$_}} 2 {(1..10) | %{"nikkaime_"+$_}} } }
806 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 07:32:06.23 ID:5EW0FlRD.net] パイプは繋げてナンボ UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大 長いパイプラインが違和感? いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
807 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 08:18:38.20 ID:6TpS+NE1.net] 0..9 | % { "ikkaime_$_"; "nikaime_$_" } | sort
808 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 08:21:28.01 ID:7zDtZqQK.net] function hoge($fuga) { 0..9 | ForEach-Object {Write-Output "$fuga$_"} } hoge 'ikkaime' hoge 'nikaime'
809 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 08:23:17.62 ID:7zDtZqQK.net] >>800 "ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
810 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 10:24:56.32 ID:aJyBOeQT.net] >>802 長いパイプじゃなく、パイプライン処理の名にそぐわない、 行って帰ってくるようなネストされてるのが気持ち悪い
811 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 20:15:51.92 ID:w0iK+TRN.net] >>803 >>805 そうそうこういうのがいいね
812 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 22:17:37.96 ID:aJyBOeQT.net] ゴルビーのパイプライン大作戦にだって行って帰ってくるようなパイプは無いだろ
813 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 13:38:52.97 ID:MCQs+fzK.net] 変数を事前に全部固めた書いたほうがわかりやすいと思うのですが、 ループ前に定義した変数の値に、ループ時の変数を入れ込む方法がわかりません $mynameis変数をループ中(コメントの位置)に持ってくると、問題ないんですが、 なんとか#変数ってしてあるところにもってきたいんです 定義したときには空で、あとから追加で変数に値をいれることってできないんでしょうか? ソース #変数 $watashi = "私は" $fname = "佐藤" $mynameis = "$watashi$fname$lname" foreach ($lname in "一郎","二郎","三郎"){ #$mynameis = "$watashi$fname$lname" #名を名乗る Write-Output $mynameis }
814 名前:デフォルトの名無しさん [2020/12/14(月) 14:58:28.73 ID:0uVb17k3.net] $mynameis = { "$watashi$fname$lname" } $watashi = "私は" $fname = "佐藤" foreach ($lname in "一郎","二郎","三郎"){ #名を名乗る Write-Output (mynameis) }
815 名前:デフォルトの名無しさん [2020/12/14(月) 15:01:37.07 ID:0uVb17k3.net] >Write-Output (mynameis) Write-Output (&$mynameis) こうかも、PowerShell難しすぎ
816 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:21:03.56 ID:vj7TAroN.net] foreachはスコープ作らなかったと思うけど 何が問題なの?
817 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:31:50.90 ID:vj7TAroN.net] ごめんようやく理解した 最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな 変数が自動で書き変わるのは正直気持ち悪い
818 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:43:34.54 ID:MBsazS7x.net] $watashi = "私は" $fname = "佐藤" $mynameis = "$watashi$fname{0}" foreach ($lname in "一郎","二郎","三郎"){ Write-Output ($mynameis -f $lname) }
819 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 22:30:25.12 ID:LFps+YXF.net] モダンな言語を使って書くレガシープログラミングだね 先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
820 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 22:33:35.98 ID:/tZ0PSGV.net] そこは鈴木にしようぜ
821 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 23:10:29.87 ID:EXeKWskh.net] できないことはないってだけで、やめたほうがいい 他の人がコードを読む時にとても困惑させるし 半年後に自分が読んでも理解に苦しむかもしれない
822 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 23:57:40.98 ID:CBAGo1je.net] 意外とPerl的なスパゲッティの罠がある言語なのね
823 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 03:55:48.18 ID:eKJAj5sp.net] >>810 みたいにスクリプトブロックで評価順序制御するのは別におかしくないと思うけど
824 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 07:38:16.79 ID:T2M/UCWI.net] 変数宣言を冒頭に集めるという、昔の言語ではルールだったけどデメリットの方が多いとして廃れた風習 その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな 古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い 記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
825 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 07:38:27.49 ID:T2M/UCWI.net] この話をPowershellの罠とされてしまうのはさすがにかわいそう
826 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:15:17.29 ID:HMGpB1Xp.net] $watashi = "私は" $fname = "佐藤" $lname = "一郎","二郎","三郎" $lname.ForEach{Write-Output "$watashi$fname$_"}
827 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:34:51.98 ID:/uFuBiiy.net] "私は"と"佐藤"を分ける意味がない 気持ちは分からなくもないけど
828 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 09:44:04.15 ID:VCJoAcsJ.net] 1. webからテキストをDLしてカレントディレクトリに Shift-JIS で保存したい。どう書けばいいですか? https://example.com/test.txt 文字コード:UTF-8 コマンドプロンプトから以下でDL出来るのまでは調べて分かったんだけど文字コードを変えて保存するのが分かりません powershell -Command "Invoke-WebRequest https://example.com/test.txt -OutFile test.txt" コマンドプロンプトにコピペかバッチから使いたいのでワンライナーで出来ると嬉しいです 2. 1に似た処理でweb上のUTF-8のtest.txtをカレントディレクトリのShift-JISのabc.txtに追記したい こちらもコマンドプロンプトから powershell -Command "〜 みたいに出来ればワンライナーで
829 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:22:09.75 ID:JHzHImy2.net] >>824 Invoke-WebRequestのOutFileオプションじゃなくて、EncodingオプションのあるOut-Fileコマンドレットの方を使ったら? (cmdじゃなくてpowershellから実行すれば、powershell -Command ""の部分はいらないよ) Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default test.txt 追記するなら、Appendオプション Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default abc.txt -Append
830 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 19:10:36.45 ID:VCJoAcsJ.net] >>825 レスありがとうございます。ですが出来ませんでした Fileは作られるのですが内容が以下のようになります StatusCode : 200 StatusDescription : OK Content : ここに中身が複数行 尻切れ RawContent : HTTP/1.1 200 OK Connection: keep-alive x-robots-tag: noarchive, nofollow, noindex なんか色々 Forms : {} Headers : 諸々 Images : {} InputFields : {} Links : {} ParsedHtml : mshtml.HTMLDocumentClass RawContentLength : 中身、Content +尻切れ部分 で保存するにはどう書けばいいですか? Win10.0.18363.1256 PSVersion 5.1.18362.1171
831 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 20:03:25.26 ID:kYgyiRJ/.net] (Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt
832 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 20:37:34.73 ID:VCJoAcsJ.net] >>827 出来ました!ありがとうございます! なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。 バッチで読み直して再保存すれば行けそうです やりたいことが可能になりました。感謝!
833 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 21:11:10.07 ID:CXRufgbD.net] >末尾に改行コード1つ余分に追加されてしまいます こういうの気持ち悪い! 誰か助けてあげて!
834 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:24:39.55 ID:kYgyiRJ/.net] ググって出てくるやつだとPowershellのVer5以上なら (Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt -NoNewline
835 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:38:36.87 ID:VCJoAcsJ.net] >>829 ありがとうございます。私もモヤモヤしてたので調べて報告するつもりでした >>830 ありがとうございます -NoNewline で末尾改行追加されませんがLFのままになってしまうようです たぶんLFをCRLFにreplaceしてからOut-File -NoNewline で行けそうかも、というところまで来ていたのですが、、 置換のコマンドレットが分からず苦戦しています
836 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 04:50:30.78 ID:aeRfyZfG.net] >>831 .NETのString.Replace()
837 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 05:23:59.73 ID:P27ySftq.net] powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -join '`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline" powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -replace '`n,`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline" リファレンスとにらめっこし何百回と色々試してこれに行き着いてこれなら行けそうと思ったのですがLFのまま。。 Get-ContentとかSet-Contentとかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです 基礎的な事から覚えないとちょっと自分には無理かもです^^;
838 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 11:05:46.69 ID:IMvwa6Jv.net] >>833 -replace '`n,`r`n' のところは -replace '`n','`r`n' じゃない? https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1#replacement-operator
839 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 11:14:10.52 ID:aoellUFv.net] SurfacePro8の、一応待たれてはいるがあまり期待されてない感は異常
840 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 14:29:13.42 ID:hxo0ZZXM.net] >>833-834 "`n", "`r`n" じゃねーの?
841 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 17:50:06.55 ID:P27ySftq.net] >>836 ヒントありがとうございます 最終的に以下で出来ました ren jane2ch.brd jane2ch.brd.bak &© jane2ch.brd.bak jane2ch.brd &&powershell -Command "(Invoke-WebRequest https://example.com/bbsmenu.brd).Content -replace \"`n\",\"`r`n\"|Out-File jane2ch.brd -Encoding default -Append -NoNewline" アドバイス下さった方皆ありがとう
842 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 21:36:03.86 ID:NKeMhQjy.net] Invoke-WebRequestはaliasで短くできるよ (Get-Alias -Definition Invoke-WebRequest).Name curl iwr wget Out-Fileはaliasが無い
843 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 16:52:16.58 ID:jgut+Hkv.net] 関数とクラスメソッドでreturnまわりの振舞い全然違うのかよ ほんまクソやな
844 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 17:32:29.13 ID:iwrlPpxO.net] 自分が言語を知らないだけなのに言語を叩くやつは技術力があれだって書込みをLinuxスレで見た 謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
845 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 18:39:57.15 ID:K4bi2CUk.net] 詭弁だね
846 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 12:59:00.83 ID:6NGWiCza.net] そんなウンコになるほど振る舞い違ったっけ
847 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 14:38:10.21 ID:SsQKjWAu.net] 関数のreturnは単に関数を抜けるだけ 出力はストリームを使う クラスのメソッドはreturn文でのみ値を返す 多くの言語でよくみられるやつ Write-Outputしても無視される
848 名前:デフォルトの名無しさん [2021/01/02(土) 14:45:10.44 ID:o3T1iAcx.net] 変数のスコープも違うよねー function f() { echo $a } $a = "test" f 関数はこれが気持ち悪すぎてメソッドしか使わなくなった
849 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 01:23:46.88 ID:RCSnKIYE.net] >>843 ,844 なるほどありがd
850 名前:デフォルトの名無しさん [2021/01/03(日) 01:30:49.55 ID:BT1KEPia.net] 質問です。 .NETのKeyedCollectionクラスを使用したいのですが、 パイプラインに関するエラーメッセージが出てうまくいきません。 解決方法を教えていただけませんか。 環境はWindowsPowerShell 5.1をVSCode上で実行しています。 ソースコードとエラーメッセージは下記のとおりです。 ◆ソースコード class Record { [string] $Key [double] $Data } class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] { [string] GetKeyForItem([Record] $item) { return $item.Key } } $r = [Record]@{ Key = "pi"; Data = 3.14 } $c = [MyCollection]::new() $c.Add($r) $c["pi"].Data # 3.14と表示されてほしい ◆エラーメッセージ: パイプラインの作成中にエラーが発生しました。 + CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RuntimeException 以上、よろしくおねがいします。
851 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 04:03:05.06 ID:leX2V3Ud.net] クラスごとにファイル分けてドットソースで読み込んで
852 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 04:09:59.45 ID:ORVbOLX2.net] >>847 うちでも再現したわ Win10 1909 一応定義をC#で書いたら動いたから載せておく Add-Type @" public class Record { public string Key; public double Data; } public class MyCollection : System.Collections.ObjectModel.KeyedCollection<string, Record> { protected override string GetKeyForItem(Record item) { return item.Key; } } "@ $r = [Record]@{ Key = "pi"; Data = 3.14 } $c = [MyCollection]::new() $c.Add($r) $c["pi"].Data # 3.14と表示されてほしい
853 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 04:29:20.63 ID:ORVbOLX2.net] ごめん >>846 宛ね >>847 まじですか でもPSの運用的にクラス定義で複数ファイルに分けるとかありえないわ コンソールからだと丸ごとコピペじゃなくて定義を1個ずつコピペするとエラーにならないし なんなのかね
854 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 08:40:29.46 ID:MW0NgZmT.net] PowerShellのclassってどの段階で解釈されるんだろう
855 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 12:17:05.18 ID:n1qZMfJK.net] 実行文が入っていない 単にコンパイルされる文、型の宣言・定義しか入っていない。 インスタンスを作ったりする、実メモリの割り付けをされる文がない
856 名前:846 [2021/01/03(日) 17:02:17.09 ID:BT1KEPia.net] >>851 クラス定義のps1ファイルの中身はそうすべき、ということでしょうか? >>849 確かにコンソールで全て定義すると動きますね。 クラス周りの動きが難しいです。。。 >>847 ありがとうございます。 下記のように書き直したところうまく動きました。 ◆Record.ps1 class Record { [string] $Key [double] $Data } ◆MyCollection.ps1 . .\Record.ps1 # ←これは無くても動く…?? class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] { [string] GetKeyForItem([Record] $item) { return $item.Key } } ◆Test.ps1 . .\Record.ps1 . .\MyCollection.ps1 $r = [Record]@{ Key = "pi"; Data = 3.14 } $c = [MyCollection]::new() $c.Add($r) $c["pi"].Data # 3.14と表示されてほしい
857 名前:851 mailto:sage [2021/01/03(日) 18:34:59.83 ID:n1qZMfJK.net] ファイルA の中で、ファイルB を読み込むと、 依存ファイルであるファイルBが、先に実行される事が確定するのだろう 一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
858 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 01:13:26.70 ID:MvQgNxU+.net] すいません、Powershellって、変数が空だった場合の デフォルト値を設定する方法ってありますか? bashでいうところの、 ${hoge:-fuga} って方法です。
859 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 02:45:37.83 ID:CsAW39lY.net] ねーよ VBSで言うIsEmpty相当すらない せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
860 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:03:25.19 ID:1A0NtNS9.net] ($nullでなく)空って状態はないと思うから、しいてやるならGet-Variableで変数が存在するか調べるくらいかね
861 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:17:46.65 ID:7KuEq4Kq.net] >>854 PowerShell 7の??演算子はいかがでしょうか
862 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:28:41.55 ID:6ewH2FY0.net] >>854 変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける 空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
863 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:34:36.49 ID:6ewH2FY0.net] >>856 変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
864 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 13:21:05.91 ID:ht1NLYQc.net] 7って便利なんだな
865 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:21:38.47 ID:R2rezzh3.net] >>854 >${hoge:-fuga サザエさんかよw
866 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:59:07.15 ID:o0FdcV6b.net] えっ?
867 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 22:43:44.97 ID:IvTx7xdj.net] foo,barも知らない人でしょ
868 名前:デフォルトの名無しさん [2021/01/07(木) 22:50:20.03 ID:iqGL0Mlk.net] ほげふがの語源ってサザエさんだったの!? マジで!
869 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 00:22:33.24 ID:s1r0Khta.net] 来週もまた観てくださいね $hong -or $fouf
870 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 10:41:54.36 ID:zUQduDYO.net] 逆にメタ変数でhoge、fugaってそこまでマイナーか?
871 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 11:27:10.91 ID:3ONG9Jp/.net] >>866 誰もマイナーとか言ってない
872 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 11:53:36.70 ID:zUQduDYO.net] >>867 そうか、それはすまなかった。 早とちりでございました。 お詫び申し上げます。
873 名前:デフォルトの名無しさん [2021/01/08(金) 12:25:26.48 ID:eXVg8SYp.net] >>868 詫びろとは言ってない >>867 誰かがマイナーと言ったとは言ってない >>865 今週観たとは言ってない >>861 ご指摘にはあたらない
874 名前:デフォルトの名無しさん [2021/01/08(金) 12:25:53.52 ID:eXVg8SYp.net] これ万能論法ですな
875 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 12:36:55.29 ID:2lGGPyYq.net] そう思ってるのは言ってる本人だけだろう
876 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:01:42.83 ID:KQEfE/JM.net] ※すべてのネットワークアダプタを無効にして、 Get-NetConnectionProfileは必ずエラーになる状態で実行しています。 $result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null $? False $result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null) $? True この場合、マル括弧がどんな働きをして 結果が変わってしまうのか教えてください。
877 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:03:45.10 ID:KQEfE/JM.net] ちなみにこうしても $result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi エラーメッセージ $? False $result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi) エラーメッセージ $? True という状態でした。
878 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 08:27:17.19 ID:kPw1IBO3.net] >>872-873 まあバグ(MS的には仕様とも言う)みたいなもんやね Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True. This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions. https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description なのでPowerShellを7にすれば解決するかと
879 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:13:27.43 ID:iGxXP/Ic.net] 5.1はメンテしないってことか? OSにデフォで入ってるバージョンなんだから直せよ
880 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:49:28.96 ID:kPw1IBO3.net] いきなり直したらユーザースクリプトのバグが顕在化したりするだろ どうでもいいようなスクリプトなら7に上げろよ
881 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 10:38:48.10 ID:amtktMoR.net] どうでもいいスクリプトで問題回避できるなら7に上げなくてもいいんじゃね。
882 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:36:00.49 ID:KQEfE/JM.net] >>874 ありがとうございます。 あげるのも怖いので別の方法にします。
883 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:45:27.45 ID:vKxQ0OMt.net] >>877 そう言うのは>>875 に言ってやれよ
884 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 16:15:40.54 ID:WaDdsN2m.net] >>878 あげる?のではなくて別物なので併用できるけど。 5.1 → powershell.exe 7.x → pwsh.exe
885 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 04:54:33.84 ID:3v4yt86U.net] 以下の表記の意味を教えてください。 void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback) メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。 $batch = New-Object Google.Apis.Requests.BatchRequst($service) $batch.Queue で表示される内容です。
886 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 08:11:25.80 ID:a907yL+h.net] クラスのメンバーにクラスがある時は+になるんじゃなかったか System.Environment+SpecialFolder みたいな [TResponse]はジェネリックの型引数 `1は型引数を1つ取るって意味
887 名前:881 mailto:sage [2021/01/10(日) 21:15:33.29 ID:3v4yt86U.net] >>882 ありがとうございます。ジェネリックというのは知らなかったので調べてみます。 あと、その、Queue[TResponse]、というメソッドに型が付いている?のもジェネリック関連でしょうか。
888 名前:デフォルトの名無しさん [2021/01/12(火) 16:53:39.85 ID:0UGYDHaB.net] pythonに飲み込まれるってマジ?
889 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 18:35:28.45 ID:U7HouJQi.net] pythonが吐血しちゃいますよ
890 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 11:04:50.14 ID:u12/DUzm.net] >>884 え?Pythonから.NET Framework扱えるようになるの?
891 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:04:34.41 ID:JJnXAm01.net] 知らんけど今はまだ使えないの?
892 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:35:42.75 ID:u12/DUzm.net] ironpythonなら
893 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 08:03:53.11 ID:4aouipyb.net] v7.1.1 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.1
894 名前:デフォルトの名無しさん [2021/01/18(月) 22:22:09.29 ID:6Ncg8pZo.net] 【D:\】の全てのフォルダやファイルに対して、作成日時や最終アクセス日時などを設定したいのですが、 PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" } ではエラーが出ます。 何がいけないのでしょうか?
895 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 22:59:36.90 ID:Pb59NPOt.net] 例えば特定の一つのファイルやフォルダなら上手く行くとか パイプを分解してどこでエラーになってるのかを突き止めるとか 丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
896 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 02:44:39.14 ID:m3MeBQ6p.net] 1.D:\が存在していない 2.D:\へのアクセス権がない 3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる どれかな? Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは フォルダへのアクセス時にエクスプローラー開いてると ”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても) 変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
897 名前:デフォルトの名無しさん [2021/01/19(火) 21:02:07.64 ID:qrtgnbPs.net] # set the target folder path $targetFolder = 'I:\'; # get all files including files in sub folders $itemList = Get-ChildItem $targetFolder -Recurse; foreach($item in $itemList){ $item.CreationTime = '2020/12/21 00:00:00' } なスクリプトで実行したらエラーなく出来ました。 お騒がせしてすみませんでした。
898 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 23:49:36.84 ID:XQEllFmW.net] >>893 >>890 私の環境で実行したら何のエラーもなく、CreationTimeが2021/01/01 00:00:00 になったの。 逆質問だけど、どんなエラーだったのか教えてください。
899 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 10:29:40.54 ID:sOzWFlEJ.net] エクスプローラーとか、バックグラウンドで動いているシステムなどが、 フォルダをロックしていたら、失敗する だから、タイミングによって、成功したり失敗したりする 読み取りロックは、読み取り同士では共有できるけど、 書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
900 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 21:14:40.94 ID:PMAucoEc.net] v7.0.4 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.4
901 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 19:49:56.64 ID:BJM8Dy5y.net] テキストファイルに設定できるストリームって何に使うんすか?
902 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 21:16:07.96 ID:lPCF/h8Q.net] テキストストリームの事なのかNTFSの代替データストリームの事なのか どちらなんだ
903 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 22:11:57.22 ID:qq3K45Kg.net] 代替データストリームはテキストに限った話じゃないのでは
904 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 22:45:50.85 ID:9akTDBYB.net] テキストに限った話ではないけど、質問者が正確に把握してるともまた限らない
905 名前:デフォルトの名無しさん [2021/01/29(金) 23:59:43.31 ID:t1LR5As2.net] PoweShellのクラスで、C#と同様にインデクサーを定義することはできますか? 例えば、あるクラスのインスタンス$hogeに対して $hoge[$i] という感じで添字でアクセスしたいです。
906 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:37:31.38 ID:jsWOzGKR.net] C#の演算子オーバーロードがPSで使えるかと同じ無意味な質問
907 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:01:58.79 ID:sgLd3qg+.net] >>902 使えるの?
908 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:07:09.19 ID:Ti7TRi+9.net] >>898 たぶんテキストストリームのことです file:stream1 ↑これ
909 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:24:57.96 ID:x4IKZ5QX.net] そのファイルに付属させたい情報を一緒にいれておくということだろう ソースだったら、開発秘話とか入れとけば?
910 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:26:58.51 ID:x4IKZ5QX.net] あと自分の写真とか連絡先とかプロフィールを入れとけばいいかもW
911 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:01:56.87 ID:Ti7TRi+9.net] >>905 >>906 ああREADME.md的なものをですか? なるほどそれは便利そう
912 名前:901 [2021/01/31(日) 19:31:38.13 ID:yFPHlREj.net] >>902 PowerShellでも.Netの コレクションクラスを使えますので、 インデクサーを使うこと自体はできますよね? 同様のことをユーザー定義クラスで実現できないかと思ったのですが、 無意味でしょうか…
913 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 20:11:33.10 ID:IDCaHEld.net] >>904 それ代替データストリームに見えるけどどの辺がテキストストリームなんだろ しかも、NTFSに依存する機能で.mdの代替とか悪手でしかない
914 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:36:09.24 ID:XDbQ82ak.net] >>909 結局何に使うのか言ってないじゃん
915 名前:デフォルトの名無しさん [2021/02/04(木) 23:44:34.92 ID:OAJDFKMl5] バカ不平多し★へつらい生きてるからリストラ対象 https://www.youtube.com/watch?v=carOYI-xNoI 勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは? https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s リーダー達の給料が高いのは単純労働者じゃないから https://www.youtube.com/watch?v=8o9il6dVXGk できません、自信がありません、無理です★ボンクラにしたのは誰? https://www.youtube.com/watch?v=54YNXSQsxuM 9割の人は、ただの作業員★自学自習こそ仕事の基本 https://www.youtube.com/watch?v=vIGKDmmBJcs サラリーマン、10年経てばボンクラ説 https://www.youtube.com/watch?v=QdfVJnVuLlY
916 名前:デフォルトの名無しさん [2021/02/05(金) 00:48:27.75 ID:a81hUa+F.net] PowerShellのパイプやリダイレクトは仕様が良くないね。 エンコードせずにバイナリデータのままパイプする従来の方法も選べたほうが良かったね。
917 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:45:47.08 ID:PbAzOwWf.net] cmd /c foo `| bar `> baz とでもしておけ
918 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 21:20:19.10 ID:FdcfXC45.net] >>912 これじゃあかんの [byte[]]$bin = cat -encoding byte
919 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 08:02:58.77 ID:xZe5l+zL.net] パイプを使いたいんだよ
920 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:37:27.62 ID:ya6+Y4aC.net] パイプカットするの?
921 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:28:17.57 ID:0arkAH5a.net] >>915 encoding byteがどういう型が返るか示しただけでもちろんパイプにも使えるけど
922 名前:デフォルトの名無しさん [2021/02/06(土) 23:58:30.54 ID:5Ze23T9D.net] >>913 `| や`>が解説されているマイクロソフト公式ページはどこになりますか? 検索キーワードが記号ばかりなので探し方が分からず困っております。 >>914 私の環境では、以下のエラーが出て動きませんでした。 Get-Content: Cannot process argument transformation on parameter 'Encoding'. 'byte' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
923 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 01:02:44.55 ID:hwDwbBnD.net] >>918 '|'はパイプ'>'はリダイレクトで調べれば出てくるよ bashの知識が必要になるな
924 名前:デフォルトの名無しさん [2021/02/07(日) 01:34:59.08 ID:IiZq+u+t.net] >>919 具体的なURLはどこになりますか?
925 名前:デフォルトの名無しさん [2021/02/07(日) 01:38:10.26 ID:IiZq+u+t.net] >>919 検索にbashの知識が必要というのは具体的にどういう意味ですか?
926 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 01:46:34.08 ID:IiZq+u+t.net] ひょっとして>>913 と>>919 は別人なのかな。 もし別人なら>>919 への質問はなかったことにしてください。論点がずれてるようだから。
927 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 07:11:26.49 ID:jVPjdJHk.net] @パターン1 $data = @('red','green','blue') if ( $data -ne 'green' ) { 'greenはありません' } greenはありません Aパターン2 $data = @('red','green','blue') if ( $data -ne 'pueple' ) { 'greenはありません' } greenはありません 両方とも同じ結果を返してしまいます。 配列と比較して、無かったらtrue、あったらfalseみたいな書き方ってありませんか? イメージとしては if ( $data.notContains('green')) みたいな書き方です。 用としては、if ( $data.Contains('green'))で足りるのですが、 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。 よろしくお願いいたします。
928 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:44:27.16 ID:jX/y7Db/.net] >>923 > 両方とも同じ結果を返してしまいます。 まず $data = @('red','green','blue') $data -ne 'green' で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う > 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。 どうしても-eqとか使いたい場合、俺なら($data -eq 'green').Count == 0って書くかな どう見ても$data.Contains('green')の方がわかりやすいと思うけど
929 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:58:10.78 ID:fgGFki9a.net] $data = @('red','green','blue') if (not ($data -eq 'green')) {} if (not ($data.Contains('green'))) {} if (not ($data -contains 'green')) {} if ($data -notcontains 'green') {} if ('green' -notin $data) {} -eq演算子はフィルタとして働くのでここでの用法は微妙 -in系の演算子は配列が大きいとオーバーヘッドが大きいらしい
930 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:59:45.82 ID:fgGFki9a.net] 否定をtrueにするってどういうことだろ $colors = @('red','green','blue') $found = $data -contains 'green' if ($found) { } else { } なら自然に読み下せる ここで$notFoundという変数を使われると気になる if (not $found) { # 先に書いておきたい処理 } else { # 長々とした本処理 } としたいという趣旨ならわかる
931 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:03:05.78 ID:fgGFki9a.net] 変数名を変え忘れたので訂正 $found = $colors -contains 'green'
932 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:18:17.21 ID:jVPjdJHk.net] >>924-926 レスありがとうございます。 > 否定をtrueにするってどういうことだろ > どう見ても$data.Contains('green')の方がわかりやすいと思うけど $exec_shinai_jikan=@('01','02','03') $imananji=Get-Date -Format HH if ($exec_shinai_jikan -notcontains $imananji){ "実行するよ" } else { "実行しないよ" } 実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので 出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。 >で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う ・0か0を超える値か ・nullかnullを除く何らかの値か でtrue or falseが決まる感じでしょうか? -notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。 ありがとうございます。
933 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:22:55.16 ID:5sEA4G4p.net] >>919 bashの知識は不要でしょ DOSですらパイプやリダイレクト存在するんだし
934 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:24:14.00 ID:fgGFki9a.net] なるほどそういう感じか -not演算子のハイフン書き忘れてた ごめんね
935 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:26:29.15 ID:fgGFki9a.net] >>924 ($data -eq 'green').Count -eq 0 これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね またPowershellの妙な癖を覚えてしまった
936 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:48:29.36 ID:jX/y7Db/.net] >>931 > これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって ならないよ、単に空の配列になるだけ gm -inputobject ($data -eq 'yellow') とかやればわかる
937 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:10:49.69 ID:fgGFki9a.net] >>932 ありがとう、勘違いしてた そこは自然な動きなんやね
938 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:45:02.08 ID:hwDwbBnD.net] >>920 https://docs.microsoft.com/ja-jp/powershell/ ここでリダイレクトとかパイプとか検索ワードを入れれば解説が出てくるよ
939 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 20:57:33.01 ID:rt2m338a.net] >>914 ,918 6.0で仕様変更された https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080 -Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
940 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 10:00:24.88 ID:hefdb5Yb.net] 可変長配列数?的なものの実現方法を教えてください。 CSVを以下の通り加工したいのですが、 1554412,A,B,C,D 2176944,D,C,E,F,G,H,I,J 4887447,F,H,J,A,K こんな感じのカンマ区切りcsvを 1554412,A 1554412,B 1554412,C 1554412,D 以下同じパターン で成形したいのです。 csv区切り文字は必ずカンマで、 フィールド数は行により異なります。 行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜 とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。 可変長配列数?的なものの実現方法を教えてください。
941 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:12:00.38 ID:hRqw8VTE.net] 2つ目のカンマ or 改行まで読んでから要素数2の固定長配列に入れるのはどうですか。 エレガントな方法ではないと思うので、他の方の意見も参考にしてください
942 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:19:41.40 ID:hRqw8VTE.net] あ、A, D, FじゃなくてA, B, Cでしたか。 マルチバリューカラムになっているのを正規化したいんですね。 最初の一つ目だけ取るのと勘違いしてました。 1. 一行読んでstring 2. カンマでstring.splitしてstring[] 3. [1]からstring.lengthまでを、[0]とstring.joinして、string[] 4. 全行ループ これでどうですか
943 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:17:13.97 ID:JrOSOdLx.net] PowerShell っぽくならこんな感じかな '1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{ $a, $b = $_ -split ',', 2 $b -split ',' | %{ "$a,$_" } }
944 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:01.55 ID:hRqw8VTE.net] どうしてこれ動かないの? $fが更新されない スマホでコード書くの疲れたんで、誰か教えて下さい。 https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
945 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:07:38.33 ID:bnTPmcqs.net] >>940 $xs[0]としてごらん 5行目"@ -split "`n"で意図通りになると思う
946 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:45:54.25 ID:JrOSOdLx.net] >>940 "[Environment]::NewLine" ↓ "$([Environment]::NewLine)"
947 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:58:58.82 ID:hefdb5Yb.net] >>938 とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。 レスの内容が半分分かりませんでした。 >3. [1]からstring.lengthまでを ここが猛烈にヒントになってこんな感じにしました。 foreach ($l in Get-Content C:\temp\test.txt) { $l=$l.Split(",") 1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) } } サンプルのコードをいただけると幸いです。 >>939 これも無事動きました。ありがとうございます。 %ってのを知りませんでした。 Powershell難しすぎです。 勉強してるんですが、正直心折れそうです。 bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。 死にそうです。
948 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:00:44.14 ID:hefdb5Yb.net] >>943 自己レスすいません。 これも結局、 write-host ($l[0],$l[$_]) } で間をカンマ区切りにしたかったんですけど、 1時間手を変え品を変えで結局ダメでした。 何が悪いんでしょうか。
949 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:12:55.91 ID:hefdb5Yb.net] 何度もすいません。 write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。 {write-host -Separator "," $l[0]$l[$_]} で無事に希望の出力を得ることができました。 ありがとうございました。
950 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:08:14.80 ID:lj0aoxL+.net] すっきり書けなくてもどかしい $csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
951 名前:デフォルトの名無しさん [2021/02/11(木) 02:23:21.20 ID:VegncXCD+] SIer業界がブラックな理由を解説する。エンジニアは自社開発をしているWeb業界がオススメ! https://www.youtube.com/watch?v=iy4nnAI9og4 【業界研究】IT業界でひと括りにするのは危険。SIer、Web制作、 アプリ開発で仕事内容が全く違います。【就活・転職】 https://www.youtube.com/watch?v=_IJQ2iBkf4w エンジニアの仕事が稼げる理由とは?プログラミングスキルと 仕事の需要は比例しないので、実は技術力が低くても稼ぐことができる! https://www.youtube.com/watch?v=82Bs-NH8jAM 通勤時間が長い人ほど無能説。家賃節約とか言っている暇があったら、 会社の近くに引っ越して浮いた時間に副業したほうがお金も貯まるし強くなれる。 https://www.youtube.com/watch?v=mt6K1RJnk6I プログラミングに英語は必要か?に対する明確な答え https://www.youtube.com/watch?v=WWULJbVECKU 私がヤフーを辞めた理由 https://www.youtube.com/watch?v=-G-7Hc3rJw8 ITエンジニアの種類と必要なスキル ?アプリケーションエンジニア編? https://www.youtube.com/watch?v=K9BaS2eBGmw 日本と海外のプログラマーの違いを比較してみた https://www.youtube.com/watch?v=u1OyelvNqM0
952 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 19:38:29.26 ID:rrBqcjKj.net] >>940 newlineにクォートつけてたわw >> 940, 941 さんthx 一応quote外した結果。 https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
953 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:16:23.07 ID:q/2+I+Zd.net] $?で直前のコマンドの実行結果を知ることができますが、 直前に実行したコマンドのPIDを知る方法ってありませんか? Start-Process -FilePath c:\bin\command.exe -ArgumentList 1 $cmd1pid=get-chokuzenn-pid $cmd1pid 78968 Start-Process -FilePath c:\bin\command.exe -ArgumentList 2 $cmd1pid=get-chokuzenn-pid $cmd1pid 4292 実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。 Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て そのプロセスを終了させるか判断したいと思っております 書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、 Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、 Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます すいません、よろしくお願いいたします。
954 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:17:40.74 ID:q/2+I+Zd.net] test.ps1 Start-Process -FilePath c:\bin\command.exe -ArgumentList 1 $cmd1pid=get-chokuzenn-pid $cmd1pid 78968 Start-Process -FilePath c:\bin\command.exe -ArgumentList 2 $cmd2pid=get-chokuzenn-pid $cmd2pid 4292 すいません、スクリプトの例に誤りがありました 訂正します
955 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:57:59.46 ID:JWXF4JEZ.net] v7.0.5 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.5 v7.1.2 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.2
956 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 10:15:49.19 ID:JXvYdGCL.net] 引数に -PassThru を付けて戻り値からidで取れないかな?
957 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:17:25.75 ID:jxDcSv/l.net] >>949 プロセスIdなんて取る必要ない(むしろ危険) >>952 が言うように-PassThruオプションつけるとSystem.Diagnostics.Processオブジェクトが返ってくるからKill()メソッド呼ぶだけでいい
958 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:51:19.53 ID:q/2+I+Zd.net] >>952 >>953 $process = Start-Process -PassThru notepad $process.Kill() できました ありがとうございました
959 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:58:44.73 ID:aXMNNeBu.net] すばらしい
960 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 18:04:24.59 ID:elIMNXvv.net] 音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、 dir /n /-b /s *.mp3 > playlist.txt の結果をランダムに入れ替えるにはどうすればいいでしょうか? (乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
961 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:45:47.08 ID:PYtZn7CJ.net] >>956 テキトーでいいなら dir /n /-b /s *.mp3 | sort -prop @{Exp={[Guid]::NewGuid()}} > playlist.txt
962 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 20:59:17.73 ID:9JYy97c0.net] Sort-Object {Get-Random}じゃあかんの?
963 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:06:22.08 ID:PYtZn7CJ.net] >>958 それでもいいけど、遅いらしい https://aquasoftware.net/blog/?p=612
964 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:14:23.98 ID:D/l9Txdy.net] 自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない 5分とか掛かるならちょとやだけど
965 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:58:32.75 ID:WEbw7iAW.net] プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに
966 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:34:07.74 ID:XvWS5Qrl.net] >>959 のリンク先のコードで質問です 勉強のためちょこちょこ編集してみたところ、 「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました $r = @(1,2,3,4,5,6,7,8,9,10) $r=($r | sort -Property @{Exp={[Guid]::NewGuid()}}) $r $foo = @(1,2,3,4,5,6,7,8,9,10) $foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}} $foo[0] 前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、 なぜ、後者のように、書いてもランダムになるのかが納得いきません 変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
967 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:48:16.31 ID:PYtZn7CJ.net] >>962 やってることは同じで結果が単に$foo[0]に入ってるだけ $foo[1]~$foo[9] の内容は変わってないはず ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
968 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:59:06.67 ID:XvWS5Qrl.net] >>963 ありがとうございます 書き方が違うけど処理が同じというとらえ方でいいですか? "パターン1" $foo = @(1,2,3,4,5,6,7,8,9,10) $foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}}) $foo "パターン2" $foo = @(1,2,3,4,5,6,7,8,9,10) $foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}} $foo パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
969 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:33:24.56 ID:PYtZn7CJ.net] >>964 ああ、すまん ( ) は見落としてた パターン1は単に式を ( ) で包んでるだけだからパターン2と同じと思っていい
970 名前:954 mailto:sage [2021/02/13(土) 23:36:43.19 ID:elIMNXvv.net] Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort {Get-Random} や、 Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}} でうまくいきそうです。 ありがとうございました。
971 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:07:20.96 ID:rA0IJrKX.net] >>965 ありがとうございますよくわかりました パイプで処理がわかれると思っておりましたが、 =で右辺と左辺に分ててる感じなんですね
972 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:22:33.69 ID:D24G58JB.net] >>966 上手く行って何より 蛇足だけど > foreach {$_.FullName} の所は PowerShell 的には > Select-Object FullName でもいいかな
973 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:28:18.02 ID:D24G58JB.net] >>967 他の言語に似せるためか代入文は最優先で解釈されるようになってるみたい まあよくわからなかったら多少余分でも ( ) を付けといた方があとから見ても誤解されにくいと思う
974 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 08:22:42.85 ID:islL1Ifn.net] Announcing the PowerShell Community Blog https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
975 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 04:45:12.99 ID:xcCpjLov9] 高度IT人材、富士通は最大年収3500万円へ https://www.nikkei.com/article/DGXMZO58248520Q0A420C2000000/ 「富士通年収3500万!」日本のIT企業の年収も、高額化してきました https://needs-explorer.co.jp/5801/ AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へsierblog.com/archives/1994846.html 【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材 https://coinmap.jp/archives/56639 東芝、幹部候補をスタートアップに出向 21年度から https://www.nikkei.com/article/DGXZQODZ284AV028122020000000 スタートアップで「武者修行」、村田製作所など導入 https://www.nikkei.com/article/DGXMZO6588293005112020LKA000 「スタートアップ点火」中部から世界 名古屋支社シンポ https://www.nikkei.com/article/DGXZQOFD087YN008122020000000 インフルエンサーによる独自製品開発やブランド構築を支援するGenflowは英BGFから11.4億円調達 https://jp.techcrunch.com/2021/01/21/2021-01-20-genflow/ 本業より副業で稼ぐ「パワフル副業者」急増で企業に求められる新しい組織づくり https://dime.jp/genre/1076364/
976 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:20:29.72 ID:XBzTqCMZ.net] posh-git と GetChildItemColor でダイブましになった 他にもおすすめあったらおせーて!
977 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 20:50:03.67 ID:8GGn/OTs.net] GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ
978 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:20:13.77 ID:NQgDi+il.net] #test.ps1 param([array]$foo) echo ('$ARGS[0]' +':'+ $ARGS[0]) echo ('$foo[0]' +':'+ $foo[0]) echo ('$foo[1]' +':'+ $foo[1]) echo ('$foo[2]' +':'+ $foo[2]) PS> .\test.ps1 aaa -foo bbb,ccc,ddd $ARGS[0]:aaa $foo[0]:bbb $foo[1]:ccc $foo[2]:ddd PS> .\test.ps1 aaa -bar bbb,ccc,ddd $ARGS[0]:-bar $foo[0]:aaa $foo[1]: $foo[2]: PS C:\script> PS> \test.ps1 aaa $ARGS[0]: $foo[0]:aaa $foo[1]: $foo[2]: @引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。 Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。 ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
979 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:22:05.89 ID:NQgDi+il.net] >>974 行数制限に引っかかったので分割します。 @は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。 なにとぞよろしくお願いいたします。
980 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 10:00:39.98 ID:TaWWQOJL.net] >>975 about_Functions_Advanced_Parameters https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
981 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 23:49:57.97 ID:NQgDi+il.net] >>976 ありがとうございます。 読み解くのに時間がかかりそうですが、 希望のものが書いてありそうです。
982 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 03:07:24.22 ID:hWQCqBl5.net] そもそもPowerShellの関数(コマンドレット)は空白区切りで引数渡すんだけどね >>974 はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ 自動変数の$args(配列)はjavascriptでいう残余引数みたいな物 PS> .\test.ps1 aaa -foo bbb,ccc,ddd 名前付き引数 $foo に配列 bbb,ccc,ddd が渡され、未定義の aaa が $args に渡されてる PS> .\test.ps1 aaa -bar bbb,ccc,ddd $foo に先頭の引数 aaa が渡され、未定義の -bar と配列 bbb,ccc,ddd が $args に渡される 特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
983 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 15:14:39.63 ID:VgGpSMHu.net] PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう しかも結局help云々が毎回出るし MS頭おかしいんでねーの
984 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 19:40:18.23 ID:gsxqF2ed.net] おバカ自慢要らね
985 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 10:00:11.18 ID:fu8qQk1O.net] v7.0.6 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.6 v7.1.3 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.3
986 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 14:33:26.87 ID:LuYPD+lh.net] | where-objectで、条件に引っかかったら0(True)、引っかからなかったら1(False)を返す方法ってありませんでしょうか。 あるサービスの実行状態を知るために、こういうことをしてるんですが、 (Get-Service | Where-Object -Property Name -Match Adobe | Where-Object -Property Status -Match Running).length 1 ←AdobeがRunnningだった 0 ←AdobeがRunnin
987 名前:gじゃなかった 他に、もっとPowershellっぽい書き方があったら教えてください [] [ここ壊れてます]
988 名前:デフォルトの名無しさん [2021/03/13(土) 14:59:52.96 ID:4/YYKqK7.net] >>982 ワンライナーにこだわっているのか?
989 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 15:31:11.30 ID:33EHGK5P.net] Ruby の3項演算子みたいなものは無いの? 真偽値となる条件式 ? 真の時の値 : 偽の時の値
990 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 15:36:01.07 ID:ErfpRTBJ.net] (gsv adobe*).status -contains 'running'
991 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 15:48:12.79 ID:Qa5+c/Kf.net] >>982 [int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
992 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 20:59:36.95 ID:3roljCwu.net] >>984 三項演算子 https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-70#ternary-operator
993 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 15:40:02.21 ID:am3+IzSP.net] PowerShellは処理の方法が多くていいな
994 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 21:46:47.24 ID:8YYOAayf.net] 連想配列の参照渡しで function f([ref]$h) { $h.value } $h = @{ a = 0; b = 1} f([ref]$h) はうまくいくんだけど、引数もう一個増やして function f([ref]$h, $s) { $h.value; $s } $h = @{ a = 0; b = 1} $s = 2 f([ref]$h, $s) にすると、 f : パラメーター 'h' の引数変換を処理できません。引数には参照型を指定する必要があります。 何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
995 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 21:55:49.94 ID:8nGQn8Lf.net] 括弧とカンマいらないのでは
996 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 22:41:43.33 ID:T+RcbFBu.net] f ([ref]$h) $s
997 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 23:07:21.02 ID:8YYOAayf.net] >>991 出来た!ありがとう でもなぜその書き方になるのかわからない(汗
998 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 15:30:15.42 ID:2OtrSpOH.net] カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね 関数はスペース区切りで渡す これは文法だから理由はない
999 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 16:45:16.26 ID:bRJV5TtK.net] 1, 2 で配列作っちゃうようにしちゃったからねぇ 記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
1000 名前:デフォルトの名無しさん [2021/03/16(火) 23:02:58.87 ID:Bd62bkLQ.net] >>988 処理の方法が多いことは、可読性が落ちる原因にもなる。 PythonをもちあげてPerlをくさす時に使われたのと同じ論法だよ。
1001 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 08:00:24.75 ID:EzeD0xtp.net] 俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ
1002 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 08:19:50.03 ID:vnLGIRIV.net] しかしPerlではないのがいいところ
1003 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 08:38:00.89 ID:sqd1XF3h.net] Why did you do that? $VAR/ {} / Weak Intellisense https://docs.microsoft.com/en-us/archive/blogs/monad/why-did-you-do-that-var-weak-intellisense The $ in front of variables comes from our design center of being an interactive command oriented shell. Interactive shells are NOT the same thing as Scripting languages with command interpretors. Interactive shells are case studies in engineering tradeoffs (another way of saying that is that they tend to be a little quirky). There is a tension between the needs of a great interactive experience and a great scripting/programming experience. Time and time again during the course of the project, people would try to make us "choose" between one or the other. We refused. We believe that if you work hard enough at it, you can solve the puzzle and provide a great solution for both. We were absolutely subborn on this point. Time and time again, we were able to succeed with this approach if we travailed long enough.
1004 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 11:52:58.50 ID:eAjGywmP.net] interactive性は'標準で'エイリアスが定義されてることで十分満足してる
1005 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:08:54.40 ID:t06qOp3P.net] PerlとPythonは文字に対するencode, decodeの意味が逆。まめな
1006 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:30:47.74 ID:/MpReTiX.net] PowerShell -Part 5 https://mevius.5ch.net/test/read.cgi/tech/1615994992/ 次スレ。
1007 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:39:40.12 ID:3weRgygV.net] >>1001 ナイス滑り込み
1008 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 01:34:48.09 ID:dIgskCmL.net] 質問良いですか
1009 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 441日 9時間 26分 17秒
1010 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています