1 名前:デフォルトの名無しさん [2023/11/29(水) 16:07:49.46 ID:0g8RZ7sB.net] 前スレ PowerShell -Part 6 https://mevius.5ch.net/test/read.cgi/tech/1644744972/ 次スレは>>980 が立ててね!!
640 名前:デフォルトの名無しさん mailto:sage [2025/11/06(木) 20:55:27.46 ID:ra3gomFv.net] PowerShell に関するお問い合わせ時の留意事項 https://jpwinsup.github.io/blog/2025/11/06/UserInterfaceAndApps/PowerShell/PowerShell-SupportGuidlines/
641 名前:デフォルトの名無しさん mailto:sage [2025/11/09(日) 01:50:45.56 ID:/5rAS6BZ.net] >>640 >なお、 .NET Framework や Win32 API は、C#/VB#/C++/C といったプログラム言語からのご利用を目的として提供している機能になり、動作確認もこれらの言語で行っていただくことをお願いしております。 >また、これらの言語で正常に動作しながらも、PowerShell 上で期待通りの動作とならない場合は、プログラミング言語のご利用をお願いしておりますことをご留意ください。 あれれ? PowerShellでたての頃って.netのオブジェクト使えるの売りにしてなかったかな?
642 名前:デフォルトの名無しさん mailto:sage [2025/11/09(日) 09:43:41.33 ID:9rrS+2ZK.net] 最近の.NETは言語非依存を放棄してるからな 例えばSpanはPowerShellから使えない Question about System.Span https://github.com/PowerShell/PowerShell/issues/5897
643 名前:デフォルトの名無しさん mailto:sage [2025/11/09(日) 10:23:37.05 ID:VPZLG56/.net] .NET Frameworkって書いてあるからCore系の.NETは関係ないでしょ。Core系もサポートの方針は同じだろうけど。 PowerShell6以降のユーザーなんて5に比べりゃほとんどいないだろうし、 わざわざ6以降使ってる人はそんなに変な問い合わせしてこないだろうからサポート的にはあまり問題にならないんだろう
644 名前:デフォルトの名無しさん mailto:sage [2025/11/18(火) 00:02:06.52 ID:mC1Jcub0.net] c#14でファイルベースでスクリプトライクに書けるようになった もうpowershellはオワコン!
645 名前:デフォルトの名無しさん [2025/11/18(火) 17:30:44.99 ID:d9hs+rsN.net] それパイプは直感的に書けるか?
646 名前:デフォルトの名無しさん mailto:sage [2025/11/20(木) 16:43:19.74 ID:11rVJeas.net] 5ってまだ共存してるの?UTF8BOMの問題があるのでcmdでも使えばいい気がするが
647 名前:デフォルトの名無しさん mailto:sage [2025/11/20(木) 17:49:39.55 ID:UDbnkgrO.net] PowerShellは速度も使い勝手もこのbatに勝てなかった @echo off %windir%\Microsoft.NET\Framework64\v4.0.30319\csc.exe /nologo %1 if errorlevel 1 exit /b "%~dpn1.exe"
648 名前:デフォルトの名無しさん mailto:sage [2025/11/20(木) 21:31:44.69 ID:QY1RnXH9.net] C#はPowerShellみたいにWMIを簡単に扱えないじゃん WMI インスタンスの取得 https://learn.microsoft.com/ja-jp/windows/win32/wmisdk/retrieving-an-instance
649 名前:デフォルトの名無しさん mailto:sage [2025/11/21(金) 09:24:25.92 ID:+qc1E8Ol.net] 比較 OS標準だとC#は古いやり方しかできなそう <PowerShell> Get-WmiObject -query "SELECT * FROM Win32_Process" | ForEach-Object { $name = $_.Name $id = $_.ProcessId . . . } <C#> foreach (var p in new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_Process").Get()) { var name = p["Name"]; var id = p["ProcessId"]; . . . }
650 名前:デフォルトの名無しさん mailto:sage [2025/11/21(金) 10:03:57.43 ID:3+xXClvM.net] >>640 最初は分けて書いてるがそれ以降のPowershellが Windows 付かない方のPowershell 限定なのか Windows 付く方も含めてなのかよくわからない >>641 無印 は.Net Framework 向けでないという表現なのか 無印も.Net Frameworkだめというのかどっちなのか .NET Framework上で動くのがWindows Powershell 3.5.1(まだある) + 2(廃止) 4.8.1 + 5.1 現行のプリインストール .NET 上で動くのがPowershell core2or3 + 6-7.0 5.0 + 7.1 以降 やはり改めて確認しないとわからない なんで分かりやすい別の名前にしなかったのか
651 名前:デフォルトの名無しさん [2025/11/22(土) 10:00:08.95 ID:X6U8TT//.net] WMIって非推奨なんだっけ 普通に業務で使ってるけど
652 名前:デフォルトの名無しさん mailto:sage [2025/11/22(土) 15:21:40.53 ID:LaYCYKWP.net] Windows クライアントの非推奨の機能 https://learn.microsoft.com/ja-jp/windows/whats-new/deprecated-features WMIC ユーティリティは非推奨となり、今後の Windows リリースで削除される予定です。 このユーティリティは、WMI のWindows PowerShellに置き換えられます。 この非推奨は、 コマンド ライン管理ユーティリティにのみ適用されます。 WMI 自体は影響を受けません。
653 名前:デフォルトの名無しさん mailto:sage [2025/11/22(土) 19:36:43.52 ID:F8YvH3R6.net] wmiなくなる話はないが使い方変わってる Powershell 6以降WMI v1コマンドレット無い 今のところWindows Powershell 無くす話はないが 書き直すならPowershell でCIM (WMI v2)コマンドレットにしておいた方が無難? https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/differences-from-windows-powershell?view=powershell-7.5#wmi-v1-cmdlets
654 名前:デフォルトの名無しさん mailto:sage [2025/11/26(水) 15:45:38.37 ID:0sOrUy4b.net] PowerShell のプログラムで時々見かける if ( hoge ) { hogehoge } else { fugafuga } みたいな elseのところを2行に書く書き方が気持ち悪いし PowerShell にコピペでインタプリタ的に実行させると閉じ括弧で構文が終わったと判断されて実行されちゃう (さらに外側に括弧があれば構文として成り立つけど)
655 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 10:58:01.72 ID:iSxBbXck.net] オレは気持ち悪いと思ったことない 言語特有の文法とか個人個人の書き方とか色々あるし それで別にいいじゃんって思ってる 仕事でプログラムやスクリプト使ってる人たちは その職場のルールもあるだろうけど 素直に従っておけばいいだけ 改良の余地があるなら進言するだけだし
656 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 12:30:08.06 ID:Z/DnqSSi.net] 普通じゃないし普通に気持ち悪いだろ
657 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 12:58:20.26 ID:tq5aNNAF.net] ベストプラクティスにはそこまで細かい規約なかった https://learn.microsoft.com/en-us/powershell/scripting/developer/cmdlet/strongly-encouraged-development-guidelines C#、明示されてないがサンプルは三行 これに準じると閉じてエンターで走る https://learn.microsoft.com/ja-jp/dotnet/csharp/fundamentals/coding-style/coding-conventions
658 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 15:27:32.59 ID:Z/DnqSSi.net] 普通(既存宗教): } else { または } else { 奇形(新興宗教): } else {
659 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 15:30:06.19 ID:Z/DnqSSi.net] >>657 C#とPSは違うだろ PSのコーディング規約なんてあるのか知らんけど
660 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 15:39:55.59 ID:o+yFQZuV.net] https://github.com/akiGAMEBOY/PowerShell_mysql-to-csv/blob/master/source/Main.ps1 これは両方の記述が混在してるな
661 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 16:35:40.04 ID:/I+q4k2H.net] powershell民なら } else と書いておく こうすると解釈が延長するわけでelse節が無ければ次行で {} と書いて終わらすこともできる これはpowershell民に限らず行志向言語の常識的イディオム
662 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 16:51:14.83 ID:o+yFQZuV.net] >>661 その理由はおかしくないか? 以下のように同様の理屈が成り立つ } で終わらせておく elseで続けたい場合は else { で始められる
663 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 16:53:53.08 ID:o+yFQZuV.net] ああ、インタープリタ的な使い方ってことか
664 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 16:58:55.38 ID:o+yFQZuV.net] ならとりあえず } else { と書いておくほうが良い気がする
665 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 21:48:18.93 ID:L4seW1+I.net] elseは使わないようにする
666 名前:デフォルトの名無しさん mailto:sage [2025/11/27(木) 23:03:58.47 ID:0ZpriLCv.net] 5.xは三項演算子がないので他の言語よりelseを使う機会が多くなりがち
667 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 10:07:39.92 ID:YEOTrRQk.net] Weekend Scripter: Best Practices for PowerShell Scripting in Shared Environment https://devblogs.microsoft.com/scripting/weekend-scripter-best-practices-for-powershell-scripting-in-shared-environment/#use-consistent-indentation PowerShellのコーディングスタイル https://tech.guitarrapc.com/entry/2017/12/03/230119
668 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 10:46:55.41 ID:XwmNjHGj.net] >>667 「ただし、これは、普段どちらで書いているかなどに左右されますし、チームでの共通化がとれていればいいのでしょう。 ちなみに、コミュニティでは、Stroupstrupが意外と多い結果です。」
669 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 11:06:29.89 ID:mxO2kQAk.net] if 真ならelse の中いかないし if 偽ならelse の中やりたいし else 閉じて走るのがまずい状況がすぐに思い浮かばない
670 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 15:12:40.52 ID:XwmNjHGj.net] これだけアチコチで使われてるとなると新興宗教とは言えない雰囲気
671 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 20:46:10.65 ID:24RBB+24.net] なんにしろ行志向言語で中括弧を採用すること自体が悪手だったのは間違いない
672 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 21:20:01.11 ID:8z0qQ195.net] >>667 Stroupstrupって構文スタイルなのか… しかもちゃんと「式解釈では問題ありませんが、PowerShellにはった時elseでエラーがでます。」って説明まで書いてる いや、なんでこれが多いんだよ 意味わかんねぇよ…
673 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 21:59:10.04 ID:YEOTrRQk.net] https://ja.wikipedia.org/wiki/字下げスタイル ストロヴストルップ・スタイルはビャーネ・ストロヴストルップがC++で使ったK&Rスタイルで、ストラウストラップのプログラミング入門 C++によるプログラミングの原則と実践やThe C++ Programming Languageといった彼の著書で使われている。 前述のスタイルと異なり、cuddled else (elseの前後に}と{を置くスタイル) を使わない。したがってストロヴストルップ式では次のようになる。 if (x < 0) { puts("Negative"); negative(x); } else { puts("Non-negative"); nonnegative(x); }
674 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 22:18:41.05 ID:HY2syTcn.net] 誰だよスッポスッポ先生のことふざけた空耳日本語で呼ぶジャップは・・・
675 名前:デフォルトの名無しさん mailto:sage [2025/11/28(金) 23:42:10.29 ID:8z0qQ195.net] else の後ろに括弧置いてるじゃん… あ、いやそういう事じゃなくて不都合が発生しうる可能性があるスタイルをわざわざ使うってPowerShellにおいてはバカでしかないと思うって話 自分が良ければそれでいいって事? 少なくともインターネッツに載せるなら可能性が考慮されてなくてダメじゃね?
676 名前:デフォルトの名無しさん [2025/11/29(土) 10:54:08.34 ID:ABxtwAdA.net] ある人が書いたpowershellで動くスクリプトの書き方が 別の人がpowershellで動かしてエラーが出るのは困るよね っていう話なの?
677 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 12:36:08.79 ID:RVWnFQqp.net] スタイルだからそれぞれ拘りがあるってだけだろ そのスタイルで統一されてれば問題ない
678 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 14:43:58.37 ID:nY8K5zGd.net] 良いスタイル悪いスタイルがあるのになぜか悪いスタイルが流行ってるって話だろ そもそもスタイルが分かれるような構文を採用したのがだめなんだけどな
679 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 15:48:53.71 ID:RVWnFQqp.net] おそらくC++から流れてきたんだろうと想像する >>673 にあるプログラミング入門 C++、The C++ Programming Languageが教科書になった人々
680 名前:デフォルトの名無しさん [2025/11/29(土) 16:28:37.98 ID:m7OsZTNV.net] C/C++のK&R派ではあるけど 文における{} 関数定義における{} 構造体/クラス宣言における{} namespaceにおける{} どれも扱いが違う 成形ツール使えばなんとでもなる PowerShellなんてどうせ描き棄てだからどうでも良い
681 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 16:48:02.25 ID:RvNmPLXk.net] 例えば 先輩「PowerShell でこうやって IDE で書くこともできるけど普通に貼り付けて実行も1行ずつ実行する事もできる」 新人「ホントだ!ありがとうございます!」 新人「Windows標準で使えるし家でも勉強がてらやってみよう」 新人「うーん…よく分からない。検索するかぁ」 初心者向けWebサイト「(Stroupstrupスタイルで記述)」 新人「(貼り付けて)あれ?エラーが出る…よく分からない…」 みたいな話 初心者向けWebサイトはチームとかもないし誰が見るかも無いから、Stroupstrupスタイルは適していないってこと ブログやQiitaとかならまぁええかとは思うし、チーム内で決めて使うならいいと思う
682 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 17:02:38.86 ID:SvUt/JNW.net] } をどんな構文でも常に行末としておき、if と else if を行頭に並べればブロックが対称的に見えるので美しく感じる そんな理由があるという けど全然共感できない ifブロックが単に2つ続いているだけのパターンと、ifとelse ifが続いているパターンを取り違えるのは古典的なバグ ならcuddled elseのほうがあえて相似形を崩して即座に峻別できるように喚起できるので合理的
683 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 18:21:27.95 ID:UB7+qwb1.net] powershellなんて基本書き捨てだしスタイルなんて気にしたことない vscodeのフォーマッタ任せ
684 名前:デフォルトの名無しさん mailto:sage [2025/11/29(土) 23:17:33.20 ID:2Vwa6pZU.net] 公式ドキュメントでも } else { になってるな about_If https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_if
685 名前:デフォルトの名無しさん [2025/11/30(日) 14:27:29.65 ID:+PAfB5o2.net] } else{ でしか理解出来ないってのは池沼
686 名前:デフォルトの名無しさん mailto:sage [2025/12/04(木) 00:02:31.58 ID:FQN2sxAz.net] そういえばChromeとかFireFoxの開発者ツール画面のPowerShellでコピーっていつの間についてたのかしら 社内のしょうもないシステムのデータ落とすだけならマジでRPAとかいらんな
687 名前:デフォルトの名無しさん mailto:sage [2025/12/10(水) 08:52:12.78 ID:aQIrInSg.net] PowerShell 5.1: Web コンテンツからのスクリプト実行の防止 https://support.microsoft.com/ja-jp/help/5074596
688 名前:デフォルトの名無しさん mailto:sage [2025/12/11(木) 09:00:26.27 ID:qbXRYm+Y.net] 「Windows PowerShell 5.1」に「IE」要素排除のための仕様変更 「Invoke-WebRequest」に警告を追加、2025年12月のセキュリティパッチ以降の適用で https://forest.watch.impress.co.jp/docs/news/2070166.html