1 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:36:12.07 ID:LaQ04ZoE.net] 前スレ PowerShell -Part 5 https://mevius.5ch.net/test/read.cgi/tech/1615994992/ 次スレは>>980 が立ててね!!
331 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 15:57:51.90 ID:K1O9Nfx2.net] だが、そこが良い
332 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 16:21:27.92 ID:vDWzHeJO.net] ドトネトのコレクションはPS的には未知の参照型オブジェクトだから PSのスコープの影響も受けないし、 配列みたいに勝手に構造を壊されたりもしないから積極的に使う事をお勧めしたい
333 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 17:15:25.08 ID:z1zzxM54.net] >>324 いや俺はpowershellのパイプは好きだぞ 反応頭悪すぎない?
334 名前:デフォルトの名無しさん mailto:sage [2022/05/19(木) 17:16:58.08 ID:z1zzxM54.net] ID変わったけど323=328な 好きなものを無条件に全肯定しないと則敵認定ってまさに信者やん
335 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 15:12:12.74 ID:rcI504Fo.net] -pv/-ovで黒魔術できるのがpwshパイプの真骨頂、汚いけど… パイプは一般にバッファ単位の目詰まりが難だけど、これは-obで自由に調節できる -pv/-ov/-ovは共通パラメータだからいつでも使えるしpitfallsは大体これで解決できるからパイプ活用したいなら、最重要で覚えるべし
336 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 20:50:08.65 ID:8qofalUL.net] >>330 パイプで最重要で覚える事はさあ、パイプはめっちゃコストコが掛かる書き方だな!って理解することじゃないかなあ 1行ずつ読んでパイプに渡してたら日が暮れるし…ずっとパイプの中で暮らさないといけない程変な言語でもない… あっこの処理、パイプで連携したら効率いいかも…なんてあんまないのでな これがパイプの真骨頂!って例を見せてくれたら、まあ考えを改めてもいいが…君の発言は新しいもの好きの勇み足発言にしか見えなくて痛々しい…
337 名前:デフォルトの名無しさん [2022/05/20(金) 20:56:56.50 ID:zxJBX/+G.net] PowetShell大好きパイプ大好き 可能な限りパイプを使うように努めてるよ
338 名前:デフォルトの名無しさん [2022/05/20(金) 20:58:03.25 ID:zxJBX/+G.net] ちょっと間違えちゃった
339 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 21:00:45.78 ID:slL0jKxc.net] アホらし C#と同じように書きたいならAdd-TypeでC#書けばいいでしょ
340 名前:デフォルトの名無しさん mailto:sage [2022/05/20(金) 21:52:53.66 ID:XK9Y5vcV.net] 俺はバイブの方が好き♡
341 名前:デフォルトの名無しさん mailto:sage [2022/05/21(土) 04:11:37 ID:xI11xSxR.net] 結局どんな言語や書き方であろうと慣れでしか無い 読み辛いとか言う奴の大半が適応力やワーキングメモリの低い低能
342 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 14:10:16.59 ID:KYl341LT.net] 2つ以上のcsvをできる限り簡単に結合する方法ありますでしょうか。 a.csv id,name,gender 以下データ b.csv address,phone 以下データ $firstcsv = a.csv $secondcsv. = b.csv $ketugou = connect-csv -delimiter ',' firstcsv[0] + firstcsv[1] + $secondcsv[0] + $secondcsv[1] + firstcsv[2] $ketugou id,name,address,phone,gender 以下データ という感じであれば最高です。
343 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 15:56:20.58 ID:2VGP7oaH.net] bash -c "paste -d , a.csv b.csv"
344 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 18:24:56.01 ID:maoDzYC5.net] カラムの順序指定もしたいみたいだから、cutとかでもう1処理いるね。 PowerShellだと (>>338 ) | ConvertFrom-Csv | select id,name,address,phone,gender | ConvertTo-Csv ただしConvertFrom-Csv・ConvertTo-Csvは 元データを正確に再現する必要がある場合には難あり。 (Trim()が掛かるとかダブルクォーテーションで括られるとか。)
345 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 18:27:45.99 ID:maoDzYC5.net] paste使えない環境とか、Trim()掛かると困るとか、PowerShellだけで実装したい場合 function Merge-Csv { Param ( [Object[]] $InputObject, [string[]] $Header, [char] $Delimiter = ',' ) $tbl = [Data.DataTable]::new() # 1行目をカラム名として使用 foreach ($csv in $InputObject) { $tbl.Columns.AddRange(($csv[0].Split($Delimiter))) } # 各CSVの同じ行同士をDataRowにする。 for ($lineIdx = 0; $lineIdx -lt $InputObject[0].Length; $lineIdx++) { $rowData = @( foreach ($csv in $InputObject) { $csv[$lineIdx].Split($Delimiter) } ) $null= $tbl.
346 名前:Rows.Add($rowData) } # カラム順序を指定順序に変更する。 for ($order = 0; $order -lt $Header.Length; $order++) { $tbl.Columns[$Header[$order]].SetOrdinal($order) } # CSV形式で出力 foreach ($row in $tbl.Rows) { $row.ItemArray -join $Delimiter } } [] [ここ壊れてます]
347 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 18:28:27.86 ID:maoDzYC5.net] 注意: ・CSVは1行1要素の配列で、1行目にヘッダがあり、データに区切り文字を含んでいない想定。 ・各CSVのヘッダに重複はない想定。 ・1つ目のCSVの行数を基準にしている。 ・エラーチェックしてないので適宜追加すること。 例: $csv1 = @( @" id,name,gender csv1.r1.id,csv1.r1.name,csv1.r1.genger csv1.r2.id,csv1.r2.name,csv1.r2.genger csv1.r3.id,csv1.r3.name,csv1.r3.genger "@ -split '\r?\n' ) $csv2 = @( @" address,phone csv2.r1.address,csv2.r1.phone csv2.r2.address,csv2.r2.phone csv2.r3.address,csv2.r3.phone "@ -split '\r?\n' ) Merge-Csv $csv1, $csv2 -Header id, name, address, phone, gender | ConvertFrom-Csv | ft -a id name address phone gender -- ---- ------- ----- ------ csv1.r1.id csv1.r1.name csv2.r1.address csv2.r1.phone csv1.r1.genger csv1.r2.id csv1.r2.name csv2.r2.address csv2.r2.phone csv1.r2.genger csv1.r3.id csv1.r3.name csv2.r3.address csv2.r3.phone csv1.r3.genger
348 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 19:20:10.32 ID:KYl341LT.net] >>338-340 ありがとうございます! 書き起こしてくれるなんて、感謝のしようがありません・・。 少し読み解くのに時間がかかりそうですが、半日考えても良い手が思いつかなかったので しっかり読んで身に着けたいと思います。 ありがとうございました。
349 名前:デフォルトの名無しさん mailto:sage [2022/05/29(日) 23:48:36.53 ID:MBI5r2Hn.net] 割とちゃんとした風なのが出てきてよかったな >>337 の結合は別にCSVとして処理する必要ねーじゃんと思ってたわ
350 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 22:45:36.14 ID:5eMIb3Vr.net] どこでみんな基礎を習得してるか気になる 都度ネット検索して見よう見まねでやってるけどちゃんと体型立てて学んだ方が良い気が最近してる 上のcsv解決の発想だって全然出てこないもの
351 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:00:34.01 ID:1p0oXEXT.net] PowerShellから入る人なんていないでしょ 初学者がPowerShellでまともなプログラミングを学ぶのは難しいからC#でもやった方がいいよ
352 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:03:23.68 ID:6thXMpkz.net] 薄々そうじゃないかと思ってた やっぱC#行くべきなのね
353 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:08:03.98 ID:fHLpS2ag.net] >>345 C#もJavaも含めてほぼプログラム言語扱えない非プログラマーだけどPowershellは普通に学習出来たよ
354 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:14:06.95 ID:5eMIb3Vr.net] 会社では追加基本インストール禁止だから使える自動化ツールがVBA、WSH、CMD、Powershell くらいしか無いのです VBA VBSは一通り使えるけどやっぱモダンなの使いたいって事でpowershellを使いこなしたいんですよ っていうパターンは自分以外にもきっといるんだろうなって思って
355 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:14:46.76 ID:0w3w2Q9u.net] >>347 どうやって学習した?
356 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:16:19.58 ID:bPn6KqG1.net] どの言語を学んでも解決ロジックなんかは数をこなして他人のソースサンプルを見るとかしていかないと見につかない C#とか言語仕様は入門書が充実してるところが違うだけで読んだからといって 問題解決力が身につくわけではないことは心得ておかないとね 教科書を全部読んだからといって入試問題が解けるか?ってこと
357 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:16:45.35 ID:0w3w2Q9u.net] >>348 >会社では追加基本インストール禁止 そうさせましょう、そのために弊社の何とかを使いましょう、と営業してくるウザい連中がいるからね
358 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:29:45.91 ID:ArE2
] [ここ壊れてます]
359 名前:ZMbw.net mailto: >>348 プライベートのPCでやればいい プロでプログラミングやってる人間は学生時代やプライベートの時間など多かれ少なかれ仕事以外の時間を捧げてるんだよ 基礎から学ぶというのはそういう連中と同じ土俵に立つってことだ [] [ここ壊れてます]
360 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:38:38.76 ID:fHLpS2ag.net] >>349 MS365関連の処理やらcmdスクリプトの代替やらログ処理やらを目的に応じてパイプ処理やら勉強してたらどうにかなった 元々プログラム言語としての習得したんじゃないから特殊かも
361 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:38:47.91 ID:5eMIb3Vr.net] 方法論を聞いてるのに精神論を語る奴っているよね
362 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:49:53.74 ID:+PNdSWJO.net] 普通にpwsh使ってコマンドライン作業してれば覚える スクリプトもその延長線上
363 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:54:36.28 ID:9dnvWkql.net] いうほど精神論説いてるやついる? 〇〇論を聞いてるのに〇〇論を、そういう気の利いたフレーズを言ってみたい気持ちが先行してるように見える
364 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 23:57:11.82 ID:NR5IHQxQ.net] 本腰入れて文法とかほじくりたいならまずはpowershellexplainedってブログオススメ
365 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 00:32:11.60 ID:eW10AB/z.net] やりたいことが先にあって、それを如何に良く実現するかをあれやこれや試行錯誤していくのがいいよ 漠然と習得したいとか体系的にとかやってると漠然としか身につかない あと人のものをよく見ること こういうやり方があったのか、ってのを一つでも多く体験するのがいい
366 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 00:43:09.74 ID:z7NqqS3T.net] コマンドラインで補完叩きながら必要そうなパラメータやメンバ探してれば大体望みのものが見つかるはず フラッシュ暗記的にどこに使えそうなものがあったか思い出せればヘルプも引ける 俺がワンライナー以上の事をするときの具体的な手順 必要そうな関数を一つ定義してはパラメータ与えて何回かチェック、動けばfunction:から追記リダイレクトして最後にvimで手直ししてmainを添えて取り敢えず動くものを完成 暇なときに気が向いたら体裁整えたり関数まとめたり構造化 副産物として汎用性高そうなの出来たら$profileにも追記 こういうlisp的なサイクル回して使っていくのがいいと思う
367 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 00:43:37.67 ID:BZqNx7Tc.net] >>357 ありがとうございます 髭のオッサンは気になりますがチラ見した程度だと復習がてら良さそうです
368 名前:デフォルトの名無しさん mailto:sage [2022/05/31(火) 23:10:25.48 ID:OuANH9gG.net] このコマンドがうまく動きません。 1行で書いて、うまく動かす方法を教えてください powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process remove-item -ArgumentList C:\Users\Public\Desktop\test -Verb runas" Start-Process : このコマンドは、次のエラーのため実行できません: 指定されたファイルが見つかりません。 とエラーが出て正常に実行できません。 powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process cmd -Verb runas" powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process notepad -ArgumentList C:\Windows\System32\drivers\etc\hosts -Verb runas" このコマンドはうまく動くので、同じ感じで行けるのかと思ったのですが、上のremove-itemコマンドの場合がうまくいきません。
369 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 04:00:12.01 ID:U+A7iBPz.net] remove-item.***なんて言う実行ファイルは存在しないから無理なのは当たり前 どうしてもstart-processに繋げないといけないの?
370 名前:361 mailto:sage [2022/06/01(水) 05:21:30.48 ID:lJWk1HAY.net] >>362 レスありがとうございます。 > どうしてもstart-processに繋げないといけないの? というわけではありません。 1行で管理者権限でRemove-Item C:\Users\Public\Desktop\testを実行する ということが出来れば、どんな方法であっても構いません。 ①powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process powershell -Verb runas" ②Powershellが管理者:Windows Powershellとして起動する。 ③remove-item C:\Users\Public\Desktop\test を実行する という①と③を1行でまとめる方法です。
371 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 11:08:03.91 ID:yxFCK4Jy.net] >>363 自分もこの問題は解決出来なかった UAC有効な環境で管理者権限使うならStart-processか管理者権限実行なのも一緒 しかしStart-processはコマンドレット実行出来ない模様 ワークアラウンドで別のcmdスクリプト作ってそいつをStart-processで実行させるという非スマートな力業でどうにかするしかなかった
372 名前:デフォルトの名無しさん mailto:sage [2022/06/01(水) 11:27:22.75 ID:HV/k13ls.net] powershell -NoProfile -ExecutionPolicy unrestricted -command "Start-Process -Verb runas -FilePath powershell.exe -ArgumentList ‘-command remove-item C:\Users\Public\Desktop\test'" 試してないけどこんな感じで出来ん? 不備とかエスケープ処理が必要だったりとかあるかも powershellから昇格させたpowershell呼んでそこでdel
373 名前:デフォルトの名無しさん mailto:sage [2022/06/02(木) 00:03:43.97 ID:B9Goniqn.net] >>365 出来ました
374 名前:361 mailto:sage [2022/06/02(木) 00:05:13.65 ID:B9Goniqn.net] >>365 出来ました!ありがとうございます!
375 名前:デフォルトの名無しさん [2022/06/04(土) 17:47:37 ID:TSmSPUgr.net] 定義した変数のメモリ開放は$nullの代入でいいのでしょうか? メモリリソースが足りませんとエラーがでるので。
376 名前:デフォルトの名無しさん mailto:sage [2022/06/04(土) 18:56:11.76 ID:IRaDT1CY.net] Remove-Variable まあ設計を見直した方がいいと思うけど
377 名前:デフォルトの名無しさん [2022/06/04(土) 20:19:25 ID:TSmSPUgr.net] ありがとうございます!
378 名前:デフォルトの名無しさん [2022/06/18(土) 20:04:49.41 ID:2rZBula1.net] フォルダ内にあるすべての画像ファイルにおいて、その画像のWidthが1280のものだけを削除するスクリプトを作成中ですが、ファイルはどうやって削除するのでしょうか? Get-ChildItem "D:\Download\test" | Sort Name | % { $img = [System.Drawing.Image]::FromFile($_.fullname) if ($img.Width -eq 1280) { Remove-Item $_ } } だと Remove-Item : Cannot find path 'D:\Download\test_01.jpg' because it does not exist. とエラーがでるのですが、パスの設定方法がいまいちわかりません。
379 名前:デフォルトの名無しさん mailto:sage [2022/06/18(土) 20:44:46.51 ID:opzT6/bZ.net] Remove-Item $_.FullName か $_ | Remove-Item かな
380 名前:デフォルトの名無しさん [2022/06/18(土) 20:51:53.83 ID:2rZBula1.net] ありがとうございます。やってみます!
381 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 00:03:25.24 ID:d/5y1flf.net] VSCode でも、コマンドプロンプト・PowerShell を使うと、 ファイル・フォルダ操作のアクセス権限が無いから、 右下のトーストに、そういうエラー通知が来る そこで、アプリに対して、操作を許可する それと、Windows でもファイルパス区切りに、/ を使える。 C:/Users/Owner/Documents/a.txt
382 名前:デフォルトの名無しさん [2022/06/19(日) 18:24:35.04 ID:xfiYTNc0.net] 今までこれをbatで起動させていました! ------- sc stop DoSvc @echo off echo. echo ==================== echo Enable_TaskScheduler echo ==================== echo. rem ----- win10_ServicePreparation_DoSvc ----- reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f exit ------- 特定サービスの作動強制停止およびスタートアップ強制置換です しかしこれでは管理者権限を付与する場合、人間がコンテキストで管理者実行をその都度選んでやらねばならず、 反映の有無も再起動が必要だったり再起動なしで切り替わったり不安定です PowerShellのps1はそれら管理者権限付与の自動化や再起動不要が可能と聞きました ネットにはバッチのような記述解説サイトが乏しいので、コードの代替案、またはおすすめの参考書等があれば教えてください〜
383 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 19:51:13.64 ID:k543CSlC.net] mevius.5ch.net/test/read.cgi/tech/1597442426/857
384 名前:デフォルトの名無しさん mailto:sage [2022/06/19(日) 22:46:16.09 ID:WW6NzJIS.net] サービスを削除でぐぐれ
385 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 08:42:33.76 ID:sIvuqcVm.net] レジストリを直接編集するな Windows 秘話: なぞのキー https://docs.microsoft.com/ja-jp/previous-versions/technet-magazine/dn456530(v=msdn.10) > 変更または操作されることがまったく意図されていない設定が存在します。そのような設定を見つけたときには、とにかくそっとしておいてください。
386 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 08:48:02.21 ID:3bt1t/j5.net] それはメーカーが分解すんなって言うのと同等の話
387 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 10:58:01.21 ID:4+IWkf9p.net] 目的がテレメトリ関連の通信の遮断だしサービス削除しかないと思うけどな
388 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 12:48:20.89 ID:LhK9JJfo.net] Stop-ServiceやSet-Serviceあたり使えばいいんじゃね
389 名前:デフォルトの名無しさん [2022/06/20(月) 12:50:56.18 ID:E6UoKUAB.net] ハード的家電において、メーカーの分解拒否声明は「簡単に直せる部分を民間でやられたら業績下がるやんけ」理論が殆どと、感電・火災防止が少しって感じ 同じくソフトにおいても、メーカーの調整拒否声明は「テレメトリを拒否されると情報転売が減って業績下がるやんけ」理論がほぼ全てで、僅かに不測の事態とその対応への危惧(面倒≒ユーザー側の心配はしていない)が含まれる感じ 大体、テレメトリの最終的な購入先は巡り巡ってそれらを利用したがっているガチ支那チョン露などの反社集団でしょうに だから米国大手の支那癒着や制裁緩和の声が消えないわけで 例え吸われても、利用先が日本国内または米国のみであればそんなに問題視しませんわ 逆にDoSvcなんかは設定での表面上なOFFやグルポをしようと内部でMB単位のダウンロードをしっかりしていますし、 DoSvc動作用の基礎データか何かと期待したいものの時間経過で増大します→つまり120%ガチテレメトリなんですよ そしてスタートアップを無効にしなければOS設定にかかわらず強制実行+勝手に通信+削除しようと復活増量し続ける 無効にしたスタートアップさえ手動(トリガー)へ勝手に戻される→高頻度自主改変がなければOSから「DoSvcの無い空間」を作り出せない こんなソフトの癌とも言えるものを放置出来る方々の無神経さは平和の極みですな 安いからっつって支那産PCを大量購入し自衛隊へ配布した馬鹿で愚かな国賊官僚と同レベルに思う
390 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 14:23:54.66 ID:XSN9SiQv.net] >>375 = >>382 でいいのかな テレメトリを目の敵にするのは勝手だけど だからってレジストリを直接編集していい事にはならないからね
391 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 14:47:00.73 ID:YswTafv8.net] 会社の物とかでなければレジストリくらい好きに弄ったらいいだろ それで何かあっても自己責任ってだけで
392 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 14:58:58.89 ID:h1SesB6c.net] レジストリ編集では期待通りにいかないことを体験的に踏まえた上で上手くいく手順としてPSでやりたいって流れの質問なのにレジストリ編集するな!ってクソバイスやん 自己責任を理解せずに杓子定規で正しさを主張し続ける人にはアレな傾向を感じざるを得ない
393 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:20:32.49 ID:4G+nodK/.net] batはレジストリの値を弄ってるのみにしか見えん この後にPCを再起動でもさせるのか?
394 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:32:06.62 ID:JJsUxIz5.net] だいぶ前から色んなところで聞いているけど タスクマネージャーで権限がないから書き込めないとか 黒窓が出るのが嫌だとか 原因を追求する気もないのに聞いて回るクソヤロウだよ
395 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 15:46:09.48 ID:3ZXlTK7A.net] >>378 レジストリの変更はともかく この記事の「おしゃれなレストランにいると考えてみてください」 という謎の例えはどうかと思うw
396 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 17:32:51.93 ID:6RdOG7wm.net] >>386 弄ってるよ その続き読んだ? 引き続きレジストリ弄りたがってるとしか読めないならアスペかもな
397 名前:デフォルトの名無しさん [2022/06/20(月) 18:28:34.00 ID:E6UoKUAB.net] バッチスレは論外ですな batやスケジューラの挙動に関して最初から細かく説明していたのですが、どう考えてもガチ支那の五毛っぽいDQNが私の最後のレスを部分的にチラ見しただけで、答えている感じでしたね^^; 冷やかしがオナニーしている状態で、バッチスレの名が泣いていました 原因も提示し、それら打開策などの例や実施結果を挙げつつも、堂々巡りの、それもむっちゃ浅い既出内容をドヤ顔で書き込まれる感じ バッチスレで唯一のプログラミングスレらしい収穫は「俺だったら.ps1で作る」という言葉、ただひとつのみでしたわorz あとはなかなかまとまった時間が作れず、もう少ししたらps1版のサービス削除などもネット検索・吟味できそうです 最も盛んでしたwinXP時代にソフトを制作していた年代は今50前後?で開発・更新停止などが相次いでいますよね そんで2022年現在、高校辺りでプログラミングを必修とする云々が出ている 間が20年くらいスッカラカンなのは日本の経済力低迷を表しているようで大変残念です そりゃ今の官僚層が自衛隊へ支那産PC送ったりするはずですわ、そんなのが国を回しているんだから^^;
398 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 20:16:43.25 ID:+SBlN13D.net] 直接編集しちゃいけないなんてルールはないから好きにしな 無知が無学のまま弄った責任を負わされることを防ぐためのおまじないでしかないよ
399 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 20:23:12.95 ID:ItZjQb2L.net] 行き着いた答えがレジストリ書き換えの定期実行だから頭悪いにも程がある
400 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 21:31:17.15 ID:yjTGWQu/.net] 俺はちゃんとバッチスレにサービスの設定を変えるコマンドの事書いたぞ コマンドのドキュメントのリンク付きで このスレでも他の人が設定変更用のコマンドレットのこと書いてるし 何をどう見てるのやら
401 名前:デフォルトの名無しさん mailto:sage [2022/06/20(月) 22:24:09.27 ID:4G+nodK/.net] レジストリなんて不整合があれば書き戻されることもあるのでレジストリ弄るだけで解決しない
402 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 00:22:01.55 ID:KK61fTqr.net] てかバッチスレが余りにも低水準かつ五毛全開だったからこそ呆れ、唯一のまともなアドバイスに従ってパワシェへ切り替えようとしているのにさ わざわざ別スレのリンク貼ったりパワシェスレへ出張(笑)してきたり、ほんま意味不明ですわw ま、ストーカー云々の類いはリアルもネットも気色悪いですしバッチスレ関係者から得られるものが無いのも経験済み 似た主題なので両方のスレを高頻度で訪問しているのかな、そう思うことにして特定のレスは流し聞きしときますよwww
403 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 00:36:09.32 ID:xELEw2uC.net] Linux なら、systemd とか Windows の仕組みは知らないけど、 レジストリはその結果を収めたデータベースだから、 結果をいじっても問題解決にはならない 設定は各アプリ製作者が作っているものだから、 製作者以外の人間にできる事は、アプリをアンインストールする事だけ 設定にも様々な依存関係があるから、 アプリの内容も分からない人が、ある設定を変えても、どう作用するか分からない 例えば、アプリのメモリが解放されなくなって、 他のアプリも動かなくなるかも それに設定を変えても、再起動しないと有効にならないかも知れないし、 再起動すると、設定が元に戻るかも知れない OS 起動時の処理に、設定読み込みを登録しているかも知れない
404 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 09:15:38.14 ID:lQ/zAxwG.net] ウダウダと一体何の話をしてるんだ いいからStop-ServiceとSet-Service使えよ ただ老人がじゃれ合いたいだけなのか?
405 名前:デフォルトの名無しさん mailto:sage [2022/06/21(火) 11:49:55.72 ID:+f2eC/vV.net] こんな辺境にまでやべーやつ | Out-Null
406 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 20:51:18.50 ID:At4JlVSH.net] >>375 管理者やSYSTEMじゃなくてTrustedInstallerとして実行しても駄目か? もちろんレジストリをいじるんじゃんなくてSet-Serviceを使うんだぞ もう見てないかもしれんが
407 名前:デフォルトの名無しさん mailto:sage [2022/06/22(水) 22:28:41.71 ID:OsaOMnRZ.net] わざわざ召喚しようとする馬鹿発見伝
408 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 13:29:04.40 ID:VuoDyj+3.net] 最近foreach文のコレクションの要素を受け取る変数の名前をつけるのが めんどくさくって for文のカウンター変数の名前に i を使うのはよくありますが foreachにも同じような定石ってありますか?
409 名前:デフォルトの名無しさん [2022/06/24(金) 13:47:20.90 ID:4Qrsm7mD.net] aオブジェクト名
410 名前:デフォルトの名無しさん [2022/06/24(金) 14:25:06.98 ID:K2we1Lar.net] e
411 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 20:56:03.77 ID:EMaN3eAt.net] Item
412 名前:デフォルトの名無しさん mailto:sage [2022/06/24(金) 23:55:58.07 ID:/S8ogjuv.net] item, element
413 名前:デフォルトの名無しさん [2022/06/26(日) 07:43:19.31 ID:G39l7ngg.net] 例えば$url = "https://yyyy.xxx/aaa/bbbb/2/"があり、最後の[2/]をカウンタを使ってアクセスしたいとおもいます。 その際、$nextUrl = ($url -replace ".{2}$") + $cnt + "`\" で行けると思ったのですが、何か間違えていますでしょうか?
414 名前:デフォルトの名無しさん [2022/06/26(日) 08:16:14.03 ID:JGEtGMnz.net] -replaceの使い方を間違えてる
415 名前:デフォルトの名無しさん [2022/06/26(日) 11:32:39.54 ID:G39l7ngg.net] replaceですか。ありがとうございます
416 名前:デフォルトの名無しさん [2022/06/29(水) 00:00:51.24 ID:x2p/lm6W.net] arrayListの使い方がわからない。 ---------------------------- $arrayReturn = new-object system.collections.arrayList $col = new-object PSObject | select "A", "B", "C" foreach ($i in 1..3) { $col."A" = $i $col."B" = $i + 1 $col."C" = $i + 2 $nul = $arrayReturn.add($col) } $arrayReturn ---------------------------- 上記のコードを実行すると以下のようになってしまう。 A B C - - - 3 4 5 3 4 5 3 4 5 本当は以下のようにしたい A B C - - - 1 2 3 2 3 4 3 4 5 なぜうまくいかないのか謎。
417 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 00:51:19.50 ID:cjQj
] [ここ壊れてます]
418 名前:2yfD.net mailto: $col のnew-object生成をforeach{}内に移動してみては [] [ここ壊れてます]
419 名前:デフォルトの名無しさん [2022/06/29(水) 07:19:16.62 ID:x2p/lm6W.net] >>410 うまくいった はあああああああああああああ!? なんで!? なんでこれでうまくいくんだ!? ループの中に入れたら毎回$colの中身が破壊されると思うんですけど????
420 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 08:20:00 ID:8GN1KOCk.net] PSObjectは参照型 ArrayListに追加されるのはオブジェクトそのものじゃなくてオブジェクトの参照だけ
421 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 09:10:01.99 ID:ofsaM31D.net] >>412 完全に理解しました。thx
422 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 14:16:08.11 ID:SZ5j8L6g.net] PSReadLine 2.2.6 enables Predictive Intellisense by default https://devblogs.microsoft.com/powershell/psreadline-2-2-6-enables-predictive-intellisense-by-default/ 入力しようとしているコマンドを予測 〜PowerShellで「Predictive IntelliSense」が既定有効に 履歴やプラグインなどを参考に推測できるIntelliSense機能 https://forest.watch.impress.co.jp/docs/news/1420812.html
423 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:06:08.62 ID:h+5hcb7e.net] PSCustomObjectは積極的に使っていいものかどうか判断できない 結局C#でクラスや構造体宣言して使った方がいい気がするし Powershellで作成したPSCustomObjectを、同ソースに埋め込んだC#コード側から参照する方法ってある?
424 名前:デフォルトの名無しさん mailto:sage [2022/06/29(水) 21:46:04.47 ID:4kwBO65f.net] >>415 dynamic
425 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 01:46:52.84 ID:LVSNczoT.net] >>415 New-Object PSCustomObject や [PSCustomObject]@{} は Win10 の v5.1 なら Add-Type の C# でなくとも class があるからスクリプトでの使用頻度は下がった。 Win7 の v2 では function NewABC {} みたいなコンストラクタ的な関数用意して積極的に使ってた。 Win10 の今でも ConvertTo-Csv へ渡す前に日時や数値を書式指定して文字列化するために使ってる。 CSV に日本語カラム名が欲しい時に日本語プロパティ名の class 用意するのはなんか気が引けるけど [PSCustomObject]@{} や Select-Object での誰が見ても短命なオブジェクトなら気にならない。 データだけでメソッドがなく複数作るなら System.Data.DataTable も有り。 .Columns.AddRange([string[]]) でプロパティ(DataColumn)定義して .Rows.Add([Object[]]) でデータ(DataRow)追加する使い方なら意外と手軽に使える。 日本語カラム名の使用も問題ないし。
426 名前:デフォルトの名無しさん [2022/07/06(水) 09:44:42.33 ID:L+R7c7Gd.net] -replaceと-ireplaceの違いって分かりますか? まだ勉強中ですが、当然のように出てきて両方同じ説明しかされてないので気になって調べてみてもどこにも解説がなくて… 扱える値の範囲が違ったりとかするんでしょうか? 普通はどっちを使うものなんですか?
427 名前:デフォルトの名無しさん [2022/07/06(水) 11:05:49.65 ID:MXaUuSJv.net] 1.完全に理解した←初心者 2.チョットワカル←中級者 3.全然判らん←上級者
428 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 11:41:17 ID:HSp/EaB5.net] >>418 https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7.2 既定では、 -replace 演算子では大文字と小文字が区別されません。 大文字と小文字を区別するには、次を使用します -creplace。 明示的に大文字と小文字を区別しないようにするには、次を使用します -ireplace。 replaceの既定動作を変更する方法は知りません。 大文字小文字を区別しようがしまいがどっちでもいいときは replace そこんとこ間違ってもらっち
429 名前:瘢「るときは ireplace か creplace 普通がどっちかは分かりません。 [] [ここ壊れてます]
430 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 13:11:25.93 ID:c6fRPAAn.net] 例えば、Ruby のCSV 処理なら、 require 'csv' input_csv = <<"CSV_TEXT" id,果物 1,りんご 21,スイカ 33,みかん CSV_TEXT # 2次元配列 ary = CSV.parse( input_csv, headers: true ).each do |row| row[ '果物' ] = "レモン" if row[ 'id' ].to_i == 21 end p ary.to_a #=> [ ["id", "果物"], ["1", "りんご"], ["21", "レモン"], ["33", "みかん"] ]
431 名前:デフォルトの名無しさん [2022/07/06(水) 13:16:19.97 ID:iisDFTgh.net] >>420 ありがとうございます! 理解できました! 明示的に大文字の区別をつけるかつけないか指定する際に利用するものなんですね! たしかにそれだと【普通】は場合によるとしか言えないですよね
432 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 20:34:21.87 ID:428zggiP.net] 迷ったら明示でいいと思う
433 名前:デフォルトの名無しさん mailto:sage [2022/07/06(水) 22:49:51.62 ID:pVM7wVd2.net] パワシェルの-replaceは勝手に右辺を正規表現と解釈するから それが必要ない場合は文字列.Replace()のがいいよ
434 名前:デフォルトの名無しさん mailto:sage [2022/07/07(木) 08:47:36 ID:fDYvmpy4.net] >>423 そうですね! >>424 おお、知りませんでした。 ありがとうございます!
435 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 13:33:50.89 ID:EP1tRVB4.net] Windowsでコマンドラインシェルとして使う場合に 外部コマンド引数のクオーテーションの振る舞いをなんとかして欲しい 例えばpwshを外部コマンドとして使うとして pwsh -nop -c "`$a = 'abc'; `$a | out-host" は期待通り abc が出力されるのに pwsh -nop -c '$a = "abc"; $a | out-host' はエラーになるの不便過ぎる
436 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 20:51:35.26 ID:Bjqd/A21.net] 補完が有効になってやっとまともに使えるようになったなよくこんなクソ長くて覚え辛くて入力し辛いコマンドレットなんて使ってるよなお前ら しかしMSって言語やフレームワークでもそうだが命名規則にセンスねーゎ なんでnpmやgitみたいに使いやすく作れないのか壊滅的にセンスねーゎ
437 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 21:48:06.89 ID:SkLqj5eb.net] 互換性のあるエイリアス https://docs.microsoft.com/ja-jp/powershell/scripting/learn/compatibility-aliases
438 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 22:10:30.33 ID:EP1tRVB4.net] PS> pwsh -nop -c "`$a = 'abc'; `$a | out-host" abc PS> pwsh -nop -c '$a = "abc"; $a | out-host' abc: The term 'abc' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. これほんと何がどうしてこうなるの?
439 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 23:27:21.05 ID:UIv0TQaX.net] pwsh.exeへのコマンドラインとして解釈されるから、まずOSのルールに従って引数リストが次のように分解される -nop -c '$a = abc ; $a | out-host' pwsh.exeの内側でコマンド文字列を再結合した時点では既にダブルクォートが失われているという寸法
440 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 23:35:00 ID:v6YmQ/+d.net] PS内で呼び出すならスクリプトブロックでよくね?
441 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 23:40:56 ID:UIv0TQaX.net] 無茶言うなよ… pwshの-cより右ならスクリプト扱いで、cmdやその他大勢の右ならOS解釈? pwshという同名のオレオレアプリの類だったときもスクリプト扱い? 言語仕様の一貫性的にあかんことになるだろ常考
442 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 23:49:47 ID:cCHwpa3p.net] もしかして リモートコマンド
443 名前:デフォルトの名無しさん mailto:sage [2022/07/08(金) 23:52:42 ID:PFPNTTsE.net] >>429 「'$a = "abc"; $a | out-host'」の「'〜'」は そのコマンドライン上の文字列リテラルである事をPowerShellに指示してる事になって PowerShellは1つの文字列「$a = "abc"; $a | out-host」の事だと受け取る。 コマンドが実行ファイルの実行で、その引数の文字列にスペースがあると その文字列全体が「"〜"」で括られて文字列「"$a = "abc"; $a | out-host"」になる。 ↑Windows PowerShell v5.1のTrace-Commandで確認 ↓自信なし powershell実行時の引数パース時に「\"」とか「"""」とかではない 単独「"」は不正な(余分な)メタキャラとして取り除かれるもよう。 で-cには「$a = abc; $a | out-host」が渡る。 >>430 確か「OSのルール」だと、実行ファイルに渡される引数は単一の文字列で、 スペースで区切ったり「"」を特別扱いするのはpowershell(pwsh).exeの独自のただし非常に一般的な仕様。 (大抵は、exeにコンパイルした際のコンパイラの仕様。)
444 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 00:09:26.45 ID:qWQ5DRIr.net] Linuxのpowershellなら PS> pwsh -nop -c '$a = "abc"; $a | out-host' abc になるんだろうな
445 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 08:04:26 ID:qWQ5DRIr.net] コマンドプロンプトで pwsh -nop -c "$a=\"abc\"; $a | out-host" とするのは " 内部の " をエスケープするように見えて自然に納得できる Windows版のPowerShellだけ pwsh -nop -c '$a=\"abc\"; $a | out-host' とするのは ' 内部の " をエスケープさせられて気持ち悪すぎる おまけにLinux版でこう書くと動かないんでしょ
446 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 10:32:21.09 ID:d4+i07Ea.net] >>436 コマンドプロンプト(cmd)だともっと高難易度の問題がある。 cmdのメタキャラ(&, |, <, >など)が偶数番目の「"」の後にあるとだめとか、 powershellコンソール以上に問題有り。 pwsh -nop -c "$a=\"&abc\"; $a | out-host" 同一のシェル名(pwsh)であっても、OSによって他プロセス起動の作法が違うのは仕方ないと思う。 国や地域で言葉や文化が違っても仕方ない感じ。 (POSIXとかに規定あればば別だが。) 例えば「ping」を動かすだけにしても結局オプションも挙動も違う訳だし、 現時点では他プロセス使う時点で、移植性考慮はプログラマの領分かな〜と思ってる。
447 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 10:48:49.98 ID:d4+i07Ea.net] PowerShellのコンソールやスクリプト上で他プロセスを起動したい場合、 自分だとほぼ下記2通り。 (A) System.Diagnostics.ProcessStartInfoを使う。 (ちゃんと制御したい場合。スクリプトだと基本これ。) $si = [Diagnostics.ProcessStartInfo]::new() $si.FileName = 'powershell.exe' $si.Arguments = '-nop -c "$a = \"abc\"; $a | out-host"' $si.UseShellExecute = $false $proc = [Diagnostics.Process]::Start($si) $proc.WaitForExit() (B) 引数を1つずつ@()に入れ、「"〜"」としたい場合は最初から値に含める。 (コマンドラインとかで手軽に。…手軽?) & 'powershell' @('-nop', '-c', '"$a = \"abc\"; $a | out-host"')
448 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 10:59:09.60 ID:qWQ5DRIr.net] MSYS2のbashもWindows上のコマンドラインシェルだけど pwsh -nop -c "\$a = 'abc'; \$a | out-host" pwsh -nop -c '$a = "abc"; $a | out-host' のどちらでも動くんだよね PowerShellには頑張って欲しい
449 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 14:41:14.65 ID:OGG0CV73.net] わざわざProcessStartInfo使うとかめんどくさいわ Start-Processでいい Start-Process -FilePath 'powershell.exe' -ArgumentList '-nop -c "$a = \"abc\"; $a | out-host"' -NoNewWindow -Wait
450 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 21:16:37.86 ID:d4+i07Ea.net] ProcessStartInfoが面倒なのは同意。 Start-Processで済む時は使う事もあって 大体はUseShellExecute = $trueの時かな。 Start-Processを使わない一番の理由は-Redirect*がファイルパス指定な事。 出力を無加工でファイル出力したい事がまずないので使いづらい。 なんで-PassThruのProcessオブジェクトの出力制御変更のスイッチじゃないのか。 標準出力・エラーを同時に制御するとデッドロックしやすいからかな。 Start-Processがその辺うまい事制御してくれたらスクリプトでも使うんだけど。
451 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 21:55:59.58 ID:0vXUA52p.net] コマンドラインパラメーターの処理はexeをビルドした処理系のスタートアップコードに依存するのだ MSのC/C++やMingwとかで微妙に変わってくるのだガハハ WindowsでC/C++/C#の場合argvとかではなくWin32APIのGetCommandLineで取得するのが一番正解に近い
452 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 22:06:03.52 ID:qWQ5DRIr.net] "" や \" が必要な仕様は気持ち悪いって話をしてたつもりが… ネイティブコマンドを呼ぶのはコマンドと引数を並べて書くだけが普通でしょ about_Parsing の icacls を呼ぶ例もそのまま並べてる そのままと異なる動きをさせたい時以外は、>>438 も>>440 も面倒すぎる
453 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 22:40:11.92 ID:GKrnmeJx.net] 引数のワイルドカードを展開するかしないかみたいなやつね
454 名前:デフォルトの名無しさん mailto:sage [2022/07/09(土) 23:17:22.46 ID:d4+i07Ea.net] MSもこの辺の気持ち悪さ・分かりづらさは分かってるみたいで core v7とかだと環境変数かなんかで、パースルール変更できるんじゃなかったっけ。 Win10のv5.1しか使わないから知らんけど。
455 名前:デフォルトの名無しさん [2022/07/10(日) 00:25:59.02 ID:qiFT6lHF.net] 実行順がわかりにくい
456 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 00:55:31.74 ID:KsOikrPY.net] 何言いたいかがわかりにくい
457 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 01:17:57 ID:KsOikrPY.net] >>443 > ネイティブコマンドを呼ぶのはコマンドと引数を並べて書くだけが普通でしょ 例えば $a = "abc"; cmd /c "echo $a" を実行したら「$a」と出力されて欲しくて 「abc」と出力されて欲しければ>>438 ,440ってこと? 好みが分かれるところかなー
458 名前:デフォルトの名無しさん [2022/07/10(日) 04:27:28.58 ID:qiFT6lHF.net] UNIXのシェルスクリプトのマネにならないようにした結果がこれ
459 名前:デフォルトの名無しさん [2022/07/10(日) 04:30:45.24 ID:qiFT6lHF.net] PowerShellは、記号に独自の意味を持たせているから、PowerShell職人を養成しないと使いこなせない。
460 名前:デフォルトの名無しさん mailto:sag [2022/07/10(日) 09:49:01.94 ID:os7PFybL.net] PowerShell in ActionにはUNIXシェルを参考にしたっていろんな所に書いてあるけど たとえば比較演算子とか
461 名前:デフォルトの名無しさん [2022/07/10(日) 10:20:51 ID:j6DdFbos.net] powershellはPerlの匂いがする 俺が好きになった理由はここ
462 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 20:59:21.65 ID:KsOikrPY.net] >>450 記号に独自の意味を持たせてる言語は多数あるのでは。 というか程度の差こそあれ殆どでは。 学習せず「使いこなせる」言語はないでしょ。
463 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 21:53:38.94 ID:bG/pnkmn.net] powershellの記号が特殊とかはあまり思わないな それより配列の扱いがトリッキーとかの方が職人の養成が必要と思う
464 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 22:11:42.01 ID:PiYySnCe.net] ファイル名に[]が含まれてて苦労した人なのかなと思った
465 名前:デフォルトの名無しさん [2022/07/10(日) 22:53:56.17 ID:qiFT6lHF.net] >>453 バッチファイルとの相性が最悪なのに気づかないとは情けないよ、あんた。
466 名前:デフォルトの名無しさん [2022/07/10(日) 22:55:51.37 ID:qiFT6lHF.net] >>451 あらゆる言語を参考にして、いろいろ混ぜ込んで、奇妙奇天烈なものになってしまった。
467 名前:デフォルトの名無しさん mailto:sage [2022/07/10(日) 23:58:19.25 ID:RTsqHO1/.net] まあ最大の問題は、空白をトークンの区切り、改行を入力に終わりとしたことだな
468 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 00:03:16.90 ID:bX2QAhdS.net] 変数のスコープが他と違うPowershellには何も期待してない グローバル変数を更新したつもりがローカル変数と見なされたりして使い難すぎる グローバルデータを全部.NETのコンテナに逃がしてようやく使えるようになった
469 名前:デフォルトの名無しさん [2022/07/11(月) 00:04:59.61 ID:vt1vW9IA.net] ファイルや文字列の操作の構文がヘンテコすぎる
470 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 01:41:49.71 ID:4UtqkfgJ.net] 超ヘンテコなJavaScriptだって一世を風靡したんだからPowershellだっていけるし(震え声
471 名前:デフォルトの名無しさん [2022/07/11(月) 03:32:17.37 ID:vt1vW9IA.net] >>461 あんたPowerShellをほどんど知らないでしょ?
472 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 07:53:28.56 ID:3aArSxtS.net] >>456 そんな話してなかったでしょ。会話になってないよ。 バッチ(コマンドプロンプト)上でワンライナー書くときに 記号の取り扱いに注意しなくていいメジャー言語は一つも知らない。
473 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 09:42:24.64 ID:zwDcIdQY.net] >>463 個人的にはバッチは制限多過ぎだよね 今回の問題もPowershellというより旧cmm互換性のせいだし
474 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 10:44:52.35 ID:KonxbxUI.net] あんた あのこの なんなのさ
475 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 11:27:13.34 ID:4o6o7MFx.net] おらシェル子のこどほどんどしらねっちゃ
476 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 13:10:07.01 ID:ekYGS06D.net] そもそもpsでスクリプト使うならバッチじゃなくてps1だろ
477 名前:デフォルトの名無しさん mailto:sage [2022/07/11(月) 20:50:06.93 ID:M3Mn448S.net] >>460 どこがどうヘンテコって思い込んでるんだ?
478 名前:デフォルトの名無しさん mailto:sage [2022/07/12(火) 00:36:46.01 ID:XdROtN2x.net] Perlなんかもヘンテコって思ってれば筋は通る
479 名前:デフォルトの名無しさん mailto:sage [2022/07/14(木) 22:41:31.83 ID:ztzbKaJ8.net] 久々にvbsで書いたらめっちゃ素直でスラスラ書けるわ Powershellはせめてレキシカルスコープで作り直してくれ クラス使えって?
480 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 10:39:19.02 ID:y/m5s/RL.net] VBSはクソだろ https://twitter.com/Benshi_Orator/status/1546400388680945665 (deleted an unsolicited ad)
481 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 12:26:17.41 ID:nJv/8gNm.net] >>470 psだってレキシカルスコープだよ どういう動作を求めてるのかはしらんけど
482 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 13:13:05.28 ID:Wgy0KDme.net] ダイナミックスコープだったような
483 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 13:20:06.85 ID:Wgy0KDme.net] PowerShellの悲しい点は、関数とスクリプトブロックが動的にスコープされることです。 しかし、私が驚いたもう1つの点は、変数が内部スコープ内でコピーオンライトとして動作することです。 $array=@("g") function foo() { $array += "h" Write-Host $array } & { $array +="s" Write-Host $array } foo Write-Host $array 出力は次のとおりです。 g s g h g これにより、動的スコープの苦痛が少し軽減されます。 しかし、どうすればコピーオンライトを回避できますか?
484 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 13:22:56.94 ID:Wgy0KDme.net] これの解決策 ([ref]$array).Value += "h" ちとうんこすぎるね
485 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 14:34:08.02 ID:ROJrTMPq.net] コピーオンライトじゃなくてローカル変数が新しく定義されてるだけでは 動的スコープが嫌ならGetNewClosure()を呼べ [PSv2]PowerShellでクロージャ&カリー化 https://winscript.jp/powershell/204 ScriptBlock.GetNewClosure Method https://docs.microsoft.com/en-us/dotnet/api/system.management.automation.scriptblock.getnewclosure
486 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 16:26:41.50 ID:mFZqR7Di.net] せめて問題を理解してからレスしろよ この動的スコープとは何ですか? ほとんどのプログラムは、理解しやすいため、レキシカルとも呼ばれる静的スコープを使用します。ソースコードを見ると、範囲内にあるものがわかります。Pythonの例では、スコープ内のxの唯一の値はxのグローバル値です。 対照的に、PowerShellは動的スコープを使用します。このモデルでは、スコープスタックに基づいて実行時に変数を検索します。関数を呼び出すたびに、新しいスコープを作成し、すべての値を親スコープからそのスコープにコピーします。PowerShellの例では、printXがsetAndprintXから呼び出されると、setAndprintXスコープで設定された$xの値を取得します。 なぜ動的スコープが必要なのですか? 字句スコープよりも動的スコープを選択する理由について、適切な説明を思い付くことができません。 「健康は病人だけが見ることができる王冠です」
487 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 17:59:02.69 ID:jPbc5odD.net] function foo() { $global:array += "h" Write-Host $array } & { $global:array +="s" Write-Host $array } ってやるだけじゃねーの? そもそもグローバル変数自体はそれ程使わん、ましてや関数やスクリプトブロックで更新なんてほぼやらん
488 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 21:33:28.03 ID:Keau4pUF.net] >>477 PowerShell in ActionによるとダイナミックスコープはUNIXシェルを参考にしたらしい
489 名前:デフォルトの名無しさん mailto:sage [2022/07/15(金) 23:56:32 ID:avBUMPl6.net] using namespace System.Collections.Generic $list = [List[string]] @('ggg'); '$list={0}' -f ($list -join ', ') | oh function f {$list.Add('fff'); 'f={0}' -f ($list -join ', ') | oh;} &{$list.Add('sb'); 'sb={0}' -f ($list -join ', ')|oh;} f '$list={0}' -f ($list -join ', ') | oh ↓ $list=ggg sb=ggg, sb f=ggg, sb, fff $list=ggg, sb, fff
490 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 13:19:21.19 ID:3YCfDQK3.net] >>480 .NEtのListコンテナ使うと意図通り動くのはなんでなん Powershellの配列の変数は値型とか? この辺をちゃんと理解ておきたい
491 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 14:25:05.61 ID:QBrOblFw.net] Listかどうかは関係ない 変数に新しい値を代入してるかどうか >>474 の $array += "h"は 新しく作った配列を $array に代入してるけど >>480 の $list はそんな事してないでしょ
492 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 14:36:33.24 ID:3YCfDQK3.net] >>482 えーつまり$array += "h"は文字列への追加じゃなくて やってることは$array = $array + "h"相当で新規に文字列のインスタンスとローカル変数が作成されるってことなの? $arrayに対してのAdd相当は$global:的な装飾子以外にないの?
493 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 15:02:15.96 ID:m/XBj/Ao.net] メインclerだけど、動的静的スコープの使い分けがclの武器と刷り込まれてた 評判悪いのか… 呼び出し側から振り分けられるのは便利では?出力先とか
494 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 15:49:49.15 ID:OVIs5jsH.net] lispのようにメモリ上フラットにオブジェクトが住む思想(~pwshのfunction:プロバイダ)だと、動的スコープになるのが自然では レキシカルな文脈が無いのだから
495 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 15:54:08.82 ID:yus9SEVI.net] Powershellの配列は固定長だよ 追加はできない +=演算子はその見た目のイメージ通り、新しい配列による再代入を伴う これはスコープとは関係ない問題
496 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 15:57:07.03 ID:m/XBj/Ao.net] ミュータブルかイミュータブルか、あと参照の話がごっちゃになってるよね GetNewClosureはclのfunctionフォームと等価だね
497 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 16:10:18.66 ID:XIhDxiQx.net] >>479 unixシェルもpwshもclもそうだけど、関数定義をズラズラっとダンプできて、それをちゃんと読み戻せる言語は原理的にレキシカルスコープでは有り得ない (暗黙のうちにletやクロージャ生成を行う)ブロックぽい構文でレキシカルスコープを模倣することは可能だけど
498 名前:デフォルトの名無しさん mailto:sage [2022/07/16(土) 17:23:13 ID:3YCfDQK3.net] LISP族はletか何かで変数に対しての宣言を必ずするからダイナミックでも違和感ないでしょ Powershellの違和感は暗黙的に変数の意味が代わるところじゃないかな
499 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 18:41:53.37 ID:zSvUsLU3.net] コード適当に書いていってある程度の規模になった頃にそろそそ関数化でもすっか! ってなった時に下手にグローバル変数更新してたりすると即はまるなコレ しかも一見何が悪いのかさっぱり判らないという Powershellコーティング十か条でも壁に貼っとかないとな
500 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 21:43:25.29 ID:dCc2dzlx.net] about_Scopes https://docs.microsoft.com/ja-jp/previous-versions/dd315289(v=technet.10) PowerShell のスコープ完全に理解した https://tech.blog.aerie.jp/entry/powershell-advent-calendar-2018-18
501 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 22:10:40.71 ID:CGK3IbQv.net] いや下手にグローバル変数更新はできんだろ、参照だけ
502 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 22:11:26.62 ID:LMlAcWpL.net] >>490 10ヶ条の最初に ・グローバル変数は使うな、ましてや更新する奴は死刑 って書いとけ
503 名前:デフォルトの名無しさん mailto:sage [2022/07/17(日) 23:45:40.91 ID:zSvUsLU3.net] >>491 MSの自動翻訳は的が外れてて知りたいことは何も書かれてない… 個人のurlの人は説明が無茶苦茶で到底理解できてると思えない中身。スコープでググってこれが引っかかるなら悪質 結局のところ、参照渡しや参照書き換えの仕方を知ってればスコープはほぼ気にしなくていいという結論に至った 値渡しだけで済む書き方ができればなお良い
504 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 00:19:34.95 ID:+HoBYfWN.net] 結論出てよかったね
505 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 21:25:16.34 ID:0lMMqLG2.net] スコープの話をしたいわけじゃなかったのなら最初からそう言ってほしかった
506 名前:デフォルトの名無しさん mailto:sage [2022/07/18(月) 21:46:18.36 ID:RQQtBm3R.net] 文句付けたいけど根拠
507 名前:となる知識は無いから [] [ここ壊れてます]
508 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 22:59:35.63 ID:DVSzMIGJ.net] Pesterって使ってる? 使ってないとしたらUTどうしてる? 証跡としてコードカバレッジ出す目的に今も使ってるけどPowerShellの言語としてとか実行ホスト(exe)の機能ではなく 式単位にブレークポイント仕掛けて実現してるんだかで処理速度も普段よりかなり遅いし、あんまり便利って気がしない。 (うろ覚え)記述によってはうまくコードカバレッジに反映されない事もあった気がする。 そんとき忙しくて詳しく調査してらんなくてコードの方変えた気がする。 確かif文の条件内で変数に代入したりしてる場合だったかな。 while($null -ne ($line = $stream.ReadLine())){}みたいなのだったかな。
509 名前:デフォルトの名無しさん mailto:sage [2022/07/20(水) 23:06:57.28 ID:ZWOh364P.net] PowerShellなんか想定した運用で動きゃいいでしょ 真面目にテスト書くようなものはC#で書きなさい
510 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 22:42:00.80 ID:o92gVnUV.net] 以下のごく普通?のjsonがConvertFrom-Jsonだと意味不明なエラーで通らなかった '{"":"あーあ" }' | ConvertFrom-Json エラー出力 ConvertFrom-Json : Cannot process argument because the value of argument "name" is not valid. Change the value of the "name" argument and run the operation again. At line:1 char:17 + '{"":"あーあ" }' | ConvertFrom-Json + ~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [ConvertFrom-Json], PSArgumentException + FullyQualifiedErrorId : Argument,Microsoft.PowerShell.Commands.ConvertFromJsonCommand
511 名前:デフォルトの名無しさん mailto:sage [2022/07/21(木) 23:21:49.49 ID:hK8T/Nr3.net] >>500 PowerShell Core ではバグとして修正されてるらしい https://github.com/PowerShell/PowerShell/issues/1755 PowerShell Core は使ったことないが、Windows PowerShellが認めるJSONは独特なので外部とのデータ連携に使うには向いてない印象。 PowerShellからPowerShellへの受け渡しなら苦労は少ないけど、それならJSONで入出力する必要がないことが多い。
512 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 00:05:10.76 ID:DccLQn0d.net] 名前なしの値ってjson採用してるアプリで普通に使われるんだよね 困ったわい
513 名前:デフォルトの名無しさん mailto:sage [2022/07/22(金) 01:13:11.32 ID:bxySyujx.net] JavaScriptってプロパティ名で空文字列が使えるもんなあ JavaScriptの仕様がファンキーすぎる気がしないでもない
514 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 19:10:35.01 ID:LaxYcXsV.net] ハッシュテーブルの実装的には問題ないんだろうか? どれとは言わんがある言語のハッシュテーブル実装用のハッシュ関数(種はランダム)に空文字列""通したら恒等的に0なんだが
515 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 19:11:49.39 ID:C81kwZF2.net] バッチスレでPowerShell使いなよってアドバイスもらって GetでJSON取得⇒JSON要素出力がこんなに簡単に出来るなんて感動した curlコマンドとjqコマンド駆使してやってたのがアホみたいだった でも構文とコマンドレット覚えるのは面倒
516 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 19:50:05.55 ID:ATmfTI/o.net] 種を要求するハッシュ関数ってよくあるんか?セキュリティ対策? ずっと同じ値が帰ってくるならハッシュテーブル的には問題ないかと
517 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:16:25.64 ID:xJ8anoa4.net] >>504 がなんか勘違いしてるんだろうと思う 種なんて聞いたことないし空文字列で 0 を返すのはよくある実装だと思う
518 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:35:46.87 ID:8xZeKJIl.net] >>506 起動時環境ノイズから勝手に取ってくるのが普通かと 同じハッシュ値持つキーがあると、まあ実装によるがDoS攻撃のいい的 追加情報で判別にフォールバックしたり、テーブル作り直したり、非常に負荷がかかる perl, python, pwshは少なくともそう python -c print(hash(""))→0 python -c print(hash(" "))→ランダムなint64 pwsh -nop -c '"".GetHashCode()'→ランダムなint32 perlはスマホに入ってないのでまた どちらも勝手に種植えてるね、Pythonは64bitにハッシュしてるから単純に強度が強いが、pwshが0でもランダムに見えるのに対し、常にf("")=0のpythonの実装はちょっと謎 fによって""と同じ値に写る文字列も毎回変わるので探すのも容易じゃないだろうけど、実際に規則性を見てしまうと他にも弱点ありそうな気がしてくる 事実としてpwshよりはwebで扱かれてるわけで、まあ大丈夫なんでしょう
519 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:38:19.25 ID:8xZeKJIl.net] >>507 デバッグ用に手動で植える機能はあるはずだよ、マニュアルのどっか見たら書いてるはず、もちろん非推奨だけど
520 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:49:17.30 ID:8xZeKJIl.net] 今perl環境無いので記述だけ、v5.8以来ハッシュ関数の種は秘密に植えてるようで、あと人力で植えたい人への植え方 誰か検証たのむ https://perldoc.jp/docs/perl/5.36.0/perlsec.pod#Algorithmic32Complexity32Attacks 既にwebで流行ってた頃だと思うんだけど大丈夫だったのか
521 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:49:36.14 ID:8xZeKJIl.net] 今perl環境無いので記述だけ、v5.8以来ハッシュ関数の種は秘密に植えてるようで、あと人力で植えたい人への植え方 誰か検証たのむ https://perldoc.jp/docs/perl/5.36.0/perlsec.pod#Algorithmic32Complexity32Attacks 既にwebで流行ってた頃だと思うんだけど大丈夫だったのか
522 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:50:04.66 ID:8xZeKJIl.net] 今perl環境無いので記述だけ、v5.8以来ハッシュ関数の種は秘密に植えてるようで、あと人力で植えたい人への植え方 誰か検証たのむ tps://perldoc.jp/docs/perl/5.36.0/perlsec.pod#Algorithmic32Complexity32Attacks 既にwebで流行ってた頃だと思うんだけど大丈夫だったのか
523 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:50:41.34 ID:8xZeKJIl.net] 今perl環境無いので記述だけ、v5.8以来ハッシュ関数の種は秘密に植えてるようで、あと人力で植えたい人への植え方 誰か検証たのむ perldoc.jp/docs/perl/5.36.0/perlsec.pod#Algorithmic32Complexity32Attacks (そのまま貼れない) 既にwebで流行ってた頃だと思うんだけど大丈夫だったのか
524 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 20:51:20.66 ID:8xZeKJIl.net] 連投ごめん
525 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 21:27:35.49 ID:xJ8anoa4.net] とりあえずマニュアルをちゃんと読むことをお勧めしておく https://docs.python.org/ja/3/library/functions.html?highlight=hash#hash
526 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 21:29:23.20 ID:rYm6iVSU.net] で、件のjsの仕様だが、空文字でもよしなにハッシュしてくれるってことかいな?多分 空文字をキーとして使う事に関しては、言語固有のデータ型の概念も絡む パスカル文字列でもc文字列でも、空文字列自体はいかなるバイト表現も持ち得ない 値がなけりゃ関数にも渡せない 文字数や終端の0埋めバイトごと渡せば値になるが、そこは思想の問題だろうね
527 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 21:36:12.72 ID:8xZeKJIl.net] >>515 そこは言語リファレンスであって、リファレンス実装の(c)pythonとは(建前上)関係がない インタプリタについてはこっち、hash関数のランダム化とどうしても植えたい人用 https://docs.python.org/3/using/cmdline.html#envvar-PYTHONHASHSEED
528 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 22:08:43.58 ID:xJ8anoa4.net] ああすまん、最近の実装まで追いかけきれてなかったな なるほど一つ賢くなったわ、ありがとう
529 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 22:10:01.71 ID:ZpfKnwiP.net] 実装のドキュメントもランダム化の有無に関わらず空文字列に0を返す事については触れてないな まあ実装の詳細も詳細だし、保証する意味も無いから、気になるならソース読むしかない 気になるなら、この実装に問題無いんですか、と元気があるなら問い合わせる案件
530 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 22:30:36.76 ID:Sct47BON.net] とりあえずPythonでhash("")==0なことはundocumentedなので依存するコードは書いちゃダメってことかな 偶々タイプが面倒だったのか、それでもよく見つけたな 一点だけ分かって現実に問題になるかはともかく、理想的なハッシュ関数の振る舞い(=完全にランダムに見える)として好ましくないのは確か pwshのこういう面白ネタないかな、まあまだまだ開発中なので山ほどありそうなのがアレだけど
531 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 22:32:46.88 ID:8xZeKJIl.net] undocumentedはMSのお家芸です
532 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 22:49:04.75 ID:FyEJHrzo.net] 面白そうなのでハッシュ衝突させてみた d=dict() d[0]="int 0" d[""]="nullstr" print(hash(0), hash(""), d) 0 0 {0: 'int 0', '': 'nullstr'} たった2個ぶつけて死ぬ事はまあ無いが、いくらか試して中身は予想付いてきた スレチごめん
533 名前:デフォルトの名無しさん mailto:sage [2022/07/27(水) 23:59:51.61 ID:su1evgJ+.net] 面白そうなのでpwshでも $h=@{0='int0'; ''='strnull'} write (0).GetHashCode(), ''.GetHashCode(). $h[0, ''] →0 498565465 int0 strnull cpythonと違い空文字列は0とは別物のようです なおpython/pwshともに値の等しいintとfloat型をキーにしようとしたらエラー ([double][int]::MaxValue -eq [int]::MaxValue) →True キーにfloatを使うアホが居るかは不明だけど、[double]の範囲では全ての[int32]が表せるので今の実装の整合性に問題はない さらに型を大きくするとfloatで表せる整数は歯抜けになってくるけどまあ -0.0→-0.0 (-0.0).GetHashCode()→0 整数としての値ですね $nan=[double]::NaN $nancode=$nan.GetHashCode() -214643572 $maxcode=[double]::MaxValue.GetHashCode() 214635072 $nancode + $maxcode→0ですね ところでナンだか見慣れた数字が… 2gb, 4gb→2147483648 42949672 $nan -eq $nan→False そう決めたからまあ、そうなんだけど $nancode -eq $nancode→True なんだかなー
534 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 00:20:32 ID:y/Pgitn8.net] 複数のNaNをキーにしたハッシュリテラル書くとInvalidOperation例外投げるな、Duplicate Keys 'NaN' are not allowed...らしい アサインすると値が上書き 見方によってはハッシュテーブルというアルゴリズムの敗北と言えるかもしれん 困る機会も思いつかないのが幸い
535 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 00:31:26 ID:8WeqhqUG.net] どのNaNとNaNも互いに値が等しくないからといって、キーがNaNまみれのハッシュ$nansが作れたとして じゃあ$nans[NaN]はどの値を返せば正解なんだよ
536 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 00:51:33 ID:y/Pgitn8.net] 抽象データ構造としての連想配列なら、NaNがインデックスとして渡されたら探索すらせずに常に$nullを返せばいい NaNと-eqなキーは$nansがNaNまみれであるかに関わらず存在し得ないんだから ハッシュテーブルはあくまで"ほぼ-eq"を使った連想配列の実装 $nan=[double]::NaN; $ht=@{$nan="abc"}; $h[$nan] は"abc" を返すはず
537 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 01:22:01 ID:AWyQ+yiB.net] そもそもnanは論理学と数学基礎論の公理、同一律を否定しているので、論理的思考を行っている限り無矛盾に理解することは原理的に不可能だぞ 考えるな、感じろ
538 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 13:14:46.86 ID:y/Pgitn8.net] >>505 jqはフィルターとして便利なだけじゃなく、プログラミング言語として非常に面白いと思ってるので、学ぶ価値ありだと思うよ 移行前はcmd+vimで何でもやってたな vimは安定してwinサポートしてたし、ユニコ以前から常に日本語パッチ供給されてて、強力なテキスト処理とある程度の構造化データ処理もできる入手性よいツールとして稀有だったはず 引数に直接スクリプト渡して非インタラクティブにバッチ処理できるからbatの中身はほぼvim/exスクリプトだった 多分2000年あたりでvim並みの機能かつ日本語サポートもしっかりしてるのはperlくらい
539 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 14:57:01.82 ID:HSo5zcUE.net] コードエディタとしては愛用してるけど、vimをコマンドとして使う発想に時代を感じる
540 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 15:19:13.17 ID:HSo5zcUE.net] こんな感じかね vim -es "g/\W?\|\Wwhere/ s//Where-Object/p" -c wq $profile こわいから-c wqはしないけど findstrでパターンマッチ、for /f ... in (file.txt)で行毎にスキャンして置換したのをechoとかやってたな
541 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 15:43:37.36 ID:y/Pgitn8.net] for /f "tokens=...delims=...skip=...eol=..."はプレーンな行毎のテーブルの処理には悪くない、明示的にフォーマットを指定してパースするので、むしろ分かりやすいまである クオートやエスケープの解釈、ダメ文字などイレギュラーに全く対応出来なかったり、/フラグ毎にforの挙動が別コマンドと言えるほど違ったりで、融通が全く効かないのがアレというだけ for /fで扱いやすいフォーマットで書いて読む閉じた世界に住んでるなら幸せ
542 名前:デフォルトの名無しさん mailto:sage [2022/07/28(木) 16:33:20.60 ID:y/Pgitn8.net] >>530 あーよく見たら$proflleか フリーフォーマットをfor /fで走査は黒魔術になるな、行をどう分割するにしろ、変数展開時の文字列置換は分割単位毎だし、行内複数マッチの場合どうするのか考えるだけでぞっとする vimに引数でコマンド渡すにはたとえ単一引数でも-cが必要、兄弟のsedやvi(m)のエイリアスexは専ら引数にコマンドを期待するので-e落として紛れはないけど、vi(m)はその名の通りvisualエディタだからはじめの引数にファイルを期待する
543 名前:デフォルトの名無しさん [2022/07/29(金) 21:36:58.16 ID:HWojhWX3.net] 最近仕事で触ることになって使い方習ったけど全然わからん
544 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 21:41:36.22 ID:wZddRh7F.net] 右も左も分からないなら、とりあえず良く使いそうなコマンドレットはエイリアスが事前に定義されてるので、galで出てくるのを順番に弄り回したりghするといいかも
545 名前:デフォルトの名無しさん mailto:sage [2022/07/29(金) 23:32:09.97 ID:HWojhWX3.net] 基本文法を覚える前にVB.NETでモジュールメソッド作成して呼び出すやり方覚えたら動けばいいやでそっちばかり使ってしまってなかなか覚えられない
546 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 01:54:14.48 ID:G28B9gdh.net] $OutputEncoding の初期値をUS-ASCIIからShift-JIS 932に変更したいのですが方法が分かりません 変更は $OutputEncoding = [Console]::OutputEncoding $OutputEncoding = [System.Text.Encoding]::GetEncoding(‘Shift_JIS’) などで出来るようなのですが既定値を変えたいです やりたい事はcmd上でripgrepをパイプで繋いだ際に文字化けしないようにしたいのですが https://github.com/BurntSushi/ripgrep/blob/master/FAQ.md#pipe-non-ascii-windows $OutputEncoding の既定値を変えられたとしてもcmd上でも効果があるのかは試してみないと分かりません こちらの解決法が分かる方が居ましたら是非教えて欲しいです
547 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 10:05:14.78 ID:3Aj3EGjO.net] プロファイルに記述、じゃだめ? PS> notepad $PROFILE.CurrentUserAllHosts
548 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 17:28:13.33 ID:BFM47HY2.net] >>537 ありがとうございます $profileでやってみました。UTF-8でなら使えそうなのですが $OutputEncoding をsjisにしたps上でもrgがUTF-8で吐いてるので無理みたいです 【.cmd】 バッチファイルスクリプト %13 【.bat】 https://mevius.5ch.net/test/read.cgi/tech/1542779527/496 参照先のようにUTF-8にすれば一応化けずに使えるのですがUTF-8だとコマンド類がascii以外機能しないものが多いのでバッチなどでは使いづらい sjisで使えたら貧弱なfindstrに置き換えられ便利になると思ったのですが残念です
549 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 18:34:17.55 ID:3Aj3EGjO.net] findstr置き換え目的でPowerShell持ち出すなら、Select-Stringとかの手もある。 rgの高速検索のメリットがPowerShellのオーバーヘッドを上回るなら、 例えば以下のような処理を関数なりスクリプトなりにしておくといいと思う。 スクリプト化しておけばcmdからもpowershell経由で使える。 #…けど、他のgrepコマンド導入した方が良さそうな気がする。 $path = "検索対象ファイルパス" $pattern = "検索パターン" $si = [Diagnostics.ProcessStartInfo]::new("rg.exe") $si.Arguments = '"{0}" "{1}"' -f $pattern, $path $si.UseShellExecute = $false $si.RedirectStandardOutput = $true $si.StandardOutputEncoding = [Text.Encoding]::UTF8 $proc = [Process]::Start($si) $stdout = $proc.StandardOutput while (! $stdout.EndOfStream) { $stdout.ReadLine() }
550 名前:デフォルトの名無しさん mailto:sage [2022/09/13(火) 18:36:39.73 ID:3Aj3EGjO.net] 誤:$proc = [Process]::Start($si) 正:$proc = [Diagnostics.Process]::Start($si) 動作確認してないので他にもあるかも。
551 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 00:41:00.54 ID:MPN5wMTP.net] 同階層にフォルダツリーA~Zまであり、それぞれのツリーの中身はバラバラです。 それぞれのツリーのCSVを出力したいのですが、やり方がイマイチ分かりません。 CSVにはツリー名、ツリー毎の合計サイズと、ツリー毎に最新更新ファイル(ファイル1つだけ)の日時を抜き出したいです。 PSFolderSizeをインストールして色んなサイトから拝借してコピペの集合体でやってみたのですが、各ツリー内の更新日を取得する部分とフォルダサイズを取得する部分を同時に行う事が私の頭では無理でした。何方かお助け頂けないでしょうか
552 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 17:45:18.14 ID:xipfHTvE.net] ツリーて何だ? フォルダに階層があってその中全部見たいということならGet-ChildItem -Recurseだぞ
553 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 17:57:09.50 ID:Wu29T3MH.net] ・コード貼ってバカにされるの嫌 ・具体例挙げるなど仕様詳細説明面倒臭いから文章から汲み取れ ・全部やれ こういうことだろう 舐め腐ってるヤツはスルーしときなよ
554 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 18:12:43.86 ID:6s8rSvAF.net] 本人はいたって真面目なパターンだろ ググった情報を組み合わせるスキルがないということは、悲しいかな往々にして他人に要件を一発で伝えるスキルも不足しがち 同時にやるのが無理めに感じるのはパイプを使おうとしてるからだろう for文とローカル変数で書き変えれば簡単
555 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] 伝えるスキルうんぬんの前に > PSFolderSizeをインストールして色んなサイトから拝借してコピペの集合体でやってみたのですが って言うならそのコード上げろって話 ヘタに説明するより100倍早い
556 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] いやできなかったコード上げても何の説明にもならんから 現状と得たい結果の図示だな
557 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net] コードを上げたほうがいいんじゃないかとか図で伝えるべきなんじゃないかとかそういうの引っくるめての伝えるスキルだよ コミュニケーションは言葉に限定されない
558 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 20:42:50.25 ID:9IkSSHYa.net] >CSVにはツリー名、ツリー毎の合計サイズと、ツリー毎に最新更新ファイル(ファイル1つだけ)の日時を抜き出したい 変なモジュール入れんでも数行で書けるからがんばれ
559 名前:デフォルトの名無しさん [[ここ壊れてます] .net] パワー!
560 名前:デフォルトの名無しさん [[ここ壊れてます] .net] しっかしコマンドレットがコマンドライン実行時とスクリプト内呼び出しでパラメータ解釈が異なるって どんなキチガイが仕様考えたのか気になるわw switch型パラメータをスクリプト内で動的に外したり与える方法がないとか終わってる
561 名前:デフォルトの名無しさん mailto:sage [2022/09/21(水) 23:16:07.40 ID:9fmju/sW.net] >>550 何を言ってるんだ? ちゃんと質問したらお前の間違いを教えてもらえるかもしれんぞ
562 名前:デフォルトの名無しさん mailto:sage [2022/09/22(木) 00:48:03.74 ID:XoRPEjFK.net] Ruby で、win32ole を使って、 フォルダ以下のサイズ(再帰的な子孫も含めて)は、 require 'win32ole' fso = WIN32OLE.new( 'Scripting.FileSystemObject' ) folders = [ "C:/Users/Owner/Documents/test_1", "C:/Users/Owner/Documents/test_2" ] folders.each do |folder| folder_obj = fso.GetFolder( folder ) puts File.expand_path( folder_obj.path ) # \ を、/ に変換する puts "#{ folder_obj.name } : #{ folder_obj.size }" end 出力 C:/Users/Owner/Documents/test_1 test_1 : 28803 C:/Users/Owner/Documents/test_2 test_2 : 4390
563 名前:552 mailto:sage [2022/09/22(木) 01:41:34.82 ID:XoRPEjFK.net] Ruby で、フォルダ以下のファイル(再帰的な子孫も含めて)で、 更新時刻が最も最近のものを求めた folders = [ "C:/Users/Owner/Documents/test_1", "C:/Users/Owner/Documents/test_2" ] folders.each do |folder| # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠し directory, file を除く glob_pattern = folder + "/**/*" latest_file = Dir.glob( glob_pattern ) .select { |full_path| File.file?( full_path ) } # ファイルのみ .max_by { |full_path| File.mtime( full_path ) } # 更新時刻が最も最近のファイルパス puts "#{ latest_file }\n#{ File.mtime( latest_file ) }" end 出力 C:/Users/Owner/Documents/test_1/a.txt 2022-05-19 14:38:35 +0900 C:/Users/Owner/Documents/test_2/x/x.txt 2022-02-24 16:01:54 +0900
564 名前:552 mailto:sage [[ここ壊れてます] .net] Ruby で、CSV 形式で出力する部分は、 require 'csv' result_ary = [ [ "C:/Users/Owner/Documents/test_1", "28,803", "2022-05-19 14:38:35 +0900" ], [ "C:/Users/Owner/Documents/test_2", "4,390", "2022-02-24 16:01:54 +0900" ] ] # 2次元配列を、CSV 文字列に変換する csv_str = result_ary.map( &:to_csv ).join print csv_str 出力 C:/Users/Owner/Documents/test_1,"28,803",2022-05-19 14:38:35 +0900 C:/Users/Owner/Documents/test_2,"4,390",2022-02-24 16:01:54 +0900
565 名前:デフォルトの名無しさん mailto:sage [2022/09/22(木) 09:18:39.47 ID:5Z2vYjCC.net] >>541 @( "C:\dir1" "C:\dir2" ) | %{ $prop = [Ordered] @{Path=$_} $file = @(Get-ChildItem -LiteralPath $_ -Force -Recurse -File) ([Ordered] @{LastWriteTime='Maximum'; Length='Sum';}).GetEnumerator() | %{ $opt = @{'Property'=$_.Key; $_.Value=$true;} $prop += @{$_.Key = $file | measure @opt | select -exp $_.Value} } [PSCustomObject] $prop } | ConvertTo-Csv -NoTypeInformation
566 名前:デフォルトの名無しさん mailto:sage [2022/09/23(金) 00:05:04.72 ID:r49iT1KO.net] >>555 おおー無駄がなくてすごい これぐらい書けるようになりてぇ 開始は配列の変わりにコマンドレットでも良さそう Get-ChildItem -LiteralPath <親フォルダ> -Directory | ...
567 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 13:45:46.35 ID:5ly2Ski6.net] >>556 確かに。てか半端に汎用性意識せず、素直にこんなんでも良かったな。 @(Get-ChildItem -LiteralPath <親フォルダ> -Directory).FullName | %{ $file = @(Get-ChildItem -LiteralPath $_ -Force -Recurse -File) [PSCustomObject] @{ Path = $_ LastWriteTime = ($file | measure LastWriteTime -Maximum).Maximum Length = ($file | measure Length -Sum).Sum } } | ConvertTo-Csv -NoTypeInformation
568 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 14:01:26.72 ID:5ly2Ski6.net] いや、こうか。 Get-ChildItem -LiteralPath <親フォルダ> -Directory | %{ $file = @($_ | Get-ChildItem -Force -Recurse -File) [PSCustomObject] @{ Path = $_.FullName LastWriteTime = ($file | measure LastWriteTime -Maximum).Maximum Length = ($file | measure Length -Sum).Sum } } | ConvertTo-Csv -NoTypeInformation
569 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 14:13:19.66 ID:76wlmrvm.net] 試してないけどフォルダにファイルが1個も無い場合を考慮できてない気がする
570 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 14:48:45.69 ID:5ly2Ski6.net] 知らんかった。前者つもりだった。 (@() | measure -Sum).Sum → 0 (@() | measure Length -Sum).Sum → Null
571 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 15:45:18.22 ID:76wlmrvm.net] powershellはgciはともかくmeasureが遅くてファイルが多くなると辛くなるね 結局C#に丸投げとかの手段になりそう
572 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 16:18:35.15 ID:PDKGWlWe.net] 試してないけど Get-ChildItem -LiteralPath <親フォルダ> -Directory | %{ $Stat = $_ | Get-ChildItem -Force -Recurse -File | Measure-Object LastWriteTimeLastWriteTime, Length -Sum -Maximum [PSCustomObject] @{ Path = $_.FullName LastWriteTime = $Stat[0].Maximum Length = $Stat[1].Sum } } | ConvertTo-Csv -NoTypeInformation ってやると多少効率的かと
573 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 17:09:36.54 ID:UvTk6pcp.net] >>561 まあC#でやった方が速いわな
574 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 19:58:47.42 ID:5ly2Ski6.net] >>562 なるほどな〜、余分な集計をする事になるとしても measureを1回で済ませられれば効率的な可能性があるのか、 さらにパイプラインで列挙と集計が同時進行になる可能性もあったり? と思い試してみたけど、残念ながらLastWriteTimeの-Sumがダメらしい。 -ea:SilentlyContinueなら?と思ったがLengthのMaximumしか出ない。 でもこのアイデアは使えそう。
575 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 20:11:16.46 ID:PDKGWlWe.net] >>564 ああなるほど、だから小細工してたのか、すまんかった てか、初めからURL書いとけば良かったな $Stat = $_ | Get-ChildItem -Force -Recurse -File | Measure-Object LastWriteTime.Ticks, Length -Sum -Maximum [PSCustomObject] @{ Path = $_.FullName LastWriteTime = [DateTime][Int64]$Stat[0].Maximum Length = $Stat[1].Sum } https://stackoverflow.com/questions/66697384/measure-multiple-properties
576 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 21:00:46.43 ID:UvTk6pcp.net] >>565 さも自分で考えたかのように書いて劣化パクリかよ
577 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 21:03:35.79 ID:PDKGWlWe.net] そりゃすまんな
578 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 21:18:28.66 ID:5ly2Ski6.net] PSv7だとmeasureに集計プロパティ使えるのか。 PSv5なので試せないのが残念。 速度の話が出てたからmeasureの速度がどんなもんか>>558 で計ってみたら 自環境だと普通の実装(最高水位線と足し算)より7〜8倍くらい遅いわ。 まあ、標準コマンドレットのよくある結果だな…。
579 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 21:06:47.50 ID:OAAH5wr1.net] タスクマネージャの詳細タブからaudiodg.exeの関係の設定を変更する操作をスクリプトで書けますか?
580 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 21:46:11.19 ID:NUiBz/8K.net] Get-Process "audiodg" | %{ $_.ProcessorAffinity = $コア数 } $コア数は2のn乗で表したコア数の数 たとえば若い番号の3コアだけ割り当てたい場合は 0xf
581 名前:デフォルトの名無しさん mailto:sage [2022/09/29(木) 21:47:29.47 ID:NUiBz/8K.net] 上の3は4の間違い もちろんタスクマネージャーをいじろうと思えばできるけど面倒
582 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 01:54:30.65 ID:Ls0wbInl.net] >>570 わからん・・・ 2の4乗=16 != 0xf ? 4=2の2乗 だと 0x2 ? コア数というよりフラグ?マスク?ってこと?
583 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 05:17:13.01 ID:oHn8O8ll.net] マスクだね https://learn.microsoft.com/ja-jp/dotnet/api/system.diagnostics.process.processoraffinity
584 名前:デフォルトの名無しさん mailto:sage [2022/09/30(金) 09:21:08.41 ID:ZYrZXJKF.net] 皆さんありがとうございます!
585 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 09:21:34.51 ID:fKpjF07r.net] comobjectでofficeを操作してるとき、 $xxx.Count() が 2なのに $xxx[0] 範囲外 $xxx[1] 範囲内 $xxx[2] 範囲内 $xxx[3] 範囲外 みたいなアクセスになることがあるんやが これはどう理解すればええんや?
586 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 09:37:52.98 ID:jAJ0SKjr.net] Item使わないからじゃね
587 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 12:19:33.83 ID:K5+OjW4X.net] Excelってたしか値も書式もないセルはオブジェクト自体が存在しない扱いになるので、インデックスが0から始まるとは限らなかったはず データが取れる前提で処理するとうまく行かない
588 名前:デフォルトの名無しさん mailto:sage [2022/10/31(月) 23:20:47.42 ID:9ETwK7p6.net] >>576 これかも 明日試してみるわ!サンクス! >>577 これは怖いな 今回は関係なさそうだけど、心に留めておくわ、サンクス
589 名前:デフォルトの名無しさん mailto:sage [2022/11/01(火) 16:19:30.34 ID:3yQnaOmT.net] Excelは1オリジンやで
590 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 21:25:18.64 ID:HyYadl7b.net] 誰かmtkclient教えてクレメンス
591 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 12:43:06.89 ID:xY1K1bhL.net] >>566 >>555 からの流れ、色んな書き方があるんだなー、と非常に為になった
592 名前:デフォルトの名無しさん [2022/11/06(日) 19:05:17.89 ID:vSW2pkDA.net] $a = "abc::de/f/ghi/123jk" $b = $a.TrimEnd("/") をしても$bの出力が「abc::de/f/ghi/」にならないのですが、どこが間違っているのでしょうか?
593 名前:デフォルトの名無しさん mailto:sage [2022/11/06(日) 19:19:37.21 ID:NZll9bPy.net] >>582 同じ勘違いしたことある 指定文字「を」末尾からtrimするのがTrimEnd $a.TrimEnd("jk123") Trimメソッドは正規表現使えないからreplaceステートメントをつかう $a -replace "\w*$",''
594 名前:デフォルトの名無しさん [2022/11/06(日) 23:51:09.18 ID:vSW2pkDA.net] >>583 ありがとうございます! 今回はreplaceを使っていこうと思います
595 名前:デフォルトの名無しさん mailto:sage [2022/11/10(木) 20:57:05.64 ID:bawORDDu.net] PowerShell 7.3 General Availability https://devblogs.microsoft.com/powershell/powershell-7-3-general-availability/ What's New in PowerShell 7.3 https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-73
596 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 14:51:35.07 ID:p3H1JcgM.net] >>585 日本語訳 PowerShell 7.3 の新機能 https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-73
597 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 15:22:51.03 ID:c/ILT9OL.net] 11でもPowershell起動すると新しいのお試ししろとか表示されるけど5.1で十分だよなぁ 他の鯖系のベンダーのモジュールが5.1に対応しなくなったら考えるわ程度
598 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 19:04:11.88 ID:lKqjLh4g.net] >>586 前からexperimentalで有ったのは知ってたし、オプションだから嫌なら切ればいいんだけども… cmdから呼ばれる想定のコマンドは引数処理に癖があるからと
599 名前:いって、特定のプログラムのみ特別扱いするワークアラウンド的挙動にはちょっと賛同できない ワークアラウンドというのはユーザーがやるものだ pwsh側で個別対応をするとしても、ユーザーが期待する形式の引数を取って、コマンドの期待する形式に変換するラッパースクリプトを用意すれば済むだけの話 普段linux/macでpwsh使ってるから、どれ程の癖なのかは図りかねるが、 [] [ここ壊れてます]
600 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 01:13:06.37 ID:zoPzNIvr.net] $obj.('行'); 1. 上記を7.3で実行するとハングする。 2. 5.1や7.2ではハングしない。 3. $prop = '行'; $obj.$prop; でもハングする。 4. '行'が違う言葉だとハングしない。 5. $obj.行; だとハングしない。 バグ?バグなの?ゲイツに電凸していいの?
601 名前:589 mailto:sage [2022/11/14(月) 01:23:18.32 ID:zoPzNIvr.net] あ環境はWindows11とmacOS13で再現してます。連投スマソ
602 名前:589 mailto:sage [2022/11/14(月) 21:56:16.00 ID:zoPzNIvr.net] 589の条件4についてだけど、 $obj.([System.Text.Encoding]::UTF8.GetString((0xE8, 0xA1, 0x8C))); でもハングして、UTF-8での先頭バイトが0xE8だった場合にハングするっぽい。 毎回ハングするのであんまり回数試してないけど。
603 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 01:46:29.41 ID:E2xRIJUz.net] まともにテストしてないか 変なメンテナが紛れてるか
604 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 11:09:43.75 ID:ADWqgLY3.net] 7.30-preview.2 Core win10(en-US)だけど大丈夫な感じ $gyo =[System.Text.Encoding]::UTF8.GetString((0xE8, 0xA1, 0x8C))) $gyo 行 $trans=@{$gyo="go"} $trans.$gyo, $trans[$gyo] go (まだ日本語IME入れてない新品なので行が入力できないのはご愛嬌) 属性/キーはハッシュ可能な任意のビット列で構わないはずなので、単にエンコルーチンの問題のはず、7.30-preview-2以降のgitレポの差分みては
605 名前:デフォルトの名無しさん mailto:sage [2022/11/15(火) 11:40:25.67 ID:Xte85wf7.net] cx-fxは開始バイトだから安定リリースで出してたらマルチバイト圏壊滅してそうだが
606 名前:589 mailto:sage [2022/11/16(水) 02:47:51.66 ID:VVslFgtK.net] >>592-594 ども! >>593 ありがとうございます。 preview.3 から preview.4の間でなんかあったとこまで突き止めましたが、 preview.3から5までのStart-PSBootstrapがバグっててビルドに予想以上に時間かかったからもう寝るお
607 名前:589 mailto:sage [2022/11/18(金) 02:58:42.77 ID:5YGh8aoa.net] お巡りさんこの人でつ38909f7ee でそのコミットの中身がこちら Update .NET SDK version from `7.0.100-preview.2.22153.17` to `7.0.100-preview.4.22252.9` (#17061) おふぅ。PowerShellのバグを追っていて大変なものを見つけてしまったーどうしよう?
608 名前:デフォルトの名無しさん mailto:sage [2022/11/29(火) 18:07:22.13 ID:bVQqRFK0.net] 以前は PowerShell の日本語ドキュメントのリポジトリが Github に置いてあったはずですが今は消えていますよね? 事情がよくわからないんですが、マイクロソフトとしてはコミュニティで日本語翻訳を運用しない (機械翻訳でやっていく?) ということなんでしょうか。 それはそれとして、諸事情でネットワーク接続できない場所で日本語ドキュメントを読みたいんですが どこかでまとめてダウンロードする方法とかありませんかね?
609 名前:デフォルトの名無しさん [2022/11/29(火) 21:34:29.76 ID:S4GKm+YH.net] >>597 マイクロソフトにかきらず、英語以外の言語に翻訳することをみんなやめてしまっただけ。 ソフトウェアの更新スピードが速すぎて、ドキュメントを人間が翻訳する時間がない。
610 名前:デフォルトの名無しさん mailto:sage [2022/11/29(火) 21:48:53.54 ID:noJ3pHan.net] 日本マイクソロフトは何してんの
611 名前:デフォルトの名無しさん mailto:sage [2022/11/29(火) 23:10:55.01 ID:F0R68kvV.net] 日本語にすると曖昧になっちゃうからな 英語で厳密に説明されたほうがいいだろうし、ソフトウェア技術者だったら英語は素養の一つだね
612 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 01:07:23.00 ID:oNUduEv2.net] >>599 ちょまどはイベントに参加したり楽しくやってる
613 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 01:12:58.71 ID:TaPBZKHt.net] 文字列検索する時は、ラテン文字のキーワードが検索結果に埋もれない日本語ドキュメントのほうが便利
614 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 02:05:17.65 ID:k8p89eha.net] >>597 Get-Helpで取れる情報ならUiCulture指定してSave-Help https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_updatable_help それ以外ならGitHubから英語ドキュメント落としてきて機械翻訳かな オフライン環境でスクリプト書く気はしないから必要なドキュメントは限られるのでは
615 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 08:53:37.63 ID:QfqHtuzd.net] どうしてもドキュメントを日本語化してほしいなら16ビット時代みたいに 日本語版がリリースされる頃には英語版の新バージョンがリリースされている みたいな事になってもおま国とか文句言わないようにしないとね 英語版が完成してからじゃないと翻訳作業を始められないんだから
616 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 12:40:03.59 ID:4G7kek1Y.net] Google, DeepL, みらい翻訳 「みんなの自動翻訳@TexTra®」は、 国立研究開発法人情報通信研究機構(NICT)が開発した自動翻訳サイトです。無料 mt-auto-minhon-mlt.ucri.jgn-x.jp/ 翻訳したいサイトのURLを入力するだけで、自動翻訳結果をエディタ上に再現
617 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 13:17:37.01 ID:Occ07s0g.net] 機械が無料で一瞬でそれなりの翻訳をしてくれる時代になったのに わざわざ多ヵ国の翻訳チームを雇って変わり続ける膨大なドキュメントへの人件費を出す判断なんてできんだろなあ
618 名前:597 mailto:sage [2022/11/30(水) 17:21:56.68 ID:zA9UzzGK.net] 私は現時点では PowerShell について全く知識を持たず、 入門的な資料を移動中の合間にタブレットコンピュータで読みたいと考えています。 (通信は出来ないので事前に入れておく必要があります。) 基本理念をわかれば個々のコマンドの資料はたぶん英語でも理解できると思うんですが 新しい概念そのものを英語で読むのはしんどいです。 オフラインで読みたいと思うと ePub (などの電子書籍形式) になっているとやりやすくて そうするには元が Markdown なら一発で出来ると思ったんですが、 機械翻訳を通してその形に持っていくとなると面倒ですね。
619 名前:605 mailto:sage [2022/11/30(水) 17:40:14.72 ID:4G7kek1Y.net] Markdown は、HTML になるから、 「みんなの自動翻訳@TexTra®」で翻訳できるのでは? 翻訳したいサイトのURLを入力するだけで、自動翻訳結果をエディタ上に再現と書いてあるから、 ローカルPC にある、HTMLへのパスを入力すれば?
620 名前:597 mailto:sage [2022/11/30(水) 18:10:28.67 ID:zA9UzzGK.net] >>608 翻訳できることにはなんの疑いも持ってないですよ。 コマンド一発で出来るツールはないので手間がかかると言ってます。
621 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 21:29:56.51 ID:QfqHtuzd.net] 適当な電子書籍の解説本でも買えば?
622 名前:デフォルトの名無しさん mailto:sage [2022/11/30(水) 23:01:06.28 ID:k8p89eha.net] 過去の公式日本語訳が出てきたとして、基本理念を理解したい人の役に立つレベルとは思えない 電子書籍買って読むほうがいい
623 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 08:18:35.61 ID:iTNwCGJv.net] インアクションの邦訳ぐらい?古いのしかないな
624 名前:デフォルトの名無しさん mailto:sage [2022/12/01(木) 13:08:12.37 ID:Qs+E1f1w.net] もしも古い翻訳テキストが手元にあるなら それでいいんじゃね 新しい要素だけググって調べてブラウザ上でctrl+Sするなりして保存しておけば?
625 名前:デフォルトの名無しさん [2022/12/03(土) 12:28:32.79 ID:Jt/U29yp.net] 配列の要素を逆順にしたものを得たいのですが, …たとえば, $a = @(10, 0, 5) これに対して $a[-1..-$a.Length] …とすれば,@(5, 0, 10) が得られて, それで不満は無いのですが,何かもっとシンプルに書ける気がして. (→ でもこれって $a[-1..0] とは書けないんですね.) あるいは [array]::Reverse($a) とすることで,$a 自体が逆順の中身に変えられるのですが でも $a自体は 変えたく無いのです 感覚的には $a.Reverse() とか $a | Reverse-Object みたいに書けたらいいのに とは思うのですが(…そんなものは無い) 文字列だったら [linq.enumerable]::Reverse("abcdef") で逆順を得られるのに 同じ場所に 数値の配列を書いて [linq.enumerable]::Reverse(@(0,5,1,2)) …としても,何故かできない (なぜなのかはc#に勉強不足な私には分からず) ってなわけで,別に困ってるわけでは無いのですが もっと シンプルな書き方ってありますか
626 名前:デフォルトの名無しさん [2022/12/03(土) 14:39:08.81 ID:H3EtATlx.net] $a[length - 1 - n]
627 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 15:49:40.73 ID:h4dim/Vw.net] >>614 とりあえず、$a[-1..-$a.Length]だと-1,0,1で並ぶから@(5,10,0)になっちゃうはず。 $a[$a.length..0] が正。 個人的にはlengthじゃなくてcount使ってほしい。 後はsort-object使うか。 $a|sort -des でいける。 ただし遅いので巨大配列には向かない。
628 名前:デフォルトの名無しさん [2022/12/03(土) 18:40:22.74 ID:Jt/U29yp.net] >>616 $a[$a.Count..0] 言われてみれば! …これ使わせていただきます なお,sort を使うと,どうしても数値でsortされてしまうので うまくいかない感じです 何の意味も無い基準でsortして(何の順番も変えないで) -desだけしてくれたらいいのですが
629 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 19:09:31.97 ID:K8Dj9wl7.net] >>614 [linq.enumerable]::Reverse([int[]]@(0,5,1,2)) LinqのReverseはこれで動く
630 名前:デフォルトの名無しさん [2022/12/03(土) 19:46:36.52 ID:Jt/U29yp.net] >>618 intの配列にcastってことなのか…半分くらいしか理解してませんが ありがとうございます. LINQは powershellだと 無理やり感があって,かえって使いにくい感じは ありますね
631 名前:デフォルトの名無しさん mailto:sage [2022/12/03(土) 22:02:33.57 ID:vihcAie/.net] Ruby なら、 reverse -> Array reverse! -> self 破壊的変更 a = ["a", 2, true] p a.reverse #=> [true, 2, "a"] p a #=> ["a", 2, true] (変化なし) a = ["a", 2, true] p a.reverse! #=> [true, 2, "a"] p a #=> [true, 2, "a"] 破壊的変更
632 名前:デフォルトの名無しさん [2022/12/05(月) 15:26:18.97 ID:9N6A06cG.net] きっと とても初歩的なことだとは思うのですが $a = "abc" $job = start-job { write-host $a } receive-job -Job $job # → 何も出力されない これって スコープの問題なんでしょうか {ブロック}の中の $aの中身を "abc"にしたいのですが
633 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 17:43:14.26 ID:sXIIIS0k.net] $using:a About_Remote_Variables
634 名前:デフォルトの名無しさん [2022/12/05(月) 18:59:35.95 ID:9N6A06cG.net] >>622 ありがとうございます ブロックの中の $a を $Using:$a と書けば望む動作になりました まぁ、何でusingって名前なんだろ?とか Remote Variablesとは言うけれど別にリモートじゃないし(?)など まだ不思議な感じは残りますが…もうちょっと調べたり勉強してみます
635 名前:デフォルトの名無しさん [2022/12/05(月) 19:22:50.61 ID:9N6A06cG.net] $a = "abc" $job = start-job { param($str); write-host $str } -Arg $a でも 受け渡せるんですね。
636 名前:デフォルトの名無しさん mailto:sage [2022/12/05(月) 21:14:48.29 ID:Xw9Qnajp.net] Start-Jobでスクリプトブロック実行すると 別プロセスのpowershell.exeが起動してそっちで動く。(少なくともPSv5.1では。) イメージとしてはコンソールや.ps1から「powershell.exe -f 他スクリプト.ps1」で 他プロセスを動かすくらいに別スコープだと思ってればいいと思う。
637 名前:デフォルトの名無しさん [2022/12/06(火) 03:20:51.26 ID:PbeCdWM3.net] >>599 マイクロソフトのサポートにはとんでもない質問が大量に押し寄せる。 Windows Serverが起動しなくなった。電源が入ってないけど、Windowsのバグに違いないやら、しつこい嫌がらせやら、女に変なことを聞く変態やらと3万円も払って電話してくる。
638 名前:デフォルトの名無しさん [2022/12/06(火) 03:22:42.62 ID:PbeCdWM3.net] PowerShellのバージョンがわかりませんのでどうすればいいですか? こんなのを3万円も払って教えてもらうのが日本人
639 名前:デフォルトの名無しさん mailto:sage [2022/12/06(火) 06:55:15.41 ID:yvaEv+2c.net] 一時片手間にカスタマサポートやってたことあるけど結構トンデモ問合せは多い いろいろ聞いて行ったら他社の製品の問合せだったなんてオチすらあるし
640 名前:デフォルトの名無しさん [2022/12/06(火) 07:03:21.20 ID:wGOv2qdu.net] >>625 そういうイメージ…ということでわりと納得. 同じことですが…では、ブロックの中で処理中に 変数に何かを入れても それは、receiveするまでは 取り出せないってことか…
641 名前:デフォルトの名無しさん mailto:sage [2022/12/19(月) 19:06:25.36 ID:ayS530mj.net] functionの中でhashtable @{}を作成してその中にウィンドウと紐付いてるハンドルオブジェクトやらを入れて返して functionの呼び出し側で使おうとしたら無効なオブジェクトやら何やらのエラーが出てまともに使えなかった PSObjectに変換して返したらエラーは出なくなったがこれ何だろう 怖すぎなんだが
642 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 00:09:46.82 ID:5pWmYDMC.net] 参照型/値型とかその辺の理解は問題ない? とエスパーしてみる
643 名前:デフォルトの名無しさん mailto:sage [2022/12/23(金) 17:58:06.26 ID:F84mgbO0.net] 紐付けてるオブジェクトやらは.NETの参照型ね 値型だったら恐らくこの問題は起きてないだろうし PSCustomObjectのプロパティとhashtableの値への紐付けでオブジェクトの生存期間に差異があるようにしか見えないから functionから戻る時に何か想定外な事が起きてるんだろうなあ
644 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 14:24:53.22 ID:r8IxISV7.net] コマンド・プロンプトも一切つかったことない状況から powershellの勉強最近始めたけど難しいね 先ず参考書籍少なすぎ 何から手を付けたらいいのか全くわからん 先輩諸兄はどんな感じで習得していったの?
645 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 14:35:15.62 ID:ZD0ehGa/.net] 必要に迫られて色々とネットで調べて解決策を探し回る そのコードから理解できない部分や言語の基本を調べる(変数や表示の仕方とか色々と) という泥縄式だな
646 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 15:00:48.14 ID:r8IxISV7.net] ネットしかないのか、仕方ないな、、、 しばらくは苦しみながら覚えるしかないかぁ
647 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 15:45:26.24 ID:/tVTIbQ7.net] Get-Help about_ で出てくるのを一通り読んどきゃ何も苦しむことなんてないだろ
648 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 17:56:17.16 ID:0E4juWNJ.net] ある程度使えるようになってから書籍買って読んだら 「大体全部知ってるわ」ってなったから ネットだけでもいけるだろ
649 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 18:20:49.07 ID:U6V4cNSL.net] 他の言語と違って思い込みて書かれた間違った記事が多いから警戒すべし
650 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 20:24:26.94 ID:jYPDn/gh.net] ほかの開発言語やシェルプログラミングにまったく疎い状況からPoweshellで入門してゴリゴリ使いこなしてやろうという路線は正直筋が悪いと思う とはいえ勉強のためにPythonあたりの入門書をやれとも言いづらい やはり泥縄式かな
651 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 21:27:46.01 ID:T5RPj38W.net] >>639 一応VBAとGASが多少できるなったから他の言語も余裕かな、っておもって PowerShellに手を出したら苦戦してる感じ 一通り基礎を覚えたら実践的に色々と試してみたいけど powershellは色々覚えることが多すぎてメンドイ、、、
652 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 21:53:19.53 ID:fSsOcWwB.net] 変数?配列?何それ状態から始めてる初心者だけど基本的な用語がわからないから検索にも苦労する セオリーもわからないから無駄にあれこれやってあとはコメント書きまくってグチャグチャになってる
653 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:04:55.23 ID:vIW/uBHA.net] PythonもJavaも全くコード書けないノンプログラマだけどPowerShellは分かり易い気がする
654 名前:デフォルトの名無しさん mailto:sage [2022/12/27(火) 22:58:59.38 ID:B+wJL+Im.net] 素人だけど、「PowerShell実践ガイドブック」っていう本は、素人には理解しにくい仕様とかを理解するのにとても役に立った ただ、いろいろ冗長でちょっと読みづらい本ではある
655 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 01:26:32.00 ID:++xg0WRh.net] PowerShell上で cmd /C xxxx を使うのが最善という結論に到達する こういうのでいいんだよ的な
656 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 14:16:21.29 ID:dmcJ6Qpo.net] ヘルプが出来が良いので何も要らない気はするけど ハック的なモノや中でどう動いてるとかはpowershellexplained、実用的な書法はPowerShellGetで人気のあるやつ読むとか
657 名前:デフォルトの名無しさん mailto:sage [2022/12/28(水) 21:46:25.70 ID:D+6cXnGF.net] PowerShell は配列周りがトリッキーなのを除けば比較的まともな言語だと思う
658 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 01:00:35.68 ID:036NTvOT.net] 覚え始めは Microsoft docs を探し、それでわからなければ個人の解説記事を探した スクリプトを書くようになってからは about_ から知りたいことを追いかける事が増えた 上でも名前が上がった「PowerShell実践ガイドブック」は、ある程度できるようになってから読んだが 何もわからない状態で読むにも良いと思う 第2章までで基本的なことが身につく
659 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 15:03:24.27 ID:867KtYrP.net] パワーシェルの勉強始めたいんですが、学習に良いサイトありませんか?
660 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 16:02:07.28 ID:HWC94+Gl.net] >>648 実はこのスレだったりする 1つのサイト覗くよりたまにぜんぜん知らん知識が入ってくる 過去ログおすすめ
661 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 16:06:45.35 ID:HWC94+Gl.net] あと間違った情報書く奴には必ず突っ込み入るから間違えたまま覚え事故も起き難くなる仕様だと個人的には思ってる
662 名前:デフォルトの名無しさん mailto:sage [2022/12/29(木) 16:17:56.35 ID:HWC94+Gl.net] powershell何某でぐぐって出てくる日本語の情報はなぜか間違ってたり思い込みで書かれた記事が放置されてて悲しい 情報源としてはstackoverflow辺りをまず探すのが安定 Microsoftの知りたかったことの全て系は役には立つけど知りたい事全てを補完できるわけではない
663 名前:デフォルトの名無しさん [2023/01/01(日) 00:27:17.84 ID:CeabMe2h.net] やり方が多すぎて失敗しているものだからな
664 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 15:47:50.12 ID:naMqCIBL.net] リリース当時は学生だったからPIAをむさぼり読んでたな、楽しい本だった 挙動で間違いやすいのは(スコープを除けば)基本パイプ周りだから、 パイプ使わないスクリプトを書いてけば初手で躓く要素は少ないと思う
665 名前:デフォルトの名無しさん [2023/01/03(火) 21:14:49.48 ID:AaMOQNR6.net] >>653 シェルスクリプトを知っているのが前提だと思っていたが?
666 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 21:46:27.47 ID:cXTWG1PB.net] パイプで間違う要素なんてあったっけ? むしろ配列まわりの方が間違いやすい気がするが...
667 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 22:10:05.90 ID:naMqCIBL.net] 前提は知らんけど、配列回りで間違えるのがパイプ使ってる時では?
668 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 23:27:08.09 ID:cXTWG1PB.net] >>656 いやパイプ関係なく PowerShell の配列は色々トリッキー 例えば複数のオブジェクトを配列で返すコマンドレットが要素が1つだけだとオブジェクト自体を返したりするとか https://qiita.com/hitsumabushi845/items/fe4219ba9daa34f541c2 switch文に配列与えたら各要素を順番に適用する(要は勝手にループする)とか https://step-learn.com/article/powershell/076-switch-loop.html
669 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 00:46:17.26 ID:v02S4T2G.net] >>657 まさに前者をパイプ周り(のための)の仕様だって認識してる カンマ演算子の使い方は知らないとできないけど、型指定しない変数に代入して原因がわからないってことはないでしょ 後者はforやforeach省略出来て便利ってだけで、トリッキーだとは思ったことないわ
670 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 03:45:39.75 ID:jtN0WhrQ.net] switchの評価式に配列をぶち込む発想は他の言語経験有りなら起きないから無害だけど function戻りの配列の扱いは慣れてても混乱するから特殊な事情が無い限りPSObjectや別のコンテナに入れて返す(脳死)
671 名前:デフォルトの名無しさん mailto:sage [2023/01/06(金) 23:20:27.35 ID:kugWcEru.net] どなたか助けてください。相談です。 一つのファイルに置換したい複数の数列(0.005→0.000、0.006→0.001、0.007→0.002、etc‥)が存在した場合、うまく自動で全て置換する方法はないでしょうか? 下の置換のコマンドを繰り返し使用してるのですが明らかに非効率で何かうまくできないか考えてます。 (Get-Content ファイル名) | foreach { $_ -replace "置換前","置換後" } | Set-Content ファイル名
672 名前:デフォルトの名無しさん [2023/01/07(土) 08:57:10.32 ID:rjY6PjFx.net] >>660 $hash = @{ 0.005 = 0.000; 0.006 = 0.001; 0.007 = 0.002 } $hash[0.006] とすると 0.001 が返るから、"置換後" にあたる部分を $hash["置換前"] とすればいい。 詳しくはハッシュとかハッシュテーブルでググれ
673 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 14:47:12.03 ID:tZDUx9Ho.net] ver6.0以降だとスクリプトブロック使えるから、一応こんな感じで一度にできることはできる "対象の数値" -replace "^[-+]?[0-9]+[.]?[0-9]*", { [decimal]$_.value - 差分の数値 } 数字の足し引きならCSVデータとかで読みこんで処理した方がいいとは思うけど
674 名前:デフォルトの名無しさん mailto:sage [2023/01/07(土) 15:16:28.02 ID:fgMMnpAg.net] >>661 ,662 すげー。ありがとうございます。
675 名前:デフォルトの名無しさん [2023/01/08(日) 03:23:42.25 ID:nZw+zsKC.net] 0.005を足した数値にしたいと書いてないのが不思議 質問者は聞き方がわかっていない
676 名前:デフォルトの名無しさん mailto:sage [2023/01/08(日) 09:53:58.06 ID:n7Qx+Bf+.net] ちなみに、v5でも[regex]::Replace()のMatchEvaluatorにスクリプトブロックを渡せるから >>662 より手軽さが劣るけど同様の事ができる。
677 名前:デフォルトの名無しさん [2023/01/09(月) 14:33:22.12 ID:2QUdKeZJ.net] サブディレクトリ以下の全てのファイルに対し、ゾーンIDの削除をしたいのですが、 各ファイルのゾーンIDは Get-ChildItem -Recurse -File | ?{ $_ | Get-Item -Stream Zone.Identifier -ErrorAction Ignore; } | Remove-Item -Stream Zone.Identifier; に書けばできるみたいです。 powershell の勉強のため、下記のような書き方だと、どのように書けばできるのでしょうか? $itemList = Get-ChildItem $targetFolder -Recurse; foreach($item in $itemList){ Get-Item -Stream Zone.Identifier -ErrorAction Ignore; }
678 名前:デフォルトの名無しさん mailto:sage [2023/01/09(月) 15:34:37.62 ID:2yNmR2Eh.net] >>666 こういうこと? foreach($item in $itemList){ if (Get-Item -LiteralPath $item.FullName -Stream Zone.Identifier -ErrorAction Ignore) { Remove-Item -LiteralPath $item.FullName -Stream Zone.Identifier } } もちろん$itemはLiteralPathの代わりにパイプでオブジェクトごと渡してもいいと思う
679 名前:デフォルトの名無しさん [2023/01/09(月) 15:52:05.35 ID:2QUdKeZJ.net] >>667 ありがとうございます。 勉強になりました。
680 名前:デフォルトの名無しさん mailto:sage [2023/01/10(火) 05:44:39.22 ID:bjV4/8ri.net] 例えば、Ruby で、再帰的にフォルダのサイズを求めてみると、 require 'win32ole' fso = WIN32OLE.new( 'Scripting.FileSystemObject' ) # 絶対パスのディレクトリ名の後ろに、* を付けること! # . で始まる、隠しフォルダ・ファイルを除く。 # /**/* で再帰的に、以下の全てのフォルダ・ファイルを走査する dir_path = "C:/Users/Owner/Documents/**/*" target_dirs = Dir.glob( dir_path ) .select { |full_path| File.directory?( full_path ) } # フォルダのみ .each do |folder| folder_obj = fso.GetFolder( folder ) puts File.expand_path( folder_obj.path ) # \ を、/ に変換する puts "#{ folder_obj.name } : #{ folder_obj.size }" end 出力 C:/Users/Owner/Documents/a a : 14231 C:/Users/Owner/Documents/a/b b : 4666 # next で、次の繰り返しに進む事もできるが、 # select みたいなフィルターで絞り込む方が、可読性が高い Dir.glob( dir_path ).each do |full_path| next unless File.directory?( full_path ) # フォルダだけを処理する puts full_path end
681 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 12:43:06.27 ID:y+pH12Ov.net] Tree /fとget-childitem select-object Full name,を組み合わせたデータがほしいのですが、ご存知の方、ご教示願います。
682 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 18:21:06.24 ID:g43oPRJS.net] >>670 名前の通り再帰処理でフォルダのツリーデータ構造を作ってから出力する事になる。 powershellの関数呼び出しは100ぐらいのネストでスタックオーバーフローするので、 ある程度動作確認が出来たら再帰処理を配列とループに変換するか、 C#なりで書き直す必要があるかも。
683 名前:デフォルトの名無しさん mailto:sage [2023/01/23(月) 23:52:13.30 ID:Aq+myoAC.net] >>670 https://www.powershellgallery.com/packages/Show-Tree/1.0.0 146行目を書き換え Write-Output ("{0}+---{1}" -f $start, ($PSDriveFullPath))
684 名前:670 mailto:sage [2023/01/24(火) 00:18:36.99 ID:splC6Inp.net] >>672 ありがとうございますm(_ _)m。できました。スクリプトの実行が無効になっているため、読み込むことができません。と出ましたが、ポリシーを変更してできました。 >>671 ありがとうございます。制限があるのですね。
685 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 20:31:25.08 ID:s0xdk+qH.net] @("2023/01/01,123","2023-01-02,abc","2023 01 03,あいう") | convertfrom-string -delimiter "," | sort-object p1 -descending | convertto-csv -notypeinformation "yyyy/MM/dd"っぽいと勝手に日付時間の形式に変換されるのですがされないようにできますか? windows10 PSVersion 5.1.19041.2364
686 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 21:02:50.26 ID:s0xdk+qH.net] @("`"2023/01/01`",`"123`"","`"2023/01/02`",`"abc`"","`"2023/01/03`",`"あいう`"") | ` convertfrom-string -delimiter "," | sort-object p1 -descending | foreach-object {"$($_.p1),$($_.p2)"} こうすれば出来たっぽいけど何かめんどくさい
687 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 21:55:45.34 ID:Igk1TEx9.net] >>674 日付でソートするならばConvertFrom-Stringによる日付処理のままDateTime型で扱うのが正しいのでは?
688 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 22:42:40.57 ID:s0xdk+qH.net] csv出力する際に "2023/01/01" が "2023/01/01 00:00:00" となるのを避けたいということです ソート部分は別の処理をするかもしれないです わかり難くてすいません あとは tostring() で変換し直すかくらいでしょうか
689 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 23:16:16.35 ID:4iQ2gNuN.net] >>674 676 の方針で書き換え量少なめパターン @("2023/01/01,123","2023-01-02,abc","2023 01 03,あいう") | convertfrom-string -delimiter "," | % { $_.P1 = $_.P1.ToShortDateString() ; $_ } | sort-object p1 -descending | convertto-csv -notypeinformation Convertfrom-String を使いつつ変換したくないという裏には深い事情がありそうだが その深い事情を無視していいなら新しくオブジェクトを作るのが楽かな @("2023/01/01,123","2023-01-02,abc","2023 01 03,あいう") | %{ [PSCustomObject] @{ 'Date'=$_.split(',')[0]; 'content'=$_.split(',')[1] } }
690 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 23:25:37.64 ID:KpfZjU7w.net] 自分もConvertfrom-Stringさえ使わなければ楽だと思うが、 当初の質問通りConvertfrom-StringでDateTime型への自動変換を避ける方法、 という事なら $a = @("2023/01/01,123", "2023-01-02,abc", "2023 01 03,あいう") $t = @" {p1*:2023/01/01},{p2:123} {p1*:*},{p2:*} "@ $a | ConvertFrom-String -TemplateContent $t p1 p2 -- -- 2023/01/01 123 2023-01-02 abc 2023 01 03 あいう
691 名前:デフォルトの名無しさん mailto:sage [2023/02/08(水) 23:59:48.39 ID:s0xdk+qH.net] >>678 −679 ありがとうございます、参考にさせて頂きます convertfrom-string を使っているのは前に使って動いてるからヨシッ!の精神と圧倒的な知識不足の為です
692 名前:674 mailto:sage [2023/02/09(木) 22:15:00.08 ID:Zgr5da8a.net] PSCustomObject なんて便利なものがあるんですね おかげで Convertfrom-String も使わないで済むようになり 日付の自動変換もされなくなりました、ありがとうございました
693 名前:デフォルトの名無しさん [2023/02/09(木) 23:20:46.77 ID:wH9zoD6W.net] 本来、肩こりを和らげるマッサージの福利厚生の充実よりも、肩こりしない環境にすることが重要なわけだが、 PowerShellやってる人は、肩こりを和らげるマッサージを喜ぶ傾向が顕著
694 名前:デフォルトの名無しさん mailto:sage [2023/02/09(木) 23:53:02.68 ID:KDi1Xk2q.net] 秀逸な例えをしたと思ってそう
695 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 10:20:51.76 ID:UXgVE9re.net] 肩こりしない環境ってなんだろ コマンドプロンプト?
696 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 10:29:00.89 ID:SZzF5oES.net] 自分の慣れてる環境のことだろ
697 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 10:36:58.88 ID:SshlofV9.net] rubyってことかもな これを言ったのがいつも突然出てくるruby野郎だったら間違いなくrubyだと言える
698 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 11:52:35.79 ID:EJFy9nhI.net] 肩こりにはCUIはダメ ぐいぐいするのが効くでしょう(秀逸)
699 名前:デフォルトの名無しさん mailto:sage [2023/02/10(金) 14:00:16.56 ID:fdH5JkI3.net] Ruby では「2023/01/01, 2023-01-02, 2023 01 03」の内、 最後の形式だけ、Date.parse で日付オブジェクトに変換できない 日付オブジェクトに変換せず、文字列のままソートするのが簡単 date_texts = %w(2023/01/03 2023/01/01 2023/01/02) p date_texts.sort # 日付の文字列でソート #=> ["2023/01/01", "2023/01/02", "2023/01/03"] # 要素内に空白を含むので、\ で要素内の空白をエスケープする date_texts = %w(2023/01/03\ あいう 2023/01/01\ 123 2023/01/02\ abc) p date_texts.sort # 全体の文字列でソート #=> ["2023/01/01 123", "2023/01/02 abc", "2023/01/03 あいう"]
700 名前:688 mailto:sage [2023/02/10(金) 14:01:04.70 ID:fdH5JkI3.net] Ruby で仮に、2列のCSV テキストとみなした場合でも、 sort_by で任意の列のソート順で、行をソートできる require 'csv' input = <<"EOT" 2023/01/03 あいう 2023/01/01 123 2023/01/02 abc EOT options = { col_sep:
701 名前: " " } # 空白区切り p input_ary = CSV.parse( input, options ) # 2次元配列 #=> [ ["2023/01/03", "あいう"], ["2023/01/01", "123"], ["2023/01/02", "abc"] ] # 日付列でソートする p result_ary = input_ary.sort_by{ |row| row[ 0 ] }.map( &:itself ) #=> [ ["2023/01/01", "123"], ["2023/01/02", "abc"], ["2023/01/03", "あいう"] ] # 2次元配列を、CSV 文字列に変換する puts csv_str = result_ary.map( &:to_csv ).join カンマ区切りで出力 2023/01/01,123 2023/01/02,abc 2023/01/03,あいう [] [ここ壊れてます]
702 名前:688 mailto:sage [2023/02/10(金) 17:56:45.48 ID:A9tz9okE.net] Ruby の日付オブジェクトには、数十種類の書式がある require 'date' # デフォルトの書式は、下と同じ puts date = Date.parse( '2023/01/01' ) #=> 2023-01-01 # %F: %Y-%m-%d と同等 (ISO 8601の日付フォーマット) puts date.strftime( '%F' ) #=> 2023-01-01 # %T: 24時間制の時刻。%H:%M:%S と同等 puts date.strftime( '%F %T' ) #=> 2023-01-01 00:00:00
703 名前:デフォルトの名無しさん [2023/02/10(金) 21:41:15.34 ID:TDizb0jh.net] 目的と手段があべこべになってるって意味だよ、察しろよ
704 名前:デフォルトの名無しさん mailto:sage [2023/02/12(日) 21:55:38.94 ID:pO8qooq/.net] 確かにRubyを使うこと自体が目的になってる奴いるよな
705 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 17:44:45.89 ID:WNIjE3rx.net] Excelを操作しようとしたら酷く遅い。 これは工夫が足りない感じ? やりたいのは3000行、100列ぐらいに関数が詰まってて、その中でエラーとなってるセルを見つけること。 関数が別のブックを参照してて、その別ブックは日々自動生成されるからその生成されかたによってはどうしてもエラーになってしまう。 VBAでも出来るけど、他と併せて考えるとPowerShell向きの処理だから、これで始めたのに。 PowerShellからVBAのプロシージャ呼び出せば、この部分の処理は一瞬だけど、それは本末転倒だし。
706 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 18:06:52.69 ID:nz9Z1NDi.net] >>693 COMのIDispatch経由だからVBAと比較すれば当然遅くなるよ 一個一個のセルを見て回るのなんかは特に遅い powershell自体も遅いから遅さはさらに加速する ワークブックを開けてるならCOMからVBAコードを動的に流し込んで処理させた方が全然速いかもしれない CodeModule.InsertLines辺りでぐぐれば出てくると思う
707 名前:デフォルトの名無しさん mailto:sage [2023/02/18(土) 21:45:54.83 ID:RKENxwK/.net] 全セルまとめて取ればどんな言語でも早いんじゃない?
708 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 01:42:49.14 ID:15y14fHP.net] 数式のチェックをするということならusedrange.formulaとかで二次元配列に入れてしまえば速いだろうね
709 名前:デフォルトの名無しさん mailto:sage [2023/02/19(日) 07:28:37.93 ID:xSIr/CQB.net] セルの値をチェックしたいのか数式をチェックしたいのかもわからんしそもそも既に作ってあるならその遅い部分のコード晒せばいいのに としか思わん
710 名前:693 mailto:sage [2023/02/21(火) 12:34:29.62 ID:jIGEezda.net] PowerShellでRangeに対してforeachを使ったら糞遅かったが、Range.Cellsに対して使ったら爆速でした。 VBAで.Cellsを付けないことは無いが、PowerShellだと書き方が変わるから気付かんかった。 ソースは仕事で晒せないが、記憶を頼りに再現したのを後で書くよ。
711 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 15:29:46.97 ID:y0oxbjUQ.net] やりたい内容によってはImportExcelとか使うといいかもしれない
712 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 17:16:31.11 ID:mQxVjbPG.net] Excel操作は真面目にやるとCOMの参照の管理と解放が大変で避けちゃう。 完全に自分用なら雑でもいいんだけどさ。 VBScriptくらいに気楽にやらせて欲しい。
713 名前:デフォルトの名無しさん mailto:sage [2023/02/21(火) 18:44:18.75 ID:7Z23bFwT.net] あららSnoverさん去年退職しちゃったのか、、、 言語的には成熟してるし問題はないんだろうけど、残念だな
714 名前:デフォルトの名無しさん [2023/02/21(火) 19:36:25.83 ID:VTx8hARX.net] >>698 素直にExcel VBAを書いた方が安全だよ。
715 名前:デフォルトの名無しさん mailto:sage [2023/02/24(金) 13:12:14.11 ID:xAv3d2xt.net] gci -recでレジストリ検索出来るの便利だなって一昨日思った
716 名前:デフォルトの名無しさん mailto:sage [2023/02/27(月) 21:04:03.19 ID:5eoJ3K3o.net] 大規模な PowerShell モジュールは Install-Module での導入がオススメです https://jpwinsup.github.io/blog/2023/02/27/UserInterfaceAndApps/PowerShell/PowerShell-ImportModule-FunctionOverflow/ Windows PowerShell では、 1 セッションのうち利用できる関数 (Function) の数の上限を変数 $MaximumFunctionCount にて制御しており、既定では 4096 となります。 Import-Module にて PowerShell モジュールを導入しますと、この $MaximumFunctionCount で管理する関数の数にカウントされ 4096 を超えた場合にエラーが生じます。 Install-Module では、本事象は発生しませんので、Install-Module を、ご利用いただくことを推奨いたします。 単機能のモジュールであれば、今回のような制限が生じるほど大規模な関数 (Function) 数とならないですが、クラウド製品に対し提供されるモジュールは、大規模な関数数となる傾向がございます。 クラウド製品に対する PowerShell モジュールのご利用にはインターネット (オンライン) への接続が必須となりますため、Install-Module も利用可能でございます。
717 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 21:55:58.18 ID:NXRHGwBO.net] vscodeのプラグインどうにかしてくれないかな せめて参照関連はちゃんとして欲しい
718 名前:デフォルトの名無しさん mailto:sage [2023/02/28(火) 23:08:46.00 ID:XEMkLhh3.net] PowerShellの構文が分からなくなったときに今話題のChatGPTで質問してみたら 的確な回答返ってきてすげぇ助かったわ。もうパソコン教室は廃業だろこれ
719 名前:デフォルトの名無しさん mailto:sage [2023/03/10(金) 20:16:52.26 ID:qXeg3GIX.net] ai のコード生成って結構すごいよね コパイロット入れてるんだが、マジで打とうとしたコード先読みしてくる インテリセンスみたいな数文字打って残りの補完じゃなくて、まるまる予測してきて更に当たってるっていう
720 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 14:42:36.44 ID:o8REigww.net] ここでいいですか ttps://qiita.com/Midoliy/items/a033b763399c242dc5c5 C#をスクリプト言語として利用する方法 PowerShell 7.3.3 で、dotnet tool install -g dotnet-script を入力してもエラーになります↓ C:\Users\UserName0\AppData\Local\Temp\47744ec9-ca71-4312-b0e8-3f8bd18d5776\restore.csproj : error NU1101: パッケージ dotnet-scri pt が見つかりません。ソース Microsoft Visual Studio Offline Packages には、この ID のパッケージが存在しません。 ツール パッケージを復元できませんでした。 ツール 'dotnet-script' をインストールできませんでした。この失敗は次の原因で生じた可能性があります。 * プレビュー リリースをインストールしようとしており、--version オプションを使用してバージョンを指定しなかった。 * この名前のパッケージが見つかったが、.NET ツールではなかった。 * 恐らくインターネットの接続の問題で、必須の NuGet フィードにアクセスできない。 * ツールの名前の誤入力。 パッケージの名前付けの強制を含む他の理由については、https://aka.ms/failure-installing-tool にアクセスしてください
721 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 15:33:19.80 ID:IBd2LSQO.net] そこ見てダメなら諦めたら 特にメリットないし
722 名前:デフォルトの名無しさん mailto:sage [2023/03/15(水) 21:33:00.90 ID:e2aqyp6Z.net] >>708 https://stackoverflow.com/questions/58012732/unable-to-find-package-no-packages-exist-with-this-id-in-source-net-core https://github.com/dotnet/sdk/issues/13429 を参考に英語のエラーメッセージでweb検索するとか。
723 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 11:52:05.75 ID:1OmGmSd0.net] >>707 コパイロットとやらはインタラクティブシェルでも使える?興味あり gnureadlineうんこpsreadline最強と思ってたら思わぬ伏兵が… bingのchatgptが話題になってるし、標準で付いてもおかしくないけど
724 名前:デフォルトの名無しさん mailto:sage [2023/03/17(金) 14:15:57.93 ID:piFUHGnm.net] インタラクティブ(履歴)/スクリプトでもヒューリスティックにコンテキストを読んでくれるのは新しいね、もはや補完ではない気がするが ところで-UseFussyが超便利
725 名前:デフォルトの名無しさん mailto:sage [2023/03/19(日) 10:19:36.25 ID:+AVX1Caz.net] https://www.powershellgallery.com/packages?q=Copilot
726 名前:デフォルトの名無しさん mailto:sage [2023/03/27(月) 09:23:21.18 ID:qNF02T37.net] f1で直近コマンドの、Alt-hで直近パラメータのヘルプがコマンドラインを汚さずにチラ見出来るけど 常時表示しておきたい
727 名前:デフォルトの名無しさん mailto:sage [2023/03/28(火) 15:38:45.60 ID:vZrgWFuJ.net] >>714 https://learn.microsoft.com/en-us/powershell/scripting/learn/shell/dynamic-help?view=powershell-7.4 フックされてるShowCommandHelpあたりを改造してみては
728 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 09:29:33.35 ID:Hum0KYCd.net] コマンドプロンプトのstartコマンドのように 新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか
729 名前:デフォルトの名無しさん [2023/03/31(金) 10:04:55.21 ID:oEDBXBHf.net] Add-Type によって、自作のクラスを使う処理を書いて、一応ちゃんと動くのですが 同じことを 何度もやろうとすると 二度目以降は「The type 〜 already exists.」と出て止まってしまいます. そこで「既に そのタイプが存在しているかどうか」をチェックしたいのですが、これってどう書くんでしょうか
730 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 22:12:52.48 ID:yFMegc6R.net] >>717 こんなん Add-Type @' public class MyClass { public void test() { } } '@ if ("MyClass" -as [type]) { "MyClass is exist" }
731 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 22:21:06.75 ID:bSGiEzAG.net] >>716 (Start-Process -PassThru foo.exe).ProcessorAffinity = xxx xxxの所で使いたいプロセッサを指定する Start-Process -PassThru https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/start-process#-passthru Process.ProcessorAffinity プロパティ https://learn.microsoft.com/ja-jp/dotnet/api/system.diagnostics.process.processoraffinity
732 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 22:35:53.19 ID:yFMegc6R.net] >>719 >新しいウィンドウを作成せず という指定が抜けてね?
733 名前:716 mailto:sage [2023/03/31(金) 22:58:55.98 ID:Hum0KYCd.net] >>717 単純に try { [クラス] } catch { Add-Type 〜 } とか、知らんけど >>719 Start-Processを使わない場合のように新しいウィンドウなしで起動したいです
734 名前:デフォルトの名無しさん mailto:sage [2023/03/31(金) 23:29:03.95 ID:bSGiEzAG.net] https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/start-process#-nonewwindow -NoNewWindow 現在のコンソール ウィンドウで新しいプロセスを開始します。 Windows では、既定で PowerShell によって新しいウィンドウが開きます。
735 名前:716 mailto:sage [2023/03/31(金) 23:54:48.86 ID:Hum0KYCd.net] >>722 最初はそれでいいと思ったんですが、コンソールの取り合いになります (Start-Process netsh.exe -NoNewWindow とかで試すとわかりますが、くれぐれもご注意を) 取り合いにならないように -Wait も指定して (Start-Process netsh.exe -NoNewWindow -Wait -PassThuru).ProcessorAffinity = xxx とすると、-Wait が効きすぎて ProcessorAffinity をセットできないという罠
736 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 00:12:16.16 ID:rM0w1xSL.net] つまり.NETのProcessorAffinityは存在するプロセスにしか適用できないから無理でいんじゃね 知らんけどWin32APIとかで別の方法を探った方がいいんじゃね
737 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 00:25:58.89 ID:rM0w1xSL.net] たとえばWin32APIのCreateProcessにCREATE_SUSPENDEDというフラグがある プロセスをサスペンド状態で作成してaffinity設定してからResumeThreadで開始 これでいけるんじゃね
738 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 03:49:24.51 ID:tD9Ph5o/.net] Start-Jobの中で実行したら上手いこと裏でやってくれないだろうか
739 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 09:42:35.62 ID:nbrNF8T0.net] Start-Process -NoNewWindow cmd.exe "/c start /affinity xxx /b foo.exe" これくらいしか思い浮かばなかった
740 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 10:09:29.22 ID:rM0w1xSL.net] 定義が長くなったからこっちに貼り付けたよ https://ideone.com/LOSuzD 使い方 bool [Win32API]::CreateProcessWithAffinity(appname, cmdline, affinity) affinityはプロセスに直接設定するAPIが見つからなかったのでGet-ProcessをResumeThread前に呼び出して指定してる サンプルはcmdを呼び出してpingをlocalhostに10回打ってる間にプロセス名とaffinity値を出してる
741 名前:727 mailto:sage [2023/04/01(土) 10:22:16.44 ID:nbrNF8T0.net] Start-Process -NoNewWindow -Wait cmd.exe "/c start /affinity xxx /b foo.exe" こうだった
742 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 10:27:57.30 ID:rM0w1xSL.net] 寝ぼけてた。コールバックの部分下だけで良かったわ System.Diagnostics.Process.GetProcessById(pInfo.dwProcessId).ProcessorAffinity = (IntPtr)affinity;
743 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 10:32:18.54 ID:rM0w1xSL.net] でもう一箇所、appnameに$nullを指定してもC#側型宣言で""に変換されてしまうので、CreateProcessの直前に下を追加しとくとcmdlineだけで動く if (appname == "") { appname = null; }
744 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 10:52:36.56 ID:NrUMzMDg.net] これパイプすればいいんだよ ポイントは () を使わないこと (Start-Process).ProcessorAffinity = xxx は NG Start-Process | ForEach-Object {} で OK (Start-Process) | ForEach-Object {} は NG & { Start-Process } | ForEach-Object {} でも OK
745 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 11:09:34.29 ID:rM0w1xSL.net] >>732 これ正解じゃない? 遠回りしたねえ
746 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 11:10:53.22 ID:rM0w1xSL.net] Start-Process cmd.exe -ArgumentList '/c echo hello world & ping 127.0.0.1 -n 10' -NoNewWindow -PassThru | %{ $_.ProcessorAffinity = 1; $_ | select Name, ProcessorAffinity }
747 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 14:38:06.95 ID:khXUWf7f.net] Start-Process cmd.exe -NoNewWindow -PassThru | % { $_.ProcessorAffinity = 1 } だと困る Start-Process cmd.exe -NoNewWindow -PassThru -Wait | % { $_.ProcessorAffinity = 1 } か Start-Process cmd.exe -NoNewWindow -PassThru | % { $_.ProcessorAffinity = 1; Wait-Process -Id $_.Id }
748 名前:デフォルトの名無しさん [2023/04/01(土) 16:54:32.28 ID:SzOWT/hN.net] 717です. 反応してくださったかた ありがとうございました >>718 if ("MyClass" -as [type]) → なるほど!…これでした! >>721 私も,とりあえずは try{ [MyClass] >$null } catch{ Add-Type -Path "〜.cs" >$null } で 済ませていたのですが 例外に たよる書き方は,なんとなくカッコ悪い感じがして(笑)
749 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 21:56:00.86 ID:sdpm0Gxz.net] >>716 (Start-Process -FilePath 〜〜〜 -ArgumentList 〜〜〜 -WindowStyle Hidden
750 名前: -PassThru).ProcessorAffinity = 1 [] [ここ壊れてます]
751 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 22:32:49.48 ID:khXUWf7f.net] それでは Start-Process を使わない場合と違って入力も出力もできない
752 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 22:58:19.34 ID:sdpm0Gxz.net] あ〜、 > コマンドプロンプトのstartコマンドのように > 新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか というか 新しいウィンドウを作成せず、 コマンドプロンプトのstartコマンドのように使うプロセッサを指定して起動するにはどうすれば良いですか という感じか。であればこれまでに出てた回答の方が正しいね。 ほぼ同じだけど自分なら $proc = Start-Process -FilePath 〜 -NoNewWindow -PassThru; $proc.ProcessorAffinity = 1; $proc.WaitForExit(); みたいにするかなぁ。(でもStart-Processじゃなく小回りのきくProcessStartInfoを使うかな?)
753 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 00:15:44.70 ID:l9+T+h5c.net] 質問です。 外部コマンドの標準出力やエラー出力を一緒に変数に入れたいのですが、 $result=外部コマンド.exe 2>&1 この式で一見動作はしてるようのですが、外部コマンドからエラー出力があった場合に赤い色が付き、powershell的なエラーメッセージも追加されてしまいます。 意図としては色とか追加メッセージとかは不要で、純粋に外部コマンドの標準出力やエラー出力を一緒に変数に取り込みたいだけなのですが、 そういう場合どう記述したら良いでしょうか。
754 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 00:47:59.12 ID:h0WbN+8B.net] 外部コマンドの引数が不要またはシンプルなら、 簡単で分かりやすいのはcmd上で標準出力にする方法 $result=cmd /c "外部コマンド.exe 2>&1"
755 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 01:46:53.77 ID:l9+T+h5c.net] >>741 cmd脱却を考えているので、できればpowershell流?の書き方があればお願いいたします
756 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 03:44:54.54 ID:byiZ93ic.net] >>742 Powershellでcmdを使いこなす技術を鍛えたほうが幸せになれると思うよ
757 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 11:17:09.81 ID:l9+T+h5c.net] ためしにChatGPTに質問してみたら以下の回答でした 質問「powershell上から外部コマンドを実行し、その標準出力とエラー出力を、powershellによる出力の加工を抑止した状態で1つの変数に入れたい」 $output = & <コマンド> 2>&1 | Out-String Out-Stringは盲点でした。一応文字列として取得できているのでこれでいいのかな
758 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 11:29:33.76 ID:yOzYb5by.net] PowerShellはあてにならないからcmdに頼ることも多いよな Write-Host Test 1 New-Item -Path target1 -ItemType Directory New-Item -Path junction1 -ItemType Junction -Value target1 Write-Host Test 2 New-Item -Path test2 -ItemType Directory Push-Location -Path test2 New-Item -Path target2 -ItemType Directory New-Item -Path junction2 -ItemType Junction -Value target2 これが失敗するなんて想像してなかった
759 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 15:23:02.64 ID:9IrG8+0n.net] >>745 PowerShell5.1だと失敗しないな 7.3は駄目だった ターゲットのパスを絶対パスにすれば作れる New-Item -ItemType Junction can't create relative link #18251 https://github.com/PowerShell/PowerShell/issues/18251
760 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 16:46:18.09 ID:yOzYb5by.net] ジャンクションなら絶対パス必須でもいいけど シンボリックリンクでは相対パスが使えないと不便 >>745 のテストをシンボリックリンクに変えてもやっぱりおかしい ターゲットがディレクトリなのにファイルのシンボリックリンクになる 条件次第で逆にすることもできる タイプ間違いだと補完や削除をするときに困るんだよな だから最初からcmd.exeでmklinkしてる
761 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 21:47:00.28 ID:9IrG8+0n.net] Target type detection (file/directory) for relative symlinks is still broken, even on Windows #15235 https://github.com/PowerShell/PowerShell/issues/15235 これか? 2年前に立ったissueなのにまだ直ってないみたい
762 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 07:48:59.39 ID:Jr4h81FG.net] >>739 あの〜、コマンドプロンプトのstartだと1行の start /B /AFFINITY 1 cmd.exe のように「新しいウィンドウを作成せず、使うプロセッサを指定して起動する」には 小回りのきくProcessStartInfoを使うとどう書くの?
763 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 08:48:40.85 ID:hrmFy8ir.net] .NETでの普通のやり方ならググるれば出てくるよ
764 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:13:34.50 ID:d+sLTFCG.net] 例示ではプロセス起動・Process型オブジェクト取得にStart-Processを使ったけど >>739 は普段はProcessStartInfo使ってるってだけじゃないの。 私も引数あるときはStart-Process(-ArgumentList)避けてProcessクラス使う。
765 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:20:59.87 ID:9kyxsKiX.net] PowerShellってWebスクレイピングには向いてないですか? Pythonで作った方がいいですか? PowerShellは職場用のスクリプトを何個か作ったりして少し分かるのですが、Pythonはまったく不慣れなので迷ってます
766 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:35:29.28 ID:NHigh4Tg.net] Poweshellでちょっスクレイピング sloppy-content.blog.jp/archives/12057529.html 【PowerShell】SeleniumモジュールでWebスクレイピングしたい https://zenn.dev/hara_power/articles/815e3f3dc1e5655c4c22
767 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 22:09:14.13 ID:FTaZkaBO.net] Windowsに限ればスクレイピング以外にもブラウザに直接細工する手段が充実してるからライブラリ頼みのpythonより向いてるとも言える
768 名前:752 mailto:sage [2023/04/04(火) 10:40:01.35 ID:4xPC11r9.net] >>753 >>754 ありがとうございます PowerShellでやってみようと思います
769 名前:デフォルトの名無しさん mailto:sage [2023/04/08(土) 22:48:22.89 ID:wqsbQ+QM.net] PowerShellでPersonal Communicationsを操作しようと思い 以下のサイトを参考にしようとしたのですが https://www.tekizai.net/entry/2021/10/04/063000 64bit版のPowershellでは出来ないようです 64bit版でも動かせるように変更はできないでしょうか?
770 名前:デフォルトの名無しさん mailto:sage [2023/04/08(土) 23:26:55.43 ID:ymsLMaB3.net] 64bit環境用のPersonal CommunicationsのOCXやらが無い場合は32bitのpowershellからCreateObjectするしかないとは思うけど そのサイトのVBA版では環境に関する言及がないね 32bit版Officeを使っているという前提で書いてるのかもしれないが試してみないと判らないね
771 名前:デフォルトの名無しさん [2023/04/10(月) 20:51:54.13 ID:4PCv5Fk3.net] すいません、当方SEで技術的な質問です administrator権限のユーザーでLinuxサーバーからパスワード認証でなく、秘密鍵と認証鍵の認証方式でwindowsサーバーにSSHを掛けたいのですが、administrator権限のユーザーですと、パスワードを聞かれてしまいます 他の権限のユーザーは問題無く認証されます administrator権限では認証方式のSSHは使えないのでしょうか?
772 名前:デフォルトの名無しさん mailto:sage [2023/04/10(月) 21:12:02.69 ID:bM8RH+P4.net] >>758 superuser.com/questions/1407020/ddg#1407042
773 名前:デフォルトの名無しさん [2023/04/10(月) 21:31:04.64 ID:4PCv5Fk3.net] >>759 ありがとうございます 明日、業務で試してみます
774 名前:デフォルトの名無しさん mailto:sage [2023/04/14(金) 21:40:03.65 ID:qiPEiEw+.net] Windowsのディスプレイ設定で拡大率を100%以外にしてると フォームの文字がぼやけるんだけど、なにか解決策はありますか? Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $form = New-Object System.Windows.Forms.Form $form.text= "タイトルはぼやけない" $label = New-Object System.Windows.Forms.Label $label.Size = New-Object System.Drawing.Size(300,20) $label.Text = "ディスプレイ拡大率が100%以外だと文字がぼやける" $form.Controls.Add($label) $form.ShowDialog()
775 名前:デフォルトの名無しさん mailto:sage [2023/04/14(金) 21:40:32.33 ID:qiPEiEw+.net] ちなみにOSはWindows11です
776 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 13:51:30.62 ID:iq3ZlEDB.net] その辺て外人もあまり正解に辿り着いてない箇所だな 俺も辿り着いたとは言えんけど面倒だった
777 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 14:12:07.08 ID:ig+gwe+P.net] C#を使うのが最適解
778 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 15:02:15.83 ID:cOO792TH.net] powershellじゃなくてWindowsFormsの問題でしょ 「WindowsForms ぼやけ」で検索したらいくらでも出てきたけど
779 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 19:25:15.71 ID:erslMsE0.net] WPFで作れば違うのか?
780 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 20:21:51.02 ID:iq3ZlEDB.net] ちょっと意識して組めばできなくはないから環境を変える程でもないな
781 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 22:14:25.62 ID:raQFwlCG.net] c:\aaa\bbb\ccc\hhh c:\aaa\ddd\eee c:\aaa\fff\ggg(以下続く) というフォルダ構造があった場合、ccc(サブフォルダhhhも含む)、eee、gggのフォルダを別のフォルダにコピーしたいんですがうまくいきません。 chatGPTに聞いたところ ($rootFolder=c:\aaa、$targetFolderはコピー先) $targetFolders = Get-ChildItem $rootFolder -Recurse -Directory | Where-Object { $_.FullName -like "$rootFolder\*\*\[ceg]" } となり、少し変更して $targetFolders = Get-ChildItem $rootFolder -Recurse -Directory | Where-Object { $_.FullName -like "$rootFolder\*\*" } としてみたんですが、これだとcccフォルダがコピー先に存在していた場合hhhフォルダがcccフォルダとは別にコピーされてしまいます。 同じフォルダ名があった場合サブフォルダの処理を飛ばしてフォルダ構造したままコピーする方法はないでしょうか。
782 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 22:16:07.91 ID:raQFwlCG.net] フォルダ構造したまま→フォルダ構造を維持したまま 失礼しました。
783 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 23:22:30.72 ID:iq3ZlEDB.net] ・同じフォルダ名があった場合サブフォルダの処理を飛ばしたい ってう制約を加えてchatGPTに聞いたらいいんじゃね
784 名前:768 mailto:sage [2023/04/16(日) 01:08:07.22 ID:i+x2SgN3.net] >>770 試してますがうまくいきませんね。aaaやbbbが例えであることをうまく理解してくれなくて、 全てのフォルダ名を手入力する必要があるコードしか作ってくれません。○や△みたいな記号に置き換えても同じ。 get-childitemで特定の深さ以下のフォルダ名を取得することができればうまく行きそうですが、 -depthは特定の深さ「まで」のフォルダを検索するオプションですよね? 特定の深さ以下のフォルダを検索する方法はありませんか?
785 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 11:56:14.63 ID:QYDIaDii.net] 一発でrecursiveでやるのを諦めて泥臭く2重なり3重なりの繰り返し処理にして 自分でフォルダを掘り下げていけばいいんじゃないの
786 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 11:57:11.68 ID:QYDIaDii.net] 深さが動的なら関数にして再帰呼び出し
787 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 12:07:35.90 ID:Gz6gIEIr.net] >>771 「特定の深さ以下」ではなく「特定の深さ直下」を対象としたいんだよね?
788 名前:デフォルトの名無しさん [2023/04/16(日) 12:38:10.68 ID:SPigkToS.net] >>771 相対パスの概念がないのか?
789 名前:デフォルトの名無しさん [2023/04/16(日) 12:47:20.03 ID:SPigkToS.net] >>768 はネタかもな コピー先に何があるのかチェックしないという発想は、まったく理解できない。 初心者なら前提条件という概念がないのはわかる。 先にあったらこうする、そうでなかったらこうするなどの条件分岐がないなら、強引にやればいい。 そもそもROBOCOPYコマンドでできることをやろうとしているのは、これ学校の課題なのかなと思いました。
790 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 15:01:28.21 ID:EhcVUpdk.net] 深さ3のディレクトリをそのままコピーすりゃいいだけじゃないの?
791 名前:768 mailto:sage [2023/04/17(月) 01:51:03.87 ID:GaP+UugE.net] >>774 そうなんですが、>>768 だとd:\コピー先\ccc\hhhとしたいのにcccフォルダがすでにあると d:\コピー先\ccc d:\コピー先\hhhになっちゃうんですよね。 >>772 の方法か、もしくは>>776 robocopyとforeachで何とかできるか? とりあえず自分であがいてみます。
792 名前:デフォルトの名無しさん mailto:sage [2023/04/17(月) 02:46:16.45 ID:dBG5z/eM.net] 入出力をちゃんと定義できてないからおかしな事になる初心者あるあるだな
793 名前:デフォルトの名無しさん mailto:sage [2023/04/17(月) 11:31:05.75 ID:udj2SRYX.net] 特定の深度だけ処理してみた ※$Sourceはフルパス指定であること param( [string] $Source, # $Sourceからの相対深度 [int] $RelativityDepth ) # パスを\と/で区切って配列化 $SourceDirSplit = $Source.Split([System.IO.Path]::DirectorySeparatorChar).Split([System.IO.Path]::AltDirectorySeparatorChar) foreach ($TargetDir in @(Get-ChildItem -LiteralPath $Source -Recurse -Directory)) { # パスを\と/で区切って配列化 $TargetDirSplit = $TargetDir.FullName.Split([System.IO.Path]::DirectorySeparatorChar).Split([System.IO.Path]::AltDirectorySeparatorChar) # 指定深度にあるDirを処理 if ($TargetDirSplit.Count -eq ($SourceDirSplit.Count + $RelativityDepth)) { # 一致したディレクトリを返す $TargetDir } }
794 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 22:39:13.81 ID:CpwHPFTk.net] Start-ThreadJob や Register-EngineEvent のスクリプトブロックの中で キャプチャされずにWrite-Output 相当の出力をする方法はないでしょうか パイプラインに流したいので Write-Host ではなく Write-Output したいです 別のプロセスを経由する方法は思いついたのですが残念過ぎますし ForEach-Object -Parallel のようにキャプチャされなければ良いのに function hogepiyo { begin { 処理本体はここで Start-ThreadJob しておく } process { … } end { … } clean { … } } なんちゃら | hogepiyo | ぽげむた のようにしたくて考えてます 要は入出力と処理を非同期にできれば他の方法でもありがたいです
795 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 22:12:24.17 ID:dJqrvGvM.net] キャプチャとか何言ってるのかわからない
796 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 22:40:35.29 ID:fUuxiSJs.net] PowerShellでフォーム作るの割と苦痛なんだけど何かデザインモードとかないの?
797 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 05:21:56.20 ID:ZJfuu8vu.net] Where-object多様するスクリプトに数万行のcsv食わせたら処理に1時間くらいかかる… 大量のデータ処理はWhere-object使うなってみかけたけど使わん方がいいのか
798 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 07:34:50.39 ID:TBBX4m6H.net] 件数が少ないことが確実な時しか使わない。 スクリプトだとほとんど foreach(){} 使ってる。 パイプライン処理したい場合でも &{} や .{} や function の process{} あるいは filter。
799 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 09:17:07.60 ID:kA/+t8w0.net] >>783 PowerShell Pro Tools https://ironmansoftware.com/powershell-pro-tools
800 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 11:30:54.75 ID:c3fakvC2.net] >>784 PowerShell スクリプトのパフォーマンスに関する考慮事項 ttps://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/performance/script-authoring-considerations?view=powershell-7.3
801 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 17:50:40.46 ID:4gKwO2KA.net] >>782 出力がコレクションにためられて Receive-Job が必要になるのを回避したい Start-ThreadJob の -StreamingHost オプションの Write-Output 版な感じ そんなオプションはないから回避方法を知りたい Start-TheadJobだけでなくイベントハンドラから出力する場合も同じ イベント飛ばせばいいかと思ったらハンドラがジョブ扱いされて頭抱えた どうすれば Receive-Job を必要とせずに Write-Output 相当の出力ができるのだろう
802 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 18:06:57.94 ID:xAAOLjx6.net] >>785 >>787 40万行処理するのに3時間かかったから作りなおすわ…
803 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 19:56:34.84 ID:6pSKsEtx.net] >>788 Jobである必要がないならRunspacePoolでできるんじゃね
804 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 21:03:30.48 ID:Vzmd1cD+.net] >>786 おお、あるのか来週会社で使ってみる ありがとう
805 名前:デフォルトの名無しさん mailto:sage [2023/04/22(土) 10:34:00.20 ID:iFkcYPBt.net] function target ・入力を読み続ける ・最後に読んだ入力を1秒間隔で出力し続ける ・入力が q なら終了 処理遅延を無視した理想的な使用例が . { $s = Get-Date; 1; sleep 3; 2; sleep 3; 'q' } | target | % { '{0} {1}' -f (Get-Date) - $s, $_ } 0:00:00.0000000 1 0:00:01.0000000 1 0:00:02.0000000 1 0:00:03.0000000 2 0:00:04.0000000 2 0:00:05.0000000 2 となるような function target はどうすれば実現できますか 処理時間でずれていくのはもちろんかまいませんが 入力待ちにも出力を続ける具体例が知りたいです
806 名前:デフォルトの名無しさん mailto:sage [2023/04/22(土) 10:36:10.71 ID:iFkcYPBt.net] おっと間違い (Get-Date) - $s でなく ((Get-Date) - $s) だ
807 名前:デフォルトの名無しさん mailto:sage [2023/04/22(土) 16:45:49.14 ID:3JkCsMe2.net] >>792 「qなら終了」が何を示すかによるが、powershellのパイプは途中で打ち切る事は原則できないと考えた方が良い。 (endブロックが呼ばれない不完全なハックならググれば見つかる) またパイプ処理の待機はpowershellのメインスレッドの待機という意味になるので、 そこに非同期イベントを介入させたい場合はそのイベント用の別スレッドを走らせておく必要がある。
808 名前:デフォルトの名無しさん [2023/04/22(土) 21:39:35.55 ID:81urZ/Lj.net] (New-Object -ComObject Shell.Application).NameSpace(10).MoveHere(ファイルパス) 上記の方法でファイルをごみ箱に移動する場合ファイルが1個なら問題ないんですが、 ファイルパスをを"z:\*"みたいにワイルドカードで指定するとなぜか ごみ箱でなくC:\Users\ユーザー名にファイルが送られてしまいます。 どうすればごみ箱に送れましょうか?
809 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 10:54:07.72 ID:ElcI27v7.net] >>794 q は出力スレッドの停止マークで、入力の最後も意味するつもりだった (その後の入力はない) という考えをくみ取って欲しくて例を付けたのだが伝わらなくて残念 パイプラインの中断にSelect-Object -First 1する話は知ってる ていうか本題から話をそらそうとしてません? 知りたいのはメインスレッド以外からプライマリパイプラインに出力する方法 パイプラインの次段に送るにはどうすればいいか具体例が欲しい
810 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 15:49:22.67 ID:fUzoPDLK.net] シェルスクリプトやPowerShell が遅いのは、 毎行、何かのプロセスを起動するからじゃないの? 多くはプロセスの起動時間だろう Ruby は、外部プロセスを起動しなければ、プロセスは1つのまま。 並行処理もあるけど grep は、1GB を1秒!
811 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:01:56.38 ID:vCOHFjdN.net] >>796 そもそもパイプは同期的にしか動かないので、次段でいくら細工しても上流が出力を起こしたタイミングに縛られる。 話を単純にするなら不規則な出力を受ける処理と一定間隔で出力する処理は分けるべきだろうね。
812 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:05:07.36 ID:fUzoPDLK.net] >>795 移動なら、robocopy のmov/move を使えば?
813 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:10:27.14 ID:n0NMvdBV.net] >>799 どうやればごみ箱に移動できましょうか?
814 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:33:01.94 ID:aISPDv4l.net] >>795 シェル名前空間はバグだか仕様だか判らない所があるから真面目に考えても無駄 もうそういう仕様と考えてファイルは1個1個送れば? ワイルドカードはgciで展開できるんだし
815 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 17:57:33.46 ID:ElcI27v7.net] >>798 サブスレッドがパイプラインに書き込めば次段が動くんじゃないの?
816 名前:言い換えると >>792 のfunction targetは実現不可能ということ? [] [ここ壊れてます]
817 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 17:53:43.44 ID:cODz6Qqq.net] >>801 どうもありがとうございます。そうします。
818 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 01:01:33.91 ID:q0KJktEO.net] 最近この言語で書くことあるけど関数の呼び出しを最初に書かないとエラー起こすなんて知らなくて問題解決に時間がかかった 多分ほとんどの人が関数はメインの後に書きたいと思うんだけどファイル分けて呼び出したりしてるの?
819 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 07:59:40.97 ID:0OU27daL.net] >>804 > 多分ほとんどの人が関数はメインの後に書きたいと思うんだけど んなことはない 呼び出される方を前に書かなきゃいけないのは他の言語でも多いぞ
820 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:14:10.57 ID:Q567y34W.net] >>805 定義を上書きできる言語なら呼び出し順序に意味があると思うけど、そうじゃないならただの手抜き仕様
821 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:17:30.73 ID:0OU27daL.net] >>806 実行速度が速くなる、スコープが明確になる、などのメリットがあって敢えて採用されてるんだよ JSとかも古くからあるfunction構文は順序関係ないが今推奨されてるアロー関数だと前に書かなきゃだめだ
822 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:19:33.10 ID:0OU27daL.net] あとスパゲティを防ぐ効果があるというメリットもあるな C言語だとそれを目的にプロトタイプを書かない人もいる
823 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:27:15.73 ID:h+X7r+oZ.net] 関数同士の依存関係が明確で前の関数が後の関数に依存しないなら初めてのコードを読みやすくなるというメリットもあるな
824 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:33:08.87 ID:TxIkuN+X.net] ホイスティングってJS以外であるの?
825 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 09:07:53.85 ID:qRrW+mkA.net] Java隆盛くらいの時代には関数はどこに書いても良いのが当たり前として定着したけど 関数型プログラミングでは関数宣言は変数や定数の宣言と同じようなものだからどうしても順序を意識せざるを得ない 順序の扱いを自動でやってくれる仕組みがホイスティングなんだけど、そのルールの分かりにくさやいやらしさが開発者に嫌われてJavaScriptのvarがletとconstに取って代わられた歴史がある
826 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 11:26:54.33 ID://VjHWfL.net] >>804 メインの部分をメイン関数として書いて実行時にメイン関数を呼び出すようにすればよいのでは?PowerShellはシェルとしても動くので実行時に先に関数が定義されていないといけないのは自然な動作のような気もする。
827 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 11:29:40.93 ID:Y1VsObgt.net] vbsは関数後書きでもokだよ よしvbs使おう
828 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 11:43:20.51 ID:Xlw1eETD.net] >>812 begin process endブロック使いたいときに発狂しそうだな
829 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 21:27:41.00 ID:RtJhGNCC.net] powershellでもclass内なら順序関係なくなるよ
830 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 17:38:09.61 ID:spWJYsDj.net] 自分のコード見たら別に後から宣言してても実行できてるんだが コマンドレットの定義だとホイスティングされるとかある?
831 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 17:56:23.79 ID:P088Z0u/.net] >>816 どういうコード書いてんのよ
832 名前:デフォルトの名無しさん [2023/05/04(木) 21:18:57.29 ID:FdNSNO1e.net] >>816 古臭いと言われても、前に書いた方が無駄な混乱をさけられる。
833 名前:デフォルトの名無しさん mailto:sage [2023/05/05(金) 18:03:31.01 ID:gmBJZ0Nw.net] 動的言語は第一級関数のクロージャが多いから、 関数外で宣言したローカル変数が、関数内へ持ち込まれるので、 スコープが広くて、ヤバイ さらに、JS はホイスティングされるから、超ヤバイ ただし、Ruby の関数だけは第一級関数のクロージャではなく、 関数外で宣言したローカル変数は、関数内へ持ち込まれない だから他の言語よりも、圧倒的にバグらないので、初心者向き
834 名前:デフォルトの名無しさん [2023/07/08(土) 13:16:16.25 ID:UoEVlKLQl] 他人の権利を強奪して私腹を肥やす強盗殺人政治やってる論理もクソもないロクに勉強してない議員た゛らけ無能外道集団公明党と違って維新 は最低限の知的能力を有してる奴が多いのは橋下徹の意向で容赦なく知的能カの足切りやってる成果なんた゛ろうけど、いい年して玉遊ひ゛とか してる無能を讃えてみたり,日本に原爆落とした世界最惡のならす゛者國家の覇権主義に利用されてるウクラヰナ状態になるリスクを無視して 軍拡推進してみたり,危險極まりない原發推進すれは゛電気料金は下がるた゛のほさ゛きか゛ら鉄道のЗ〇倍以上もの非効率クソ航空機によって莫大 な石油無駄に燃やしてヱネ価格暴騰させて温室効果カ゛ス倍増させて氣侯変動させて災害連發させて貿易赤字に.そんなバカの象徴萬博を誇っ てみたり.騒音によって知的産業に威力業務妨害して壞滅させて原發とか笑わせるレヘ゛儿にまで曰本の技術カ低下させて.勉強妨害して犯罪 惹起しながら動物虐待は罰則強化しろ、子の虐待には金くれてやれた゛の,いつの間にか憲法の下の平等に反しないヘ゛一シックインカムも言わ なくなって社会分断惹起して治安惡化とか,頭は回るか゛古い教育制度による時代遅れの固定観念による思慮のなさは直情的な橋下徹由来かな 創価学會員は.何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最悪の殺人腐敗組織公明党を 池田センセ─が口をきけて容認するとか本気で思ってるとしたら侮辱にもほどか゛あるそ゛! https://i.imgur.com/hnli1ga.jpeg
835 名前:デフォルトの名無しさん mailto:sage [2023/06/29(木) 13:26:04.42 ID:GLUt9X10.net] get-childitem select-object Full name,でownerを追加する方法はありますか?ご存知の方、ご教示願います。
836 名前:デフォルトの名無しさん mailto:sage [2023/06/29(木) 17:48:28.46 ID:xt/PffdC.net] >821 Get-ChildItemだけではowner情報は取れない、Get-Aclで情報取得する必要がある 組み合わせで良ければ以下の様にSelect-Objectでプロパティ追加すれば出来る Get-ChildItem|Select-Object FullName,@{n="Owner";e={Get-Acl $_.fullname|% {$_.Owner}}}
837 名前:デフォルトの名無しさん mailto:sage [2023/07/07(金) 19:48:22.82 ID:5l+s6JZK.net] Outlook を起動してメールを送りたいのですが 本文のメールのフォントサイズや色の指定が一切無視されます。 Outlook 側の設定なのか、コードが悪いのかもよくわからず。。。 スレ違いならすいません =================== $outlook = New-Object -comObject Outlook.Application $mail = $outlook.CreateItem(0) $mail.Subject = "件名テスト" $mail.HTMLBody = "<html>&
838 名前:lt;head><style type='text/css'> body {font-size:11; font-family:Meiryo UI;} </style></head><body> ああああ<span style='text-decoration:underline; text-decoration-color:red;'>いいいい</span>ううう<br> </body></html>" $inspector = $mail.GetInspector $inspector.Display() #$mail.Send() =================== 上記のコードだとメイリオは設定されますが、フォントサイズは8.5になるし下線は黒色になります。 なにとぞご教示お願いします [] [ここ壊れてます]
839 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 00:01:29.03 ID:pvSg+WfU.net] font-sizeの値に単位が無いから無視されてんじゃね
840 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 03:13:05.95 ID:ixw20e1S.net] >>824 試したはず・・・と思いつつも確認したら普通に変更されました!!! 11px で確認したのかもしれません。11pt と書いたら普通に反映されました ありがとうございます ただ下線は相変わらず赤色にならず、黒色のままです。 #FF0000 も試したけど変わらず・・・ どうやら text-decoration-color がそもそも使えないようでした。 さささ<span style='text-decoration:underline; color:red;'>ししし</span>すすす<br> とやったら文字も赤くなりましたが下線も赤くなりました。 Outlook に使える html の仕様との戦いな気がしてきた これはどこで尋ねたら・・・
841 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 10:11:13.02 ID:CzqO5vr+.net] 後はstyle属性をシングルクォーテーションで括ってるのが気になった 全体の括りをシングルにして属性値をダブルに変更で動くと思うよ
842 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 10:51:54.81 ID:ixw20e1S.net] シングルとダブルは変わりませんでした… 実際はPowerShellでメール本文内に変数を当てこむので シングルのままでいこうと思います あと下線だけ赤色は私の勘違いでした 赤下線の時は文字も赤くして問題なかったのでとりあえず解決しました お手数おかけしました ご助言くださった方ありがとうございました
843 名前:デフォルトの名無しさん mailto:sage [2023/07/13(木) 11:56:03.10 ID:cnmTEsiX.net] 二週間ほど前に自分で調べて書いたのに、どうやって書いて動かしたのか全く思い出せなくて困ってます 自分で自分が信じられないんですが、教えてください。 やりたいこと:Read-Hostで指定したフォルダに存在するフォルダを取得し、各フォルダに指定したファイルをコピーする 引っかかっている点: 1)$input = Read-Host "コピー先フォルダを指定" たとえばここでcopyと入力。規定のフォルダがC:\作業とする。 入力の結果、c:\作業\copyとして、ここにあるサブフォルダを取得したいので $inputをc:\作業\copyにしたい。 2)Get-ChildItem でディレクトリ名のみ取得するには? それでforeachでやってたと思うんですが・・・。
844 名前:デフォルトの名無しさん mailto:sage [2023/07/13(木) 13:50:42.52 ID:K8IsBXo8.net] Get-ChildItem -LiteralPath ([IO.Path]::Combine("C:\作業", (Read-Host "コピー先フォルダを指定"))) -Directory -Name
845 名前:デフォルトの名無しさん mailto:sage [2023/07/13(木) 17:51:09.66 ID:cnmTEsiX.net] >>829 わー初見のコード でもおかげでなんとかできました。ありがとう。
846 名前:デフォルトの名無しさん mailto:sage [2023/07/14(金) 04:02:22.77 ID:vOCFwCnb.net] 多分いままで書いてたコードはこれ # 規定のフォルダのパスを作成 $parent = join-path 'c:\作業' $input # 上記パスのサブフォルダ作成 $names = ls -pspath $parent -di | % name 下記はエイリアス(関数の別名) ls := get-childitem % := foreach-object
847 名前:デフォルトの名無しさん mailto:sage [2023/07/14(金) 04:02:59.81 ID:vOCFwCnb.net] # 上記パスのサブフォルダ作成 ↓ # 上記パスのサブフォルダ名を取得
848 名前:820 mailto:sage [2023/07/18(火) 17:12:35.63 ID:jBHsPJa3.net] >>822 遅くなりました。 set-location -pathで場所を指定したら、指定したフォルダのownerを取得できました。ありがとうございます。 get-Childitem -recruse -file ┃select-Object directoryName ,name ,extension ,Length Creationtime, lastACCESStime ,lastwriteTime, fullname ┃Export‐csv ‐Encodeing default xxx.csv と一緒にできなかったのが悔やまれます。
849 名前:デフォルトの名無しさん mailto:sage [2023/07/18(火) 18:02:52.05 ID:uMqw2ex7.net] そういう時はadd-memberするんだよ
850 名前:デフォルトの名無しさん mailto:sage [2023/07/18(火) 20:02:12.51 ID:x3+Ehzia.net] >>822 の何がだめで、あるいは何が分からなくて、そのコマンドに組み込めなかったのか分からんな。 起点ディレクトリ自体の情報もCSVに含めたい、って事なのかな。
851 名前:デフォルトの名無しさん mailto:sage [2023/07/18(火) 22:45:48.56 ID:BpIlHiPB.net] powershellの学習曲線は険しい 本人が納得したならもうそれでいいだろう
852 名前:820 mailto:sage [2023/07/19(水) 08:31:15.42 ID:wWAjwZqt.net] >>835 そうです。
853 名前:デフォルトの名無しさん mailto:sage [2023/07/19(水) 15:47:04.50 ID:mqKqy4GV.net] ならこんな感じで。 $dirPath = "起点ディレクトリのフルパス" [IO.FileInfo]::new($dirPath) | %{$_; $_ | Get-ChildItem -Recurse -File} | Select-Object DirectoryName, Name, Extension, Length, CreationTime, LastAccessTime, LastWriteTime, FullName, @{N="Owner";E={($_ | Get-Acl).Owner};} | Export-Csv -Encoding Default xxx.csv CSVの出力先がフルパスなら、Set-Locationはいらない。
854 名前:820 mailto:sage [2023/07/24(月) 18:16:28.42 ID:yY3fBN5A.net] >>838 ありがとうございますm(_ _)m とりあえずownerを取得できました。列の入れ替えはPowerQueryで対処します。 neme,Extensio,owner,...したかったのですが。
855 名前:デフォルトの名無しさん mailto:sage [2023/08/02(水) 23:31:49.70 ID:8Lc0dkYb.net] Pythonでやったら楽なのに…と思う処理も他のメンバーに配る可能性を考えると泣く泣くpowershellでやることになる 嫌いな言語ではないけど凝った処理を書こうとすると見た目の癖が強いソースコードになりがち
856 名前:デフォルトの名無しさん mailto:sage [2023/08/05(土) 08:55:12.86 ID:4wFerhHK.net] Pythonは見た目の癖が強くないとでも?
857 名前:デフォルトの名無しさん mailto:sage [2023/08/05(土) 09:35:04.11 ID:wvUeqD5z.net] 泣く泣くpowershellに草
858 名前:デフォルトの名無しさん mailto:sage [2023/08/06(日) 22:29:47.72 ID:5CExyS7F.net] 質問なのですがパイプラインの結果を関数に渡して先頭からk番目を取り出すには一体どうすればorz やりたいことはパイプラインの結果を検証する処理をサブルーチン化したい(k番目を取り出すのはその第一歩) とりあえず書いたがうまく行ってないやつ: function Test-RegEnt($reg_query_result, $exp_type, $exp_value) { $reg_query_result | Select-Object -Index 2 } Write-Output ("Test_A1:" + ($result | Select-Object -Index 2)) # 2行目が意図通りselectされる(" RegisteredOwner REG_SZ Admin") $result2 = Test-RegEnt($result, 'REG_SZ', 'Admin') Write-Output ("Test_A2:" + $result2) # A1と同じ結果になるかと思いきや、'Admin' になる
859 名前:デフォルトの名無しさん mailto:sage [2023/08/06(日) 22:31:40.76 ID:5CExyS7F.net] 先頭3行抜かしましたorz $result = reg query 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' /v 'RegisteredOwner' $cnt = 0 $result | ForEach-Object{ "TEST[$cnt}:" + $_; $cnt++ } この次に>>843 のコード。
860 名前:デフォルトの名無しさん mailto:sage [2023/08/06(日) 22:48:34.72 ID:5CExyS7F.net] んまーなんかこれだとうまく行ったけんども思ってたのと違う…… function Test-RegEnt($exp_type, $exp_value) { $Input | Select-Object -Index 2 } $result = reg query 'HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion' /v 'RegisteredOwner' $cnt = 0 $result | ForEach-Object{ "TEST[$cnt}:" + $_; $cnt++ } Write-Output ("Test_A1:" + ($result | Select-Object -Index 2)) $result2 = ($result | Test-RegEnt('REG_SZ', 'Admin')) # パイプラインの結果を引数ではなくパイプで渡す Write-Output ("Test_A2:" + $result2) 実はパイプラインの結果(オブジェクトの配列)は関数引数に渡せなかったりするので
861 名前:? つなみにfunctionの引数部分で [array]$reg_query_result としてみてもうまく行かなかった。 [] [ここ壊れてます]
862 名前:デフォルトの名無しさん mailto:sage [2023/08/07(月) 03:16:48.48 ID:SSXgsNNw.net] 文法が違う。 Test-RegEnt -reg_query_result $result -exp_type 'REG_SZ' -exp_value 'Admin' とか Test-RegEnt $result 'REG_SZ' 'Admin' とか。 または function Test-RegEnt { Param ( [Parameter(ValueFromPipeline=$true)] [string] $reg_query_result, [string] $exp_type, [string] $exp_value ) Begin { $cnt = 0 } Process { $cnt++ $idx = $cnt - 1 if ($idx -eq 2) { $reg_query_result return } } } $result | Test-RegEnt -exp_type 'REG_SZ' -exp_value 'Admin'
863 名前:デフォルトの名無しさん mailto:sage [2023/08/07(月) 06:50:14.57 ID:L1yQ0BJe.net] >>846 レス㌧クス $Input利用(>>845 )とBegin { } Process { }利用の違いはわかりた $resultが数億オブジェクトだったりしたら後者の方がパイプラインがスムーズに流れてよさげ(未検証 一方、 >実はパイプラインの結果(オブジェクトの配列)は関数引数に渡せなかったりするので?(>>845 ) については関数の呼び出し箇所が $result | Test-RegEnt -exp_type 'REG_SZ' -exp_value 'Admin' # (1) OK Test-RegEnt -reg_query_result $result -exp_type 'REG_SZ' -exp_value 'Admin' # (2) NG (エラー) やったから、これは「パイプラインの結果は関数引数には渡せない」((1)のように書くしかない)ということでFA?
864 名前:デフォルトの名無しさん mailto:sage [2023/08/07(月) 06:54:08.66 ID:FZVMVghc.net] Select-ObjectのSkipとFirst使えばできるのでは?
865 名前:デフォルトの名無しさん mailto:sage [2023/08/07(月) 06:56:57.16 ID:FZVMVghc.net] 関数でやりたいという要件を見落としていた
866 名前:デフォルトの名無しさん mailto:sage [2023/08/07(月) 07:04:28.71 ID:FZVMVghc.net] >>843 > $result2 = Test-RegEnt($result, 'REG_SZ', 'Admin') $result2 = Test-RegEnt $result 'REG_SZ' 'Admin' でやりたいことはできるのではないでしょうか
867 名前:デフォルトの名無しさん mailto:sage [2023/08/07(月) 22:40:57.49 ID:SSXgsNNw.net] パイプラインと引数のどちらでも動くようにしたいなら function Test-RegEnt { Param ( [Parameter(ValueFromPipeline=$true)] [string[]] $reg_query_result, [string] $exp_type, [string] $exp_value ) Begin { $cnt = 0 } Process { foreach ($item in $reg_query_result) { $cnt++ $idx = $cnt - 1 if ($idx -eq 2) { $item break } } } } あくまでシンプルめのサンプルなんでSelect-Object -Index 2と全く同じ挙動とか期待しないように。 ※作りこむならパイプが繋がってるのかチェックして分岐の処理書いたりする。 なお、大量のデータをパイプラインに流すのはお勧めできない。 パイプラインは途中での打ち切りとか難しいし、 結局は普通にループ処理書いた方が速いし制御しやすいし分かりやすい事が多い気がする。
868 名前:デフォルトの名無しさん mailto:sage [2023/08/10(木) 07:01:52.35 ID:3iQsMBl9.net] レス㌧クス、しかしながら大量データを引数で関数に渡すのはメモリ消費量、応答速度ともに悪くなることがわかったからやめるわサーセン;;; どういうことかというと、bigfile.txtが(1行何か書いたいた後 Ctrl+A Ctrl+V Ctrl+V を22回反復とかで作った) 4194305行の巨大なテキストファイルだったとして、 function Test-FileContent([string[]] $lines) { $cnt = 0; foreach ($line in $lines) { $cnt++; Write-Host "cnt=" $cnt } } $lines = Get-Content .\bigfile.txt # (1) Test-FileContent($lines) # Get-Content完了後の結果を引数で渡す とするとお、「cnt= 1」が表示される前に(1)で永劫の時間待たされるますが、 function Test-FileContent() { $cnt = 0; foreach ($line in $Input) { $cnt++; Write-Host "cnt=" $cnt } } Get-Content .\bigfile.txt | Test-FileContent # Get-Contentが読んだら即パイプで渡す とすると*即座に*「cnt= 1」以降のカウントが始まる
869 名前:デフォルトの名無しさん mailto:sage [2023/08/10(木) 07:07:45.76 ID:3iQsMBl9.net] つなみに >$resultが数億オブジェクトだったりしたら後者の方がパイプラインがスムーズに流れてよさげ(>>847 ) も検証すた、 >>847 のレスポンスが即時のコードと似通っているが関数内でBEGIN { } PROCESS { }でなく$Inputをforeachループで回した場合、 すわなち function Test-FileContent() { $cnt = 0; foreach ($line in $Input) { $cnt++; Write-Host "cnt=" $cnt } } Get-Content .\bigfile.txt | Test-FileContent とすると、、「cnt= 1」が表示される前に永劫の時間待たされる、、、 というわけで、パイプライン(の後段まで)に大量のデータを無駄に流すなというのは真やが 生じてしまった大量のデータはむしろパイプラインにしか流さないのが正義……
870 名前:デフォルトの名無しさん mailto:sage [2023/08/10(木) 07:10:57.08 ID:3iQsMBl9.net] >>852 の肝心のところに誤記が合ったスマンヌorz *即座に*「cnt= 1」以降のカウントが始まるコードは正しくはこれ↓ function Test-FileContent() { BEGIN { $cnt = 0 } PROCESS { $cnt++; Write-Host "cnt=" $cnt } } Get-Content .\bigfile.txt | Test-FileContent
871 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 18:46:06.42 ID:I7dwFhkG.net] パイプの利点は個数を意識しなくて済むことだけど中断が一切できないしデメリットの方が多い よっぽどの事情でもない限りコマンドレット自作しても遅いだけで良い事なんて1つもない 公式のselect -firstなんかはパイプの流儀に従ってないから似た事をしようとしてもあれ?って自らの間違いに気付くんだよ powershellの深遠を覗くとそのいい加減さにガッカリするだけ
872 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 19:17:06.70 ID:SL3m3m5F.net] 一番の利点はメモリの節約です
873 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 19:30:40.13 ID:I7dwFhkG.net] メモリなんて遅さで相殺される powershell + 大量データ = 遅くて不採用
874 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 19:42:42.98 ID:bAYgNtyZ.net] >>857 使いどころを履き違えるとそうなる
875 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 19:56:15.04 ID:I7dwFhkG.net] >>858 パイプに希望を見てるのかな その認識では近く失望させられるだろう
876 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 20:07:52.72 ID:PQblbJTG.net] 一番良いのは、Windowsを使わない これにかぎる こんなクソなOSを世界中から捨てるべき
877 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 20:09:59.59 ID:SL3m3m5F.net] Windowsは汎用事務処理端末としては競合なしだ
878 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 20:27:11.32 ID:SL3m3m5F.net] メモリ効率とスループットは交換できるようなものではない 手軽さが不要ならPythonでも使っておけばいい
879 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 21:36:23.24 ID:55Ub7uv5.net] いまだにPowerShellがWindows専用だと思ってるアホを真っ先に捨てるべき
880 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:05:41.72 ID:FP8PIUGD.net] で>>843 の質問に戻るのですだが、動かなかったのは単純だが根本的な誤解してたのが原因…… C/C++と同じだろうというつもりで >$result2 = Test-RegEnt($result, 'REG_SZ', 'Admin') という呼び出し方に書いたが、これだと「Test-RegEntの第一引数$reg_query_resultに「配列」@($result, 'REG_SZ', 'Admin')を渡す」という意味になる ので、関数内で >$reg_query_result | Select-Object -Index 2 とやったら当然そのindex=2の要素 'Admin' が関数の出力となってた、というしくみ
881 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:07:08.58 ID:FP8PIUGD.net] 正しくは>>846 式に >Test-RegEnt -reg_query_result $result -exp_type 'REG_SZ' -exp_value 'Admin' またはその省略表記としては >Test-RegEnt $result 'REG_SZ' 'Admin' # カンマ区切りではなくてスペース区切り にせねばならなかった ことがわかったorz 止むにやまれない事情で昨日一日で1500行書いてデバッグしたらその過程でわかった|||。n_
882 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:11:54.59 ID:FP8PIUGD.net] あと他のスクリプトをincludeするときの欠き方が気づかないとわかりにくい…… util.ps1 を同じフォルダにある someapp.ps1 からインクルードする場合は '.\util.ps1' ではダメで、 .'.\util.ps1' にしないとutil.ps1で定義した何物も呼び出せないorz ここで先頭の「.」はutil.ps1のスクリプトスコープを呼び出し元のスコープと同じにするという意味やがちょう紛らわしい……
883 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:20:54.21 ID:FP8PIUGD.net] あと関数内においては代入文、[void]にキャストした文、if文とかの条件式 を除く全ての文が出力を持つ、 という仕様のせいで危うく恐ろしいバグを作り込むところやった;;; function Show-ErrDlg($msg) { $wsobj = new-object -comobject wscript.shell $wsobj.popup($msg, 0, 'エラー', 0 -bor 16) }
884 名前:function Test-Equipment1() { $result = (何かのテスト) if (!$result) { Show-ErrDlg('何かのテスト failed.') } return $result } でとするとテストが失敗したときも [] [ここ壊れてます]
885 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:25:27.54 ID:FP8PIUGD.net] if (!(Test-Equipment1) { exit 1 } (テスト正常終了の表示処理) でテスト正常終了の表示が出るorz これは何でかというと$wsobj.popup($msg, 0, 'エラー', 0 -bor 16) 」がクリックされたボタンの番号を出力する結果、$resultがまたしても配列 @( (「なんかのテスト」の結果), ($wsobj.popup()でクリックされたボタンの番号) ) となりこれが Test-Equipment1() の戻り値となり、それをif文で評価したら最後の要素
886 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:27:54.43 ID:FP8PIUGD.net] (OKボタンのコード6)と評価されるため、!6なので常に偽になるというしくみ、、、、 こう修正すたら直った function Show-ErrDlg($msg) { $wsobj = new-object -comobject wscript.shell [void] $wsobj.popup($msg, 0, 'エラー', 0 -bor 16) # [void]付ける } わかるかこんなもん…… および原理的にlint的な機械的チェックもできない……
887 名前:デフォルトの名無しさん mailto:sage [2023/08/11(金) 23:35:32.35 ID:FP8PIUGD.net] これはデフォルトで出力無しとして、 なんかの接頭辞を付けた文だけが結果がパイプに出力されるるようにする仕様であるべきだった希ガス (出力が無いというミスはすぐ気づける てかWrite-Outputを省略可能としているのがそもその誤り…… ※ 個人の感想です いっぱい連投したがTeamsのつもりでShift+Enterしたら投稿されてしまったせいやスマンヌorz いじょ
888 名前:デフォルトの名無しさん 転載ダメ mailto:sagete [2023/08/12(土) 00:58:59.52 ID:H+b+A9qi.net] ============================ function Hoge([int]$num) { echo "Debug" return ($num + 1) } $a = Hoge(1) echo $a ============================ こうすると $a には Debug と 2 の2つが入る ============================ function Hoge([int]$num) { .{ echo "Debug" } | Out-Null return ($num + 1) } $a = Hoge(1) echo $a ============================ こうすると $a には 2 の1つしか入らない 不要なところは 「 .{ ~~~ } | Out-Null 」で表示を抑制したら楽になるかも
889 名前:デフォルトの名無しさん mailto:sage [2023/08/12(土) 01:19:17.04 ID:DbL0Mu2X.net] >>843 に言える事はパイプで何番目とかいう考えは捨てた方がいい パイプは途中で処理を打ち切る機能が欠落してるから何番目だけに用があろうが全ストリームを読み終わるまで終わらない
890 名前:デフォルトの名無しさん mailto:sage [2023/08/12(土) 08:19:31.33 ID:IRt4i0hm.net] ほぼ誤差だが |Out-Null より $null= で処理した方がパフォーマンスがよく、可読性も高い
891 名前:デフォルトの名無しさん mailto:sage [2023/08/12(土) 08:23:13.14 ID:ueiwXwrP.net] PowerShell スクリプトのパフォーマンスに関する考慮事項 https://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/performance/script-authoring-considerations
892 名前:デフォルトの名無しさん mailto:sage [2023/08/12(土) 22:00:12.59 ID:pISu+im0.net] >>872 わかりた パイプラインの打ち切りは、実現方法はあるが円満な解決方法はなさげ(どれもこれもなんかしらのミソがつく パイプで$n番目、というだけならSelect-Objectしたらv3以降ならn+1番目以降を打ち切ってくれる $n = 2 Get-Content .\bigfile.txt | Select-Object -Index $n | Foreach-Object { Write-Output "cnt=${n}: $_" } # bigfile.txtが1億行あっても瞬時に戻って来る が、これは「Select-Object -Index ~」部分を関数化したら元の木阿弥になる function Select-Nth($n) { $Input | Select-Object -Index $n | Foreach-Object { Write-Output "cnt=${n}: $_" } } Get-Content .\bigfile.txt | Select-Nth(2) # bigfile.txtを1億行全部読み込んでからおもむろに出力する 構文的に$_を使った関数やフィルタとしては書けない データを見て条件が成立したら打ち切り、というのになるともっとマンドクセ…… https://winscript.jp/powershell/308
893 名前:デフォルトの名無しさん mailto:sage [2023/08/12(土) 22:23:22.94 ID:pISu+im0.net] >>871 それな! ワカル ㌧クス、 >>873 わかりた function Hoge([int]$num) { [void].{ echo "Debug" } return ($num + 1) } $a = Hoge(1) echo $a でも逝けた
894 名前:デフォルトの名無しさん mailto:sage [2023/08/12(土) 22:55:15.75 ID:zGmVrirz.net] 関数の出力が意図せず(うっかり)複数個所から行われ分かりにくい点は バッチとかシェルスクリプトの挙動に合わせすぎた為だろうね。 例えばping.exeを対象2か所に実行するバッチ(.bat)をパイプで繋げたら、 バッチ1つの実行で、ping2回の20行程度がパイプに流れる。 PowerShellスクリプトや関数もこれと同じだと考えればそんな違和感ないはずなんだけど、 元々他の言語なんかで「関数の戻り値は1つ(明示的な1つor関数末尾の1つ)」とか 「明示的に変数格納や出力などしなければ、メソッドや関数の戻り値は捨てられる」 って事に慣れてるし、PowerShellも同じ文法だから同じ挙動を期待しちゃう。 上でも出てるけど、標準ではパイプに流さない仕様とした方が 敬遠される点が減ったと思う。
895 名前:デフォルトの名無しさん mailto:sage [2023/08/14(月) 13:31:51.80 ID:4NX3l0Vm.net] パイプはスレ違いのバッチスレでドヤ顔ワンライナーするぐらいしか能が無いと言っても過言
896 名前:デフォルトの名無しさん mailto:sage [2023/08/14(月) 21:15:06.40 ID:5teSXOgl.net] 1GiB程度のファイルを処理するときにはパイプは重宝するよ
897 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 05:53:15.07 ID:WIzBRZyi.net] バッチファイルのパイプはメカニズムが違う あれは実質一時ファイルを作って次段に渡しているだけなので遅い、と言おうと思ったが "*<CR><LF>" を2^23個書き並べたbigfile.txtに対してコマンドプロンプトで type bigfile.txt | find /C "*" とやったら「瞬時に」 4194304 と返って来るのに、PowerShellで Get-Content .\bigfile.txt | find.exe /C "*" とやったら永劫の時間待たされた後 FIND: パラメーターの書式が違います と言われた後Ctrl+Cにも応答しなくなた……どうなってるのこれ……
898 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 14:11:57.72 ID:e55ZiwZ3.net] そりゃパイプで外部コマンドに送ったら1行ずつfind.exe実行して終了するだろうから おかしなことにもなるだろうよ
899 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 15:18:16.71 ID:qi/dYdNU.net] > あれは実質一時ファイルを作って次段に渡しているだけなので遅い それはシングルタスクだったDOS時代の話だろ NTのcmd.exeには当てはまらない
900 名前:デフォルトの名無しさん mailto:sage [2023/08/15(火) 15:39:41.88 ID:LS4gbGEC.net] cmd.exeはパイプやfor /Fのコマンドとかワーカースレッドを生成して 別タスク(子環境)としてデータの送り手や受け手を作ってるかな
901 名前:デフォルトの名無しさん mailto:sage [2023/08/24(木) 22:36:16.57 ID:W+JHQ2GG.net] Get-WinEventでSystem.evtxだかのファイルを処理させるとコマンドレットが終了しても一定時間プロセスがファイル掴みっぱなしになるのどうにかしてくれ わざわざ別プロセスでGet-WinEvent用のpowershell起動させる間抜けなコードになったぞ
902 名前:デフォルトの名無しさん mailto:sage [2023/08/25(金) 11:28:27.28 ID:WAOpDjEy.net] 処理速度都合なのかな〜って思ってるけど閉じる手段は提供して欲しい。 自分は.NETのクラス使って処理書いちゃった。
903 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 19:42:45.42 ID:hSX1x29k.net] エクスプローラでファイル選択してコピーして (Get-ClipBoard -Format FileDropList).GetType().ToString() → System.Collections.Generic.List`1[System.Management.Automation.PSObject] うん。 Get-ClipBoard -Format FileDropList | %{$_.GetType().ToString()} → System.Collections.Generic.List`1[System.Management.Automation.PSObject] うn? foreach( $info in Get-ClipBoard -Format FileDropList ){ $info.GetType().ToString() } → System.Collections.Generic.List`1[System.Management.Automation.PSObject] えぇ… Get-ClipBoard -Format FileDropList | %{$_} | %{$_.GetType().ToString()} → System.IO.FileInfo … [System.IO.FileInfo[]](Get-ClipBoard -Format FileDropList) | %{$_.GetType().ToString()} → System.IO.FileInfo うーん… $list = Get-ClipBoard -Format FileDropList $list | %{$_.GetType().ToString()} → System.IO.FileInfo まぁ… なんか不必要に使いづらい気がするのは自分だけかな。
904 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 19:07:34.39 ID:1kNnDW8h.net] $(Get-ClipBoard -Format FileDropList) | %{$_.GetType().ToString()} → System.IO.FileInfo バッドノウハウの領域だなー
905 名前:デフォルトの名無しさん mailto:sage [2023/09/12(火) 10:37:58.96 ID:EIIMdpOe.net] 隠し属性が設定されたファイルが排他されてるとかで読めない状況のときに -ForceついたGet-Contentで読もうとすると隠し属性解除されるのは理由あるんだろうか
906 名前:デフォルトの名無しさん mailto:sage [2023/09/12(火) 13:50:19.66 ID:KE5ufRbn.net] 質問で申し訳ない AccessでエクスポートしたxlsxをPowershellでComObjectを作成してOpenしたいんだけど 破損している云々で発行元を信用しますか?ってダイアログのせいでOpen出来ない https://learn.microsoft.com/ja-jp/office/vba/api/excel.workbooks.open ここによると15個目の引数で1を指定(xlRepairFile)すれば良さそうなんだけど Powershellで実行するとOpenプロパティが無いよって怒られる。 実際のコードはこう $excel = New-Object -ComObject Excel.Application $excel.Visible = $True $fileName = (Get-ChildItem "test.xlsx").FullName $book = $excel.Workbooks.Open($fileName, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, [System.Type]::Missing, 1)
907 名前:デフォルトの名無しさん mailto:sage [2023/09/12(火) 16:40:21.35 ID:OgaNelN6.net] CSVでエクスポートしなよ
908 名前:デフォルトの名無しさん mailto:sage [2023/09/12(火) 17:47:39.83 ID:EIIMdpOe.net] とりあえずこうすると回避できた。 using namespace Microsoft.Office.Interop.Excel $excel = New-Object -ComObject Excel.Application $excel.Visible = $True $fileName = (Get-ChildItem "test.xlsx").FullName $param = @([Type]::Missing) * 15 $param[0] = $fileName $param[14] = [XlCorruptLoad]::xlRepairFile $workbooks = $excel.Workbooks $book = $workbooks.Open.Invoke($param)
909 名前:デフォルトの名無しさん mailto:sage [2023/09/12(火) 18:53:31.49 ID:uneKtCE6.net] >>891 あざす!めっちゃ参考になるます
910 名前:デフォルトの名無しさん 転載ダメ mailto:sagete [2023/09/13(水) 02:20:54.13 ID:E0UN4wqY.net] $param = @([Type]::Missing) * 15 は $param = @([Type]::Missing) * 0xFF のほうが人にやさしい気がする
911 名前:デフォルトの名無しさん mailto:sage [2023/09/13(水) 07:53:07.83 ID:mwnND43t.net] は?
912 名前:デフォルトの名無しさん mailto:sage [2023/09/13(水) 09:33:15.43 ID:ozJmt5GG.net] ひ?
913 名前:デフォルトの名無しさん mailto:sage [2023/09/13(水) 23:41:10.61 ID:tgD8Mqqk.net] >>893 の後者は配列に255を掛けてるように見えるのだが 人にやさしい部分てどこ?
914 名前:デフォルトの名無しさん mailto:sage [2023/09/14(木) 03:25:22.93 ID:37z8xtDS.net] マスクしてるのかと思ったわ ちゃんとソース見てなかった すまんこ
915 名前:デフォルトの名無しさん [2023/09/16(土) 23:53:08.17 ID:DkE7QlfD.net] PowershellのGUI使って簡単な時報を作りたい。 System.Windows.Forms.Timerを使って作ったんだが今何時判定で$Aの数字が毎回リセットされるんでIntervalの回数だけ別ウィンドウが開きまくる。 使い方間違ってるか?教えてくれさい。 $timerTestTick { 【適当に現在時表示】 if(【指定した時間になったら】-and【$Aがtrueなら】){ start-prosess 【音楽ファイルを別ウィンドウで再生して処理継続】 $A = false } } $timerTest.Add_Tick($timerTestTick) $timerTest.Interval = 200 $timerTest.Enabled = $TRUE $timerTest.Start() 【適当にフォーム作って表示】
916 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 01:59:03.31 ID:ENG0J7cr.net] >$Aの数字が毎回リセットされるんで それ$Aを更新しようとする度に毎回スクリプトブロックで別の$Aが生成されるからやね ([ref]$A).Value = $false と書けば元の$Aを探しにいくから更新できると思う Powershellのはまりポイントの1つやね
917 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 03:18:20.18 ID:LjIc1dUH.net] powershellでGUIって、c#使えない宗教的理由でもあるの?
918 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 05:45:06.34 ID:5It5oWIy.net] >>899 スクリプトブロックていうのが働いてるのか。とりあえず試してみるありがとう。 >>900 宗教的理由というより書けないから出来ることで色々やってみてた。 というかPowerShell単体でC#つかえるの?
919 名前:デフォルトの名無しさん [2023/09/17(日) 09:35:27.80 ID:LYUgOkBe.net] PowerShellでGUI作れるんか! 知らんかった これは興味ある
920 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 09:48:58.34 ID:oJeCWV6s.net] >>902 システム管理のサンプル スクリプト https://learn.microsoft.com/ja-jp/powershell/scripting/samples/sample-scripts-for-administration 公式ドキュメントならここの「UI 要素の作成」って所を見てみるといい
921 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 13:31:47.95 ID:LJFSWd1b.net] GUI作れるとかマジか ワザワザHTMLソース内部に仕込んでWEBベースでやりとりしてた俺は一体・・・
922 名前:デフォルトの名無しさん mailto:sage [2023/09/17(日) 14:04:19.59 ID:ENG0J7cr.net] 一応.NET言語の1つではあるからGUIは普通に作れるが 俺はC#コード埋め込んでFuncやAction経由で必要時にpowershellと連携する感じの使い方だな Powershellのコードだけで作るの自体が割と面倒なのや型チェックが働かない辺りとかかあんまメリットを感じない
923 名前:デフォルトの名無しさん mailto:sage [2023/09/26(火) 21:32:36.63 ID:cR6Dxv5m.net] htaの代わりとしてforms呼び出して組んでたけどcssが便利すぎて最近は使ってないな... wpfはどうなんだろうか...
924 名前:デフォルトの名無しさん mailto:sage [2023/09/29(金) 04:49:25.46 ID:wxGTflxT.net] まじでかいな
925 名前:デフォルトの名無しさん [2023/10/01(日) 14:37:52.98 ID:nRV7BOcHv] 防災訓練とか災害ボランティアって工ラヰなーとかスコ゛ヰなーとか思われるとでも思っちゃってるのかな 都心まで数珠つなぎて゛騒音に温室効果ガスにコロナにとまき散らさせて気候変動させて海水温上昇させて地球破壊して 日本どころか世界中で土砂崩れに洪水、暴風、熱中症、森林火災にと災害連發させて JALだのАΝΑだのクソアイヌドゥだの酒飲んで業務してるクサイマークだのゴキブリフライヤ−だの殺人テ囗リストに 天下り賄賂癒着してる世界最悪の殺人腐敗テロ組織公明党斉藤鉄夫ら国土破壊省をスル一しながら何寝ぼけたことやってんだかな こういう安易な自己満足が気候変動テロを肯定してさらなる多くの人々を死に追いやってることを自覚しろや力ス 憲法カ゛ン無視で人権に財産権にと侵害して威力業務妨害して私腹を肥やしてる諸悪の根源を殲滅して 災害の連発を食い止めることこそ本質だといい加減、気づけやオナニーバカ (羽田)ttps://www.call4.jp/info.php?Type=itеms&id=I0000062 , ttΡs://haneda-Рroject.jimdofreе.com/ (成田)ttps://n-souonhigaisosyoudan.amebaownd.com/ (テロ組織)тtps://i.imgur.com/hnli1ga.jpеg
926 名前:デフォルトの名無しさん [2023/10/06(金) 21:47:54.00 ID:ESX4xHYZ.net] 日付を元に指定範囲内の一意の数字を出すってできる? 200ぐらいある今日の一言的なものを毎日ランダムで出したいんだがアプリケーションを再起動すると変数リセットされて別の単語出てしまうのを抑止したい。
927 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 22:00:29.66 ID:7j+1PDTD.net] その日の初回の結果をファイルに出力して 2回目以降はそのファイルを読み込みに行けば良いのでは
928 名前:デフォルトの名無しさん [2023/10/06(金) 22:04:29.98 ID:ESX4xHYZ.net] >>910 それしかないかなぁ ファイル出力を避けたかったんだが
929 名前:デフォルトの名無しさん [2023/10/06(金) 22:35:50.48 ID:ESX4xHYZ.net] >>910 できそうだからファイル出力の方向でやってみるありがとう。
930 名前:デフォルトの名無しさん [2023/10/06(金) 22:36:00.82 ID:ESX4xHYZ.net] >>910 できそうだからファイル出力の方向でやってみるありがとう。
931 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 23:26:20.49 ID:WmRjQTiM.net] その条件なら日付をシード値とみなせるんだから 別の単語が出てくる方がおかしいんじゃないのか 基礎的な論理思考力が欠けているね
932 名前:デフォルトの名無しさん mailto:sage [2023/10/06(金) 23:44:27.78 ID:7j+1PDTD.net] あ、-SetSeedって完全固定の疑似乱数なのか。 再起動したら変わると思ってた。
933 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 04:01:41.30 ID:lBZtWf6D.net] Get-Random -SetSeed $(Get-Date -Format "yyyymmdd") -Maximum 200
934 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 06:18:44.31 ID:xTEoYklV.net] >>916 seedなんてもんがあったのか! ありがとう!
935 名前:デフォルトの名無しさん mailto:sage [2023/10/07(土) 15:47:42.69 ID:lBZtWf6D.net] 912 と 913 をワンライナーで視覚化しただけやぞ
936 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 20:27:09.33 ID:bO8eXdHU.net] >>906 wpfも普通にいけるけど、vsのデザイナーがないと厳しいから、じゃあc#でいいかとなりがち htaの代替としたらwpfかwinformで枠だけ作ってwebview2埋め込むのがおすすめ qiitaでも記事があったはず
937 名前:デフォルトの名無しさん mailto:sage [2023/10/08(日) 22:07:55.52 ID:SlOLtELZ.net] webview2ランタイム自体の埋め込み手段がなあ
938 名前:デフォルトの名無しさん [2023/10/20(金) 16:26:02.69 ID:3co0KDj6.net] こんにちは フォルダの配下のすべてのテキストファイルを結合した文字列を出力したいです フォルダ直下のファイルだけなら Get-Content *.txt でできました 該当するファイルの一覧は Get-ChildItem -Recurse -Filter "*.txt" -Name でできましたが Get-ChildItem -Recurse -Filter "*.txt" -Name | Get-Content としてもエラーになります
939 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 19:30:02.44 ID:qU4/oN+w.net] 「 -Name」が不要。
940 名前:デフォルトの名無しさん mailto:sage [2023/10/20(金) 20:49:00.72 ID:3co0KDj6.net] できました!
941 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 16:01:28.45 ID:Vjqv9VpS.net] PSNativeCommandPreserveBytePipe が楽しみすぎる
942 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 16:01:33.19 ID:Vjqv9VpS.net] PSNativeCommandPreserveBytePipe が楽しみすぎる
943 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 16:59:01.62 ID:sGPoKgPO.net] この言語って3次元以上の配列って出来ないって認識であってる? 二次元は $array[0,0]で良いんだよね? 三次元というかジャグ配列?はとりあえず使えるから $array[0][0,0] でやってるんだけど中の2,3次元目とか中の要素数カウントが出来なくて結構困ってる
944 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 18:05:21.98 ID:BgNWqm6B.net] ジャグ配列で良いんだったら$array[0][0][0]…といくらでも入れ子にすれば良かろうに
945 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 19:44:43.60 ID:CQ6pveQE.net] 多次元配列はこうじゃない? $array = [Object[,,]]::new(4,5,6) # 3次元、4×5×6 $array[0,0,0] = "(0, 0, 0)" $array[0,0,1] = "(0, 0, 1)" # 参照は「$arraya[0,0,0]」だと配列スライスと間違えそうだから「$array.Get(0,0,0)」の方が安全かも。
946 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 19:47:15.76 ID:CQ6pveQE.net] 要素数は $array.GetLength(0) # 4 $array.GetLength(1) # 5 $array.GetLength(2) # 6
947 名前:デフォルトの名無しさん mailto:sage [2023/10/31(火) 19:54:44.51 ID:sGPoKgPO.net] あぁそっか普通に出来るのか初期化の仕方が悪かったみたい 普通の初期化でも3次元出来るんだね 調べたらジャグ配列のが処理早いそうなので結局そっち採用すると思う レスしてくれた方有難う
948 名前:デフォルトの名無しさん mailto:sage [2023/11/10(金) 20:49:31.69 ID:qelae/OI.net] 7.4のGAはいつごろになりそう?
949 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 09:09:55.24 ID:JcjqK/bB.net] PowerShell Community Call - October 19 2023 https://github.com/PowerShell/PowerShell-RFC/blob/master/CommunityCall/notes/20231019_Notes.md Ideally a GA Nov, may have 7.5 preview in December, not guaranteed
950 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 09:43:40.20 ID:FLa2E6qS.net] Ideally に進んで今月中の GA に期待 ところで [console]::OutputEncoding って shift_jis と utf-8 のどっちにしてます?
951 名前:デフォルトの名無しさん mailto:sage [2023/11/11(土) 16:23:53.35 ID:CPZqzXvF.net] 7入れて何かいい事あんの? それ、OS標準の5.1でできますよね? もしかして、デベロッパーのオナニーに付き合わされていませんか?
952 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 04:03:18.80 ID:jdIWedpQ.net] powershellでデフォルトの環境に手を加えないとできないことは他のPG言語に任せるべきだと思う
953 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 12:28:59.88 ID:mJhoQ9VQ.net] Windows PowerShell 5.1 と PowerShell 7.x の相違点 ttps://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.3 入れる入れないは個人の自由 5と7は共存できるし別にデメリットないから7入れてるよ
954 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 16:32:02.61 ID:K6g/AyoW.net] スクリプト言語としてならどっちでもいいけど インタラクティブなコマンドラインシェルとしてなら7が圧倒的に便利 sjis出力コマンドとutf-8出力コマンドの混在環境なら7.4でさらに便利
955 名前:デフォルトの名無しさん mailto:sage [2023/11/12(日) 21:46:23.90 ID:q3mytz3V.net] >>937 シェルとしてどんな点が改善されているのですか?
956 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 00:20:29.90 ID:oV9ZzUgm.net] 半角英数のファイルにUTF-16を追加する事故が起きないのは助かる
957 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 23:34:51.35 ID:Ik7Afwvr.net] 最近始めたんですが
958 名前:デフォルトの名無しさん mailto:sage [2023/11/15(水) 23:40:29.80 ID:Ik7Afwvr.net] aに1代入したいんですがどうすればいいですか? function hoge(){ [int]$a; function moge(){ $this.a = 1; } moge; return $a; } hoge #
959 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 09:22:30.17 ID:HndTNurg.net] ・classのメソッドとして書く(何か知らんがレキシカルスコープになる) ・javascriptを使う
960 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 10:09:03.23 ID:vDdnsPkv.net] Get-Variable とか >>475 ,899 とか $script:a とか。 なお「[int]$a」では宣言できてない。
961 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 12:06:19.94 ID:HndTNurg.net] ref[]はpowerahellにおいてCポインタ程度には重要知識なのに 界隈で然程語られる事もなく知られていない 知られてはいけないとでも言うのだろうか…
962 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 13:08:37.33 ID:evZ76lXK.net] 何言ってんだか
963 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 13:38:46.26 ID:WvJyjQhC.net] >>942 とあるオブジェクトの初期設定にこんな感じで書いてたんですが無理そうですか 了解しました class hoge:object{ [object]$o_a; [object]$o_b; hoge (){ [int] $cnt; function object_a_init(){ $this.cnt = 1; } object_a_init; } }
964 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 15:17:07.39 ID:FRf+5dUd.net] 親スコープにある変数の値を変えたいなら Set-Variable -Name a -Value 1 -Scope 1
965 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:00:58.20 ID:HndTNurg.net] >>946 >>943 をよく読んだ方がいいよ 昔の俺のレスの引用だけどね 変数の型指定は値で初期化する必要があるよ
966 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 17:15:32.66 ID:JFk7nC9m.net] 横からすいません なんでこれはエラーになるんでしょうか pwsh -nop -c "[System.Text.Encoding]::GetEncoding(932)" -c を使わずに pwsh -nop と起動して [System.Text.Encoding]::GetEncoding(932) を入れると動くのもわからない・・・
967 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 18:13:00.55 ID:vDdnsPkv.net] エラーって何のエラーなの
968 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 20:12:17.64 ID:JFk7nC9m.net] MethodInvocationException: Exception calling "GetEncoding" with "1" argument(s): "No data is available for encoding 932. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method." だそうです
969 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 20:17:57.10 ID:JFk7nC9m.net] Encoding.RegisterProvider でぐぐったら解決しました
970 名前:デフォルトの名無しさん mailto:sage [2023/11/16(木) 22:05:45.00 ID:wYK3pDi3.net] >>941 を動くように直したげたよ function hoge(){ [int]$a = "1" # $aを値で初期化しつつ型を強制。型宣言というよりキャストに相当。[int]に強制されるので値が文字列でも$aにはSystem.Int32に変換された値が入る $a.GetType() | Write-Host # $aの値の型をコンソールに出力 System.Int32 function moge(){ ([ref]$a).Value = 1 # >>943-944 の言うブロックで変数を生成せず既存の変数を参照して値を代入する記法 } moge $a # 関数の打ち切りの意図を除きreturnキーワード不要。powershellのfuncitonは最後に限らず値を返す式は全部返そうとする } hoge
971 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 11:55:26.61 ID:i3gkpHOP.net] >>941 参照渡しでやってみれば? -------- function hoge { [int] $a = 1234 function moge { param ( [ref] $b ) $b.Value = 5678 } moge -b ([ref] $a) return $a } hoge -------- about_Ref https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_ref?view=powershell-7.3
972 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 14:37:28.42 ID:05VltA/O.net] PowerShell 7.4 General Availability https://devblogs.microsoft.com/powershell/powershell-7-4-general-availability/ PSNativeCommandPreserveBytePipe 待ってた!
973 名前:デフォルトの名無しさん mailto:sage [2023/11/17(金) 20:30:46.86 ID:Wtzmq/3L.net] リンク先読んでないけど、.exeにパイプしたときに早くなる(普通になる)のかな
974 名前:デフォルトの名無しさん [2023/11/20(月) 14:11:07.62 ID:HI5+Omcp.net] 文字列を8文字ごとに分割して配列に格納したいのですが 文字列が8文字以下だと1文字ずつ分割されてしまいます。 $nums = @() $nums = $num -split '(.{1,8})' | Where-Object{$_} 上記を実行すると、 $num = 12345678 のとき、$num[0] は 1が格納されるのですが、 12345678が格納されるようにするには、どうすればよいでしょうか。
975 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 14:50:35.31 ID:HI5+Omcp.net] >>957 すみません。誤字です。 誤: $num[0] は 1が格納されるのですが、 正: $nums[0] は 1が格納されるのですが、
976 名前:デフォルトの名無しさん mailto:sage [2023/11/20(月) 15:52:48.41 ID:fHSnLnjq.net] $numsには文字列の"12345678"が代入されてるから $nums[0]だと"12345678"の1文字目の1が返る 1行目を [string[]]$nums = @() とするか 2行目を $nums = @(12345678 -split '(.{1,8})' | Where-Object{$_}) とすればOK
977 名前:デフォルトの名無しさん [2023/11/20(月) 17:23:25.47 ID:HI5+Omcp.net] >>0957 ありがとうございます! できました。
978 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 21:09:20.96 ID:qJoihvDX.net] PowerShell 7.4 だと PS> python -c 'print("\\")' \ と期待通りになるけど Windows PowerShell 5.1 だと PS> python -c 'print("\\")' File "<string>", line 1 print(\) ^ SyntaxError: unexpected character after line continuation character となるのは何が起きてるの? 7.4 でも $PSNativeCommandArgumentPassing を Legacy にすると同じみたいだけど 具体的にどうなってるのか今更だけど知っておきたい
979 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 21:20:45.10 ID:CeBFd4j1.net] >>961 解析の停止:--% https://learn.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847892%28v=wps.640%29#%E8%A7%A3%E6%9E%90%E3%81%AE%E5%81%9C%E6%AD%A2--
980 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 22:46:00.10 ID:qJoihvDX.net] 対処法が知りたいんじゃなくてどう解析されたかが知りたい
981 名前:デフォルトの名無しさん mailto:sage [2023/11/21(火) 22:57:00.47 ID:wGZJ97Pn.net] コマンドラインのパース内容をデバッグできるコマンドレットがあって inactionで紹介されてた気がするけど何か思い出せない
982 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 00:52:11.84 ID:z2bY/yQG.net] $PSVersionTable PSVersion 5.1 Ruby の1-liner では、%Q 記法があるから大丈夫 ruby -e 'print %Q(\\)' \ ruby -e 'print %Q(あaい)' あaい
983 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 04:23:14.63 ID:nZzIGDLb.net] >>964 Get-Command | sls "breakpoint|callstack" デバッガーについて - PowerShell | Microsoft Learn ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_debuggers
984 名前:?view=powershell-5.1 [] [ここ壊れてます]
985 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 10:26:54.20 ID:Yh77KGhz.net] >>966 回答ありがとう、でも思い出せないのは>>961 の流れからの「コマンドラインのパース」自体の事だったんだ。 in Action引っ張り出して確認したが↓の事で、これで違いが分かるかも。(v7.4で確認してない。) Trace-Command -Option All NativeCommandParameterBinder -PSHost {python -c 'print("\\")'}
986 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 10:52:24.03 ID:Yh77KGhz.net] 他に、形態素解析みたいに分解・解析できる機能もあった気がするが忘れた
987 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 14:18:25.39 ID:W8vcuvaF.net] PowerShell 7.4 だと python -c 'print("\\")' ですむことを Windows PowerShell 5.1 だとどう書けばいいんだ --% を使っても使わなくても分からん
988 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 15:05:51.75 ID:fKGlzN6D.net] パラメータの干渉受けたくないなら普通にStart-Processでいいでしょ
989 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 15:26:30.66 ID:W8vcuvaF.net] 対話シェルでStart-Processするのはつらい
990 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 15:34:55.56 ID:W8vcuvaF.net] つらいのは我慢するとしてStart-Processを使ってどう書けばいいの
991 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 20:54:48.61 ID:5rDf7evN.net] pythonの引用符はシングルもダブルもエスケープシーケンス展開されるからおかしな解釈になってるだけだな pythonの仕様を呪うがいい
992 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 22:06:38.07 ID:W8vcuvaF.net] pythonは例として使っただけだしどうでもいいよ あくまで興味の対象はPowerShellのコマンドラインのパース やっぱ 7.4 すげぇで終わってもいいんだけど なんか 7.4 の --% が腐ってる気がする 5.1 の想定通りの --% と違って勝手に引用符加えてぶっ壊してる感じ はやいとこ直して欲しい
993 名前:デフォルトの名無しさん mailto:sage [2023/11/22(水) 22:37:16.49 ID:5rDf7evN.net] うーんどうでもいい変なの相手しちゃった
994 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 17:39:38.00 ID:Rimm12ii.net] いやわかんないなら別にいいけど一応書いとくわ もちろん 7.4 を Windows で使う話 stop-parsing token (--%) は以後のパースをしないはずなのに 引用符無視して空白で引数を分割してコマンド起動してるっぽい CreateProcessまでに引用符が変に補完されるから意図通り動かない --% が出てきたら引数の分割はネイティブコマンドに任せないとあかん $PSNativeCommandArgumentPassing が Legacy の時と同じ処理な そういうわけで Legacy 扱いされる .cmd とかでは問題ない おかしいのは Standard 扱いされる .exe なんかの場合だけ PSNativeCommandArgumentPassing の説明 >この実験的な機能が有効になっていると、PowerShell は、ネイティブの実行可能 >ファイルを呼び出すときに、文字列を再構築する現在の機構ではなく、 >StartProcessInfo オブジェクトの ArgumentList プロパティを使用します。 にある、文字列を再構築するのが Legacy、Argumentlist を使うのが Standard という違いがわかれば理解できる話なんだが期待はしてない
995 名前:デフォルトの名無しさん [2023/11/23(木) 22:03:41.74 ID:KHOftQWe.net] Powershellを体系的に学ぶにあたっておすすめの本ってありますか? やりたいことをググってコードをコピペして使用してる状態で、コードの理解度が深まらないと思ったので体系的に学びたいと思いました。 自分のPowershellの用途は、日常的な作業の自動化(テキストファイルの読み書き、ファイルの起動やタスキル、アクティブウィンドウの切り替え、robocopyでのバックアップなど)で使っています。
996 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 22:45:32.85 ID:38VIgpCL.net] 馬鹿には無理
997 名前:デフォルトの名無しさん mailto:sage [2023/11/23(木) 23:00:45.15 ID:09UkZirn.net] Windows PowerShell in Action Third Editionは読んだかね https://sd.blackball.lv/library/Windows_PowerShell_in_Action_3rd_Edition_(2017).pdf ただしこの本は6年前の情報。英語PDFだけど今は色々と翻訳手段もあるから読めると思う powershellならWindows上の事であれば大抵の事はできるけど 本当に便利に使うならC#や.NETの前提知識があった方がいいだろうね C#関連で可能な事ならほぼpowershellに置き換え可能だから
998 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 00:12:01.77 ID:kL+9jaCp.net] Powershell で複雑なものは書けないから結局、Ruby になる。 WSL2, Linux側からなら、Windows側をいじれるし
999 名前:デフォルトの名無しさん mailto:sage [2023/11/24(金) 03:38:21.50 ID:k2LHl+dn.net] rubyガイジなんだろうけどそこでrubyになるのは贔屓目に見てもおかしいだろ
1000 名前:デフォルトの名無しさん [2023/11/24(金) 05:42:11.56 ID:IciYTcVm.net] >>977 コードをコピーしてchatGPTかPerplexityで「PowerShellで"〜〜〜"はどういう意味?」を聞けばいい
1001 名前:デフォルトの名無しさん [2023/11/24(金) 13:14:03.37 ID:4NGqTzL9.net] >>977 「PowerShell実践ガイドブック」は、PowerShellの動作の仕組みが詳しく解説されていてよかった 謎に思える挙動についても説明がある ちょっと古いが(5年半前に出版)
1002 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 12:02:22.73 ID:pLnatqec.net] microsoft learn じゃダメなの? ttps://learn.microsoft.com/ja-jp/powershell/scripting/how-to-use-docs?view=powershell-7.4 ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about?view=powershell-7.4
1003 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:06:48.53 ID:wD6fmxci.net] MSの自動翻訳は5分と読んでられない
1004 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:41:01.39 ID:444pwTGg.net] 英語ページでOK
1005 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 18:53:18.66 ID:Q+kYJTm7.net] 975です。おすすめのドキュメント教えてくれた方ありがとうございます。 一つ気になったのですが、学習の順番としてはC#もしくは.NETから入ったほうが効率的ですか? 自分がPowershell始めたきっかけがグローバルホットキーをうまく使いたいというのが始まりで、 後述URLのコードをベースに継ぎ足しで書き加えている状態です。 PowerShellとC#でグローバルホットキーを登録する https://qiita.com/minr/items/72b02d673727f9eb4c37 ※自分のC#のレベルはHelloWorld出したぐらいまで、.NETについても知識としてほぼ白紙です。
1006 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 19:23:35.12 ID:c65Q6uO9.net] ダボゥクリッコゥで実行出来ない面倒臭いものを誰が使うんですか?
1007 名前:デフォルトの名無しさん mailto:sage [2023/11/25(土) 21:21:00.31 ID:2+5b9joX.net] ダブルクリックで実行できたWSHはLOVELETTERワームやら何やらでセキュリティが低いとみなされて非推奨になりましたとさ めでたしめでたし
1008 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 00:07:05.46 ID:tHVdGucZ.net] 例えば、デスクトップにショートカットを作って、リンク先を以下のようにすると、 ダブルクリックでPowershell を起動して、Ruby でスクリプトを実行する %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe "ruby C:/Users/Owner/Documents/Ruby/a.rb" 初心者はRuby で始めるべき。 C# はRubyの10倍、時間が掛かるし難しい
1009 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 04:20:48.27 ID:xBck3nSS.net] こんなんに粘着されちゃmatzが気の毒だわな
1010 名前:デフォルトの名無しさん [2023/11/26(日) 07:10:42.58 ID:forkl5ep.net] 同じ民族同士、分断せずに仲良くしろよ DevBlogs - Microsoft Developer Blogs ttps://devblogs.microsoft.com/
1011 名前:デフォルトの名無しさん [2023/11/26(日) 10:47:01.19 ID:d/KzVdDP.net] MatzはWindowsやC++に興味無いから よほどエゴサでもしないかぎり気の毒なことにはならないわ 知らぬが仏
1012 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 15:25:10.25 ID:06WEnIxy.net] う
1013 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 15:25:17.90 ID:06WEnIxy.net] め
1014 名前:デフォルトの名無しさん mailto:sage [2023/11/26(日) 15:37:23.40 ID:tLrTLV3h.net] というか、Windowsの日本語localizationのデフォルトが未だにクゾだから、 「☑ベータ: ワールドワイド言語サポートを Unicode UTF-8 を使用」 を最初から標準にしていないかぎり、Windowsを日本語で使うこと自体、クソということになる
1015 名前:デフォルトの名無しさん [2023/11/29(水) 13:21:53.02 ID:FINewHXp.net] 外部コマンドを実行するときに外部コマンド自体は正常な戻り値を返してるのにpowershellで動かすとNativeCommandErrorって例外が出るんだけどなんでだかわかる人おる?
1016 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 15:06:21.22 ID:UMPQWy8o.net] そういうのはまず再現できるコードを貼ってね
1017 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 16:09:41.88 ID:0g8RZ7sB.net] ISE上で実行した場合に標準エラー出力があると 戻り値に関係なくNativeCommandErrorになるけど、このこと? そうでなければ>>998 にプラスしてバージョンなどの環境も示してね。 あと次スレ https://mevius.5ch.net/test/read.cgi/tech/1701241669/
1018 名前:デフォルトの名無しさん [2023/11/29(水) 17:02:28.41 ID:FINewHXp.net] >>999 多分それですありがとうございます
1019 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 18:41:30.81 ID:Emfdd1vJ.net] 質問いいですか
1020 名前:デフォルトの名無しさん mailto:sage [2023/11/29(水) 19:21:40.65 ID:0g8RZ7sB.net] だめです
1021 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 654日 0時間 45分 29秒
1022 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています