質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

4011閲覧

PowerShellはどのようなときに使用しますか?

yukkuri_55

総合スコア264

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

1クリップ

投稿2020/02/12 15:14

PowerShellを最近しりました。
2008年くらいの記事だったのですが、
.NETが間に入って動作するようですが、
2020年の今、C#がでてきました。
現在でPowerShellで、できて C#でできないことってあるのでしょうか?

たとえば、C#では要素の一覧の表示を
foreach( var node in list )
Console.WriteLine( String.Join(",",node) );
で表示できますが、
PowerShelleを使った場合はどのようになるのでしょうか?

また、例題があまりにもしょぼくお互いの機能のいいところを引き出す
例題になってないと思いますが、
どのような場合にそれぞれの言語を使い分けるといいのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

archiver

2020/02/12 15:20

>どのような場合にそれぞれの言語を使い分けるといいのでしょうか? PowerShellをプログラミング言語だと思ってます?
yukkuri_55

2020/02/12 15:24

.NETを利用して動作するという点では同じだと思ってます。 たしかにスクリプトで書けたらコンパイルの手間はなくなりますね。
YAmaGNZ

2020/02/12 15:41

いろいろ誤解の受けそうな書き方かと思います。 C#は2020年に出てきたわけではありません。C#1.0は2002年にリリースされています。
guest

回答1

0

ベストアンサー

PowerShellはWindowsに古くからあるコマンドプロンプトを代替すること~~を目指した(ことも小さいひとつの理由)~~ができる、スクリプトも書けるオブジェクト指向のコマンドシェル環境です。

C#とPowerShell、どちらが優れているか?と比べるものではなく、使い道に応じてそれぞれを使い分けるべきものです。コマンドプロンプトやbashとC言語、どちらが良いか?という疑問は適当ではない、って分かりますよね。

本質問に関連して、teratailでも以前に参考になる質問回答がありましたので、ご案内します。
PowerShellの普及率と仕事での利用について - teratail#206527

以下の疑問については、

foreach( var node in list )
Console.WriteLine( String.Join(",",node) );
で表示できますが、
PowerShelleを使った場合

次のようなかんじでしょうか。

PowerShell

1PS C:\> $nodes = $("item1", "item2", "item3") 2PS C:\> Write-Output ($nodes -join ',') 3item1,item2,item3 4PS C:\>

回答として個別の疑問に答えていないところがあったので、追記しました:

現在でPowerShellで、できて C#でできないことってあるのでしょうか?

技術的には、PowerShellではできるけどC#ではできないことは無いと思います。その逆は有り得ます。
※しかしながらPowereShellでも、「リフレクション(Reflection)」を使えばかなりのことができると思います。

技術的でない面については、どちらも充分に習熟していてどちらでも目的を達成できる要件だった場合は、大抵はPowerShellを使った方が作業時間が短く済むはずです。

どのような場合にそれぞれの言語を使い分けるといいのでしょうか?

PowerShellをプログラミング言語としてだけ扱うべきではないと思うので前提が崩れますが、PowerShellを使った方が良い場合としては、

  • PowerShellであらかじめ用意されているコマンドレットをひとつ、あるいは複数をパイプ演算子(|)で繋げてパイプラインとして使えば目的を達成できる場合
  • コマンドレットだけではできないけど、スクリプトを書けば目的を達成できる場合
  • (前述しましたが)PowerShellやPowerShellのスクリプトを使った方が、作業時間が短く済む場合
  • C#と開発環境が使えないけど、PowerShellは使える場合

のようなことだと考えます。

投稿2020/02/12 16:56

編集2020/02/13 03:11
dodox86

総合スコア9256

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

stknohg

2020/02/13 01:51

すいません。 回答の本筋から外れてしまうのですが、 > コマンドプロンプトを代替することを目指した この点の根拠となるドキュメントなどあったら教えていただけないでしょうか。 MicrosoftはWindows管理のためにPowerShellを作ったのは様々なドキュメントから自明なのですが、コマンドプロンプトの置き換えまでを目指したのかについて調べているもののなかなか裏どりができず困ってまして...
Zuishin

2020/02/13 02:06

また、それまで Windows でシェルと言えば cmd.exe のことでした。この PowerShell という名前にも cmd の置き換えを目指したい意志が現れていると思います。
dodox86

2020/02/13 02:08

※Zuishinさん、先立ってのフォロー、どうもありがとうございます。 > この点の根拠となるドキュメントなどあったら教えていただけないでしょうか。 ご指摘の点、実は回答をした後に「根拠が薄いかも。しまったかな」と思いました。PowerShellの出始めのころに、何らかのドキュメントで読んだ記憶があったのですが、それがマイクロソフトのMSDNのようなドキュメントからのものだったか、メディアの意見だったのか、今となっては失念していました。そういう意味では依然として「私の単なる推測」だったかもしれません。 最近の非マイクロソフトの記事ですが、 https://www.networkworld.com/article/3143196/microsoft-is-replacing-the-cmd-prompt-with-powershell.html > Build 14791, believed to be the basis for the Redstone 2 upgrade coming early next year, replaces the Command Prompt window in many key areas of the operating system. Command Prompt is still there, just not as accessible. Microsoft is putting the emphasis on PowerShell as the main command shell going forward. とあり、「PowerShellをメインのコマンドシェルとして置き換えていくつもり」と読むこともできますが、これもあくまで外野の意見とも取れます。
dodox86

2020/02/13 02:09

>overさん フォローありがとうございます。
stknohg

2020/02/13 02:39

zuishinさん コメントありがとうございます。 ご提示のリンクについては私も以前個人ブログで触れているのですが、「コマンドプロンプトとPowerShellを切り替えて使える」と言っているだけだと思います。 PowerShellが登場して10年以上経ち、コマンドプロンプトを置き換えて使える程度に普及したとは言えると思いますが、PowerShellの成り立ちから"コマンドプロンプトの置き換えを目指し"、その結果としての置き換えなのかは判断できないと考えています。 - https://blog.shibata.tech/entry/2016/11/19/155916 overさん コメントありがとうございます。 「PowerShell の設計目標」にある文言は > PowerShell is designed to improve the command-line and scripting environment by eliminating long-standing problems and adding new features. かと思いますが、これだと置き換えの根拠としては弱いと私は思っています。 dodox86さん こんな質問をしてしまいすいません... > PowerShellの出始めのころに、何らかのドキュメントで読んだ記憶があったのですが、それがマイクロソフトのMSDNのようなドキュメントからのものだったか、メディアの意見だったのか、今となっては失念していました。 まさにこの点をお聞きできればうれしかったのですが残念です。 私も過去のPowerShellを知らないため少しでも情報が欲しくて... リンク先の記事については最初にZuishinさんに答えた通りの見解です。
dodox86

2020/02/13 02:44 編集

PowerShell初版リリースの際のアナウンスです。 https://devblogs.microsoft.com/powershell/its-a-wrap-windows-powershell-1-0-released/ > it is a best of breed next-generation commandline shell designed from the ground ... とありますが、コマンドプロンプトからの置換を目指すとまでは明言されていませんね。当時から置き換えを目指したか、「コマンドプロンプトより進んだ新しいシェル環境として代替利用できますので使ってください。」程度のスタンスだったかは当時の記事や投稿をあたらないと確かなことは言えません。10年以上経っているので、その間にスタンスが変わったことも考えられます。私の回答は、そのこともあって「置換」と言う言葉を使わず、「代替」に留めたのもありました。(大差ないですが)
dodox86

2020/02/13 02:47

> dodox86さん > こんな質問をしてしまいすいません... いえいえ、歴史として考えた場合、個人的にも興味ある点です(<なので、回答の際に内心引っ掛かりました)。回答内容の信ぴょう性にも関わりますし。ご指摘ありがとうございます。
stknohg

2020/02/13 02:49

> > it is a best of breed next-generation commandline shell designed from the ground ... > とありますが、コマンドプロンプトからの置換を目指すとまでは明言されていませんね。 はい。 まさにこの点の裏どりをしたくてずっと調べてるのですがなかなか情報を得ることができず... 私のしょーもないコメントにここまでお付き合いいただきありがとうございます。
Zuishin

2020/02/13 02:50

いいえ、「PowerShell に切り替えて使える」ではありません。「PowerShell がデフォルトになり、cmd に切り替えて使うこともできる」というアナウンスです。 cmd は長年使われており、決して性急に完全に置き換えることはできません。だからこそこのようにデフォルトの設定から徐々に変更していくことが必要になります。 今までの経緯から見て、何かの機能のデフォルトが変更されたというのは、これが後継者であるというお披露目のようなもので、しばらく時間を置いた後に旧機能が非推奨に変わり、旧機能のインストールが必要になり、サポートが無くなるという道を通ることが多いです。
dodox86

2020/02/13 03:16

回答中の、根拠が薄くかつ誤解を受けやすい記述部分を修正させていただきました。(stknohgさんにとっては元の木阿弥となってしまい、申し訳ありません)
Zuishin

2020/02/13 03:17

PowerShell が開発当初から cmd を置き換えることを目指していたのかについての確固たる証拠はもしかしたら無いかもしれませんが、Linux のシェルに比べて cmd の貧弱さはしばしば話題になり、これを置き換えるシェルが必要とされていたのは事実です。PowerShell がシェルとして申し分ない働きをすることを考えてみても、cmd の置き換えの意思が全く無いと考える方が不自然な気がします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問