PowerShell -Part 7

1デフォルトの名無しさん
垢版 |
2023/11/29(水) 16:07:49.46ID:0g8RZ7sB
前スレ
PowerShell -Part 6
https://mevius.5ch.net/test/read.cgi/tech/1644744972/

次スレは>>980が立ててね!!
2025/07/15(火) 20:54:02.36ID:1cN94XmW
本気で言ってるのか
2025/07/15(火) 21:58:24.95ID:ZcYliqlC
弊社はIT企業じゃないし、勝手にPythonを入れたりするとたぶん怒られるので
Windowsに最初から入ってるPowerShellを便利に使ってました
たまに、起動用のbatファイルとPowerShellスクリプトをセットにして同僚に渡すこともありました
2025/07/16(水) 08:58:08.06ID:83bEnGjZ
いい加減ペイント3DみたいにPowerShellのアプローチは失敗でしたと認めちゃばいいのに(´・ω・`)
2025/07/16(水) 12:43:16.16ID:09DhhKQk
もうログインスクリプトにも使われてるから
Windowsの終焉まで逃げ出せないよ
2025/07/16(水) 22:06:02.34ID:5d/ixC+9
PowerShellのどのアプローチが失敗なのか具体的に
2025/07/16(水) 23:17:35.03ID:7/+dohrQ
起動用のbatが必要になっちゃうってのがな
PowerShell単独では使いにくい
2025/07/16(水) 23:57:41.77ID:YcDGevHy
ん?どういうこと?
2025/07/17(木) 00:10:22.13ID:sGHKyXGW
ダブルクリック実行できるようにするために手間がかかる
2025/07/17(木) 00:22:02.88ID:Nf2HlQRn
正直言ってexecutionpolicyの初期値は大失敗だろうなぁ
結局.batか.cmd経由でダブルクリック起動できるんだからマジで無意味
ネットから落としたファイルはzoneidがあるから設定に関係なく警告でるんだし

あとcmdもPowershellもWindowsのオマケであることに価値があるのにPowershell5.1までしか同梱されてないし
505デフォルトの名無しさん
垢版 |
2025/07/17(木) 07:33:01.42ID:1VTmgFuN
もう直接powershell.exeに関連付けしてる
506デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:05:58.12ID:9jYPg0KZ
>>482
それはバージョン1として普及させただけ。

いまとなってはバージョンを表してはいない。
507デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:06:51.20ID:9jYPg0KZ
>>486
それはWindowsしか知らない人間の発想
508デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:08:24.36ID:9jYPg0KZ
>>491
Windowsはターミナルというアプリで統合された。

PowerShellはコマンドプロンプトも含めているので、あなたが気づいていないだけ。
509デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:09:59.60ID:9jYPg0KZ
>>495
実行形式にする必要がない。UNIX、Linuxは実行形式ファイルを嫌う。

ブラックボックス化はやめろ!
510デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:11:35.61ID:9jYPg0KZ
>>501
バッチファイルにする必要もないよ?
バッチファイルなどでラッピングするのはWindowsの使い方のひとつでしかない。
2025/07/17(木) 09:38:35.80ID:+XuQIino
>>506-510
全部元発言者を意図を読み取れてない馬鹿のレス
UNIX使いの印象を悪くするだけなのでやめてくれ
2025/07/17(木) 12:08:51.21ID:uGnrWKuf
powershellは小数点以下のバージョンアップでも毎回互換性を壊す
破壊的変更を入れてくるから普及させる気無いんじゃね
2025/07/17(木) 12:30:14.69ID:l8YWhCPU
実際、6以降は普及させる気無いと思うよ
Azure関連を中心にMS社内で使うために開発続けてるだけでしょ
2025/07/17(木) 21:54:18.35ID:yTEYa8cJ
PowerShellが失敗作じゃないと困る人がいるのは分かった
2025/07/17(木) 22:59:18.52ID:o0/3IwZx
PowerShell自体の出来はともかく、6以降は周辺環境がね
PowerShellは.NETがWindowsの中核として位置付けられていた頃に設計されており、
システムワイドにインストールされた.NETに安定的に依存できることが大前提なのよ
知っての通りその前提は完全に覆されてしまい、存在意義を失おうとしている
2025/07/18(金) 01:15:27.61ID:T97Bau37
知っての通りどころか.net frameworkは今もWindowsと一蓮托生だけど
.netと.net frameworkを分けて書かないと意味不明な文章が出来上がる
2025/07/18(金) 22:16:02.55ID:avd6O0J8
Windows以外で.Netで作られたアプリやサービスなんてあんの?
2025/07/18(金) 22:17:51.22ID:r2egjf+1
pythonで良くない?駄目?
2025/07/19(土) 02:03:44.93ID:QndlLNYI
pwsh.exe
520デフォルトの名無しさん
垢版 |
2025/07/19(土) 08:55:57.75ID:jBcCcJ6x
>>518
Pythonがそこまで言い言語だとは思わないので
2025/07/19(土) 10:16:02.54ID:F2LZk1nd
>>517
ゲームエンジンのUnity
2025/07/19(土) 19:43:58.62ID:PVxrNHN1
>>517
GitHub Actions
2025/07/20(日) 10:33:30.33ID:8UONs9WI
>>515は、元はシステム全体でひとつの.NETフレームワークを使ってPowerShellをCOMに対するWSHポジにするつもりだった、という意味だろうけど
.NETフレームワーク自体最初から複数バージョンを共存させる設計になってるので、果たしてそのような構想はあったのだろうか
2025/07/20(日) 11:36:14.91ID:nDfpIeCg
>>523
5以前のPowerShellはサイドバイサイドに対応していないから、使用される.NET Frameworkは結局一つだけ
2025/07/24(木) 02:44:32.63ID:uw32EQ1Q
>>523
> .NETフレームワーク自体最初から複数バージョンを共存させる設計になってるので、果たしてそのような構想はあったのだろうか
.net frameworkはそんな設計じゃないぞ…
526デフォルトの名無しさん
垢版 |
2025/07/24(木) 18:49:30.39ID:bvlLnJ99
コマンドレットを作ったが中途半端で.NET Frameworkを呼び出せばいいということにしたが、これではPowerShellを作った意味がないとしてPowerShellを拡張していまの混乱状態に至る。
2025/07/24(木) 20:21:14.09ID:3SMUfFNx
PowerShell独自の構文や機能はいらん .Net実行できる部分だけでいい
C#Scriptがほしい
2025/07/24(木) 21:28:50.84ID:Ii6lkj2E
C#コードを単一ファイルでスクリプトのように書ける言語機能が「.NET 10」でテスト中
従来のプロジェクトベースへの変換も簡単
https://forest.watch.impress.co.jp/docs/news/2018094.html
2025/07/24(木) 22:28:33.22ID:qxgm8L3v
powershellのAdd-Typeを使えばC#を実行出来るらしいが
530デフォルトの名無しさん
垢版 |
2025/07/26(土) 11:52:54.27ID:VPjMt5X4
Add-TypeのC#は、Windows API使いたい時、局所的に処理速度を上げたい時によく使う。
2025/07/26(土) 19:50:25.05ID:kldGNMpl
ぜんぜん分からないんですけどAdd-TypeでC#を書くのって
インテリセンスが効かなそうで、ちょっとしんどそうなんですけど
そうでもないんですか
2025/07/26(土) 20:51:36.43ID:eh3q3MEs
PowerShellで使う程度のものなら余裕でバイブコーディングでいけるからどうでもいい
2025/07/26(土) 22:09:50.67ID:kldGNMpl
なるほど
2025/07/27(日) 01:39:44.77ID:sXx2dSLi
もっとc#に近い記法にしてほしかったのになんでそうならなかったんだろう
配列の宣言とかセミコロンがないとか
2025/07/27(日) 05:42:54.86ID:L6p6i+Me
クラスはほぼC#だけど
2025/07/27(日) 08:16:33.47ID:/sb9ajQY
PowerShellは名前の通りシェルだからな
単なるスクリプト言語が欲しいだけならWSH.NET的なものを作ってる
2025/07/27(日) 09:15:11.85ID:zaK1ilRt
今のMSだったらRustあたりで作ったWindows CLIで一通りの管理タスクを一貫したコマンド体系でやれるようにした上で、
スクリプトはbashでもPythonでも何でも好きなの使えみたいにしてるだろうね
今となってはPowerShellはバルマー時代の古き悪きMSを象徴する遺産の一つ
2025/07/28(月) 09:16:16.29ID:BMbzFeOA
最初はbashの採用を検討してたけどWindowsには向かないって分かったからわざわざPowerShellを作ったんだが

https://x.com/jsnover/status/976904848162435072
2025/07/28(月) 10:39:54.16ID:dloezDzP
>>538
その理由はファイル指向のUNIXと違ってWindowsはAPI指向だからとJeffreyは述べてるんだけど、
一方でUNIX的なシェルで扱うのに適したCLIコマンドを整備するという方向もありえて、
実際MSがPowerShellにベットする以前はWMICのようにラッパーとしてCLIコマンドを整備していく方針だったんだよ
ただ、その方向で進む限りWindows上でのコマンドラインシェルは特殊なラッパーに依存することになり、決してWindowsスタックにおける主流になり得ない
そこで当時Windowsの新たな中核技術として喧伝されていた.NETプラットフォームに乗ることで、
MS社内にサービスしつつ一気にWindowsでのコマンドラインシェルを主流に押し上げようとしたわけだね
で現状はというと、肝心の.NETが主流から外されちゃって、PowerShellは一般のアプリの一つになっちゃいました(いまここ
2025/07/28(月) 11:02:51.49ID:dloezDzP
あと、現状について周辺の情勢も踏まえると、CLIを使ってAPI指向のプラットフォームを管理するスタイルはPowerShell 初期開発の当時と比較して遥かに市民権を得ているといえる
それはひとえにクラウドによるもので、現在ではクラウドプラットフォームのAPIをCLIを使って操作することは普通に行われており、しかもその多くはJeffreyの懸念に反して旧来のUNIXシェルを使用している
この現状を踏まえて今Windowsのコマンドライン管理を再考するとすれば、PowerShellのようなものが生まれる可能性は低いといえる
2025/07/28(月) 17:29:52.01ID:CQsGHQXP
Windowsは(少なくともOLE〜.NET全盛期の頃のWindowsは)APIもオブジェクト指向する方向性だったので
それを操作するスクリプト言語もCOMオブジェクトや.NETオブジェクトを長期保持できなければいけない
単発で終了するCLIコマンドを揃えてもだめだろう
542デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:14:24.95ID:7Fge/X80
おっさんエンジニアが全然使わないから無理だわ
543デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:32:06.85ID:K95kqw+R
>>528
それだとVBScriptの二の舞
544デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:33:30.80ID:K95kqw+R
>>534
そこがマイクロソフトの変なところ
いろんなプログラミング言語を研究して最良のものを作ったというのが当初の売り文句だった
545デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:34:24.66ID:K95kqw+R
>>538
それはプライドが許さなかっただけ
546デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:35:04.74ID:K95kqw+R
>>538
グーグルおじさんじゃねえか
547デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:37:29.63ID:K95kqw+R
>>541
WindowsはWindows SDK開発がC言語でもC++でもいいというところから始まったせいで、形だけオブジェクト指向のC++が基本になってしまった。
2025/07/28(月) 20:23:32.91ID:0zFGFjxD
後発だからいろんな言語を参考にできるという強みがある一方で
Windowsのシェルスクリプトという世界最大級のしがらみのもと
あらゆるステークホルダーが全方位から好き勝手なことを言い
無数の歴史的経緯を踏まえつつデザインしないといけない無理ゲーなプロジェクト
変なクセが多い言語だけど苦労が偲ばれるからあまり文句を言う気にはなれない
2025/07/28(月) 20:35:24.51ID:n+5V5/p3
CとB-Shellが混じったような半端な記法
2025/07/28(月) 21:11:45.32ID:s3rviGhL
今なら普通にTypeScriptになるだろうね
2025/07/28(月) 21:57:11.64ID:pEErs1kG
bat埋込み技法とAdd-Typeでcsスクリプト化したった
スクリプトのくせに起動が遅いのが不満
2025/07/29(火) 08:49:01.81ID:zbO0uIbs
パイプにバイナリが流せるようになったPowerShell 7.4 からは使える子になった
553デフォルトの名無しさん
垢版 |
2025/07/29(火) 12:01:37.45ID:0YhddUmf
VBSもなんやかんや生き続けると思ったけどOSとしてサポート終了となれば話しは別やな
2025/07/29(火) 14:11:31.33ID:/sYzcWbW
>>552
パイプにバイナリ通せるつって1バイトずつbyteで送られてきても困るんだが
実際のとこどうなっとんの
555デフォルトの名無しさん
垢版 |
2025/07/29(火) 17:07:26.34ID:HrDR44lc
コマンド間にControl-Streamかまして調整する
2025/07/29(火) 21:53:14.21ID:J2wyXy1Z
>>550
.NET対応のスクリプト言語なら静的型付けなJScript.NETが前からあるんだから
TypeScriptなんて中途半端な言語はいらない

Introducing JScript .NET
https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/ms974588(v=msdn.10)
2025/07/31(木) 08:21:16.74ID:y/q8ihDv
Windows PowerShell って

python3 -c 'print("hoge")'

とか

curl なんちゃら | tar かんちゃら

すらできないのに cmd.ехе にとってかわろうなんて無理筋にもほどがある
この辺だけでも PowerShell から持ってくればいいのに
2025/07/31(木) 11:23:28.67ID:+PK2lVhx
もう諦めてWSLでbash使えばいい
2025/07/31(木) 13:18:34.83ID:cbQ+pPIq
>>557
互換性が無いのにデフォルトのAliasでcurlがInvoke-Webrequestになってるの酷い
2025/07/31(木) 22:32:58.67ID:H5u1AeiS
bashでは駄目だからわざわざPowerShellを作ったのにbash使えばいいとか意味不明すぎ
2025/08/01(金) 00:05:22.62ID:2FKaw99x
curlがエイリアスって件だけは俺も擁護できない
あの罠は誰もが一度は引っかかる
2025/08/01(金) 07:56:40.22ID:z02NetRk
>>560
PowerShellはWindowsの管理のために作られたもので、その用途においてbashは不向きだといっているのであり、
君が示したようなWindows管理と無関係なケースでbashより推奨されているわけではない
加えて現在ではWSLという完全なUNIX環境がWindows上でシームレスに使用できるのだから、もはやPowerShellの役割は上記の通り極めて限定的になっている
一点だけ汎用シェルとしてのPowerShellの特徴として構造化データに強いというのがあるが、それだけならNushellとかの方が遥かに使いやすいよ
2025/08/01(金) 08:52:42.59ID:TWGrPtc3
>>557 の二つの例は PowerShell では問題なく実行できる
・ Windows のデフォルトコマンドラインシェルは Windows PowerShell

過去のしがらみで PowerShell をデフォルトにできないなら
Windows PowwerShell に >>557 が実行できるように機能追加するべき
Experimental feature として必要に応じで Enable できるように

とにかく今の Windows PowerShell がデフォルトってのが最悪
2025/08/01(金) 09:31:11.55ID:ciUSYvyR
・一部の人は「PowerShell」と「Windows PowerShell」を分けて考えている
バックポートしろって話ならできるのでは
公式がやるかどうかはともかく
565デフォルトの名無しさん
垢版 |
2025/08/03(日) 20:29:44.07ID:kVKBj15M
C#と同じでWindowsだけのものはバージョンが古いものだけ

単にPowerShellと呼んでいるのは、WindowsとLinuxとMacOSで動く製品だからだ。
566デフォルトの名無しさん
垢版 |
2025/08/13(水) 10:09:50.25ID:lyLUlfa6
>>562
wslでpwsh使おうって方向性じゃないの?
chshするとwinとシームレスで快適だぞ
別にchshしなくてもホストのwin上リモートで繋げるしwslとの相性バツグン
2025/08/13(水) 14:33:52.76ID:BMYIv7Jv
PowerShell 2.0 removal from Windows
https://support.microsoft.com/en-us/help/5065506

PowerShell 2.0 will be removed in a later release starting in August 2025 for Windows 11, version 24H2 and a September 2025 release for Windows Server 2025. All later releases for Windows 11 and Windows Server 2025 will not include PowerShell 2.0.
2025/08/13(水) 16:04:08.55ID:VzGNLP/v
.NET 10では「dotnet run」で.csファイルをそのままスクリプトとして実行できるようになるっぽい(要.NET SDK)
実行時にビルトされる点はこれまでと変化ないけど、ビルド成果物が一時フォルダに吐かれる?のか、.csファイルの場所が散らかることがなくなってスクリプト的に扱えるように

実行時のオーバーヘッドは...PowerShellと大差ない模様
569デフォルトの名無しさん
垢版 |
2025/08/13(水) 18:30:43.34ID:vtzVqfUP
Pythonを検索してもファイルが見つかりませんとなります。
誰かどうすればいいか分かりますか?
2025/08/14(木) 00:36:43.33ID:9QEKXUa7
日本語でおk
2025/08/14(木) 07:06:36.79ID:jDrEWEUc
7をインストールしたけどエラー吐く時に黒背景に赤文字ってどうにかならん?くっそ見にくい
2025/08/14(木) 09:27:10.03ID:Do/BXbHP
じゃあそれ夏休みの宿題な
2025/08/14(木) 09:54:56.24ID:vhNMb463
$PSStyle.Formatting.Errorを変更する

about_ANSI_Terminals
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_ansi_terminals
574デフォルトの名無しさん
垢版 |
2025/08/14(木) 18:59:18.68ID:eBuFE50k
厨二シェル
2025/08/15(金) 21:38:08.69ID:QOcfL0u7
UNIXシェルが?
2025/08/17(日) 04:08:48.96ID:TBSqwQ7N
powershellってコマンドがいちいち長ったらしくて打つのダルいんだよな
shellみたいに2文字3文字の略称で何の意味かわからんコマンドも学習するのに困るけど
2025/08/17(日) 05:22:57.26ID:X86RYV3a
それな
2025/08/17(日) 12:37:42.26ID:B434g2i0
PowerShellのAdd-Typeでc#が書けるとよろこんだもののpowershell.exeの起動がクソ遅くcscでコンパイルする方が速い
なにやってんのコレ
579デフォルトの名無しさん
垢版 |
2025/08/17(日) 13:12:08.30ID:jIhEo17k
エイリアス使え
580デフォルトの名無しさん
垢版 |
2025/08/17(日) 13:29:34.64ID:dA3TcCkL
ps1ファイルって暗号化とまでは行かなくとも難読化くらいはできねーの?
2025/08/17(日) 15:36:02.04ID:DpVlhT9Y
正規表現の検索パターン内で変数配列を使いたいが角括弧のせいで動かない
エスケープの方法を教えてほしい

行末に一致させたいとして
-Pattern "$aryr[5]$" #ng
-Pattern "$arry`[5`]$" #ng
-Pattern "$aryr\[5\]$" #ng
-Pattern ($arry[5] + "$") #ok 美しくない
2025/08/17(日) 16:37:39.55ID:CNACV2eM
コレじゃダメなんだっけ?

"$($arry[5])$"
2025/08/17(日) 20:58:20.47ID:DpVlhT9Y
>>582
動いた
ありがとう!
2025/08/17(日) 21:28:17.56ID:jRtquIfz
>>578
DLL化してPowerShelllで読み込む

PowerShell使わずに済むならC#だけでもいいと思うけど
585デフォルトの名無しさん
垢版 |
2025/08/18(月) 19:07:51.36ID:zdocw/KA
これが好み
'{0}$' -f $array[5]
2025/08/18(月) 20:04:20.41ID:Pa7e5Gs8
キモい記法だな
587デフォルトの名無しさん
垢版 |
2025/08/18(月) 21:29:02.39ID:Ydgj3IKT
-gt -ge -lt -leが覚えられないんだが
なんでこんなクソ記法にしたん?
2025/08/18(月) 21:38:20.35ID:FxxqvCUB
UNIXのshの記法だよ
どうせ非互換なんだからそんなとこだけ合わせんでもいいのにな

ちな実際に使われてるbashやzshでは拡張構文があるのでそんな書き方はしなくていい
2025/08/18(月) 21:49:57.69ID:1syDG9J2
gt → greater than
ge → greater than equal
lt → less than
le → less than equal
覚えられないことは無いだろ
2025/08/18(月) 22:27:56.29ID:KSZiSj98
shは条件判定が外部コマンド( /usr/bin/[ )になってるからリダイレクトで使う不等号を使えなかったんかな
2025/08/18(月) 23:44:31.03ID:a/rWUBXI
リダイレクト記号の > が大なりと判定されたらされたでキレる奴はたくさんいるし、文脈で判断すると難しいと不満を漏らす
gt や lt は天下のHTMLやXMLでもお馴染みだし ge も含めて ALGOL や Fortrun の時代からあるらしいから由緒ある演算子サマだ
2025/08/19(火) 00:24:31.91ID:Idn/vjK6
コマンドのワンライナーでも動かないとダメだしパイプやリダイレクトとも共存しないとダメってなると文法自体が分かりづらくなるのはやむなし
c#のスクリプト版みたいに思われてるけど本来そういうものじゃない
593デフォルトの名無しさん
垢版 |
2025/08/19(火) 19:46:40.89ID:0LMCTzzK
>>589
やめてやれよ!
2025/08/20(水) 07:51:25.99ID:M8TEndqZ
結論 コマンドプロンプトでいい
595デフォルトの名無しさん
垢版 |
2025/08/20(水) 09:46:38.94ID:fQ+KVP3R
コード書くにはメモ帳で十分みたいなこと言うね
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。