www-tacos
@www-tacos

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

みなさんはPowerShellをご存じですか?

Discussion

自分はPowerShell信者なのですが、QiitaにいらっしゃるみなさんがPowerShellをどう思っているか聞いてみたいです。

例えば

  • そもそもPowerShellを知らない
  • 聞いたことはあるけど使ったことはない
  • 使ってみようと思う機会がない

とか、あるいは知っていたとしても

  • Windowsの機能だからMacやLinuxユーザーの自分には関係ないと思ってる
  • WSLとかGit Bashでシェルスクリプトしか使ってない
  • 業務で使うとしたらExcel+VBAの方が勝手がいい
  • GoとかPythonとかNode.jsなどでスクリプトを書く方が便利だと思ってる
  • PowerShellがんばるくらいならC#でよくないか?と思ってる
  • 独特の構文が苦手...

とか。

個人的にPowerShellは過小評価されてるというか知名度が低い気がしていて、少しずつでも布教していきたいと思ってます。(自分の記事も半分はPowerShell関連)

なので、ぜひ皆さんの意見を聞いてみたいですし、自分も知らない情報がでてきたらうれしいですし、あまり知らない方のためにもなる意見交換になればなと思っています!

0

ほぼフォルダエクスプローラの代替として使用しています
どのシェルでも(コマンドプロンプト含む)基本的な用途は変わらないので、特別視したことはありません

C#とほぼ同感覚で型を扱える点は長所だと思いますが、フルパスをデフォルト表記してくれる点はcmd whereの方が優位ですし、フォルダ検索も別にForEach使う必要はないし...という感覚です

あと、自作関数もglobal:をつけないとデフォルトで読み込まないのが不便だなと
exportに代わる機能が分かりません

1Like

「あるいは知っていたとしても」が全てな気がするなぁw
ちょっとしたテキスト処理とかChatGPTのおかげでPowerShell使う機会は増えたけど、それでもWSL ubuntu立ち上げることが多い。

1Like

当方の経験上は、ガチガチの SES 現場等だと保守担当者であっても利用 PC に対して気軽にソフトウェアをインストールできないため、PowerShell 5.1 一択だったりしますね泣

サポート期限も長い方が好まれるのでさらにそうなりがちです。

AD, Exchange Server, Azure Automation, Microsoft Graph etc... MS 製品扱う上では優位性があるというかデファクトかと思います(当たり前ですが)。ので管理タスクや自動化開発など淡々と利用している感じです。

.NET (Framework) がベースにあるおかげで、いざとなるとかなりのことができるのが良いですね。今更 VBScript には戻りたくないかな。。。

function から配列返却したときに要素数が 1 つだと配列を解いてしまうワナに時々ハマって困ります笑

1Like

PowerShellはネットワーク上の他のWindowsホストに対して、適切な権限があれば、リモートホスト上での処理がしやすい印象がありますね。

1Like

@mu-MueLangDeveloper
コメントありがとうございます!

PowerShell ISEというのがあります

ISE、ありますね~
スクリプトの作成や実行・テストができて、シンタックスハイライトや補完機能も備えたIDEがデフォルトで使えるというのもPowerShellの特徴かもしれないですね。
まあ使い勝手が少し独特というか古い部分もあるので自分はもっぱらVSCode+拡張機能で開発しちゃてますが...

0Like

@blonz3977
コメントありがとうございます!

ほぼフォルダエクスプローラの代替として使用しています

スクリプトを書くことばかりに気を取られてましたがそういう使い方もありましたね...
たしかに、その用途だとどのシェルでも差はないですよね。

自作関数もglobal:をつけないとデフォルトで読み込まないのが不便だなと

こちらが少しわからなかったのですが、スクリプトを複数に分割してStart-Jobとか&で別プロセスで実行すると一方のスクリプトで定義した関数がもう一方から参照できない、みたいな話ですかね?
プロファイルに定義すればどこからでも使えるとは思うんですけど、それとは違う話ですかね?

0Like

@te2ji
コメントありがとうございます!

「あるいは知っていたとしても」が全てな気がするなぁw

想定回答を書きすぎましたかねw
ただ、やはりこの辺は同じことを思っている人もいるんだ~と安心しました。

ちょっとしたテキスト処理とかChatGPTのおかげで

自分も最近はPowerShellとChatGPTをセットで使うことが多いですね。
PowerShellは.NETの機能も使えるおかげでネット検索だと情報の選別が必要なところをChatGPTだと自分の用途に100%マッチしたコードを提案してくれるので「効率化のための処理をパパっと書きたいだけなのに実装に時間がかかる」というジレンマが解消されてきた感じがします。

0Like

@mako1047
コメントありがとうございます!

利用 PC に対して気軽にソフトウェアをインストールできないため、PowerShell 5.1 一択だったりしますね泣

自分もまさに似たような環境にいたことがあって、その時にPowerShellに目覚めましたw

MS 製品扱う上では優位性があるというかデファクトかと思います

AzureのCLIツールやコンソールもPowerShell版が充実してますもんね。(もちろんBash版も用意されていますけども)
あとMS製品関連でいうと、特に何もインストールしなくてもCOMオブジェクト経由でExcelを操作できる点もPowerShellの優位性かなと思ってます。(Windows限定ですけどね)

function から配列返却したときに要素数が 1 つだと配列を解いてしまうワナに時々ハマって困ります笑

これはまさに自分も何度も引っかかった点で、ちょうどこれをテーマに記事を書こうと思っていたところですw

1Like

@jinbei230525
コメントありがとうございます!

リモートホスト上での処理がしやすい印象がありますね

コメントをもらって初めて知ったのですがこちらのドキュメントにあるようなコマンドレットのことですかね?たしかに、ただリモート接続するだけでなく処理を行える点が魅力的ですね。
PowerShellはWindows自体の機能を呼び出すコマンドレットが充実しているのも特徴ですよね。(ジョブスケジューラ関連とか)

0Like

業務用PCや担当している組み込み製品がWindows10でPowerShellが動くため、自動テストや負荷テスト等に使用しています。実行ファイルがバイナリではないので負荷調整等の変更がその場で簡単にできます。

また、開発者以外に便利ツールを配布する際にも使用しています
PythonやGoだと開発者以外にプログラム配布する際に実行環境の用意からする必要があり面倒です。

Microsoftなのでスクリプトが陳腐化しにくいとも考えています。

0Like

Your answer might help someone💌