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 が立ててね!!
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には頑張って欲しい