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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PowerShell

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

4回答

3591閲覧

PowerShellとdosコマンド(コマンドプロンプト)の違い

HelloWorld2

総合スコア32

PowerShell

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2018/10/22 07:07

編集2018/11/05 15:51

バッチを作成する際の、PowerShell(以下PS)とdos(以下dos)の違いについてご教示頂きたいです。

私は、PSを用いてのバッチ作成は経験したことはありますが、
dosを用いてのバッチ作成はほぼ未経験です。(dirくらいしか思い浮かびません笑)

したがって、2つにどのような違いがあるのか、理解できておりません。

私の基礎的な認識

  1. PS = dos + vb
  2. dosはPSでほぼ使える(使えないコマンドってあるのでしょうか?)
  3. PSでは、環境に対応するポリシーに変更してからでないと実行できない。(batファイルなどから、ポリシー変更させて実行)
  4. PSでは、DBにアクセス・操作できる。
  5. PSでは、Excelを操作できる。
  6. PSでは、csvやtxtファイルを扱える(書き込み、取得)
  7. PSでは、csvを表として扱い、レコードの抽出等ができる。
  8. PSでは、IE上の画面を操作できる。(入力、ボタン押下)
  9. PSでは、アラートを出すことができる。
  10. PSでは、プログレスバーを表示させることができる。
  11. PSでは、ファイルの操作ができる(移動、コピー、削除、リネーム、実行)
  12. PSでは、フォルダの操作ができる(移動、コピー、削除、リネーム)
  13. PSでは、読み取り専用の解除ができる。
  14. PSでは、アセンブリの読み込みができる。
  15. PSでは、エンコーディングができる。
  16. PSでは、変数、メソッドを定義でき、if文やfor文などの処理も可能。
  17. PSでは、Try-Catch処理が可能。
  18. PSでは、実行環境のホスト名を取得可能。
  19. PSでは、サーバへのサクセスが可能。

ざっと思いつく限りは、上記の通りなのですが、

①上記PowerShellでできる処理は、dosだとどこまでできるのか。(4はできない、11はできるなど) ②他にPSとdosの主立った違いはあるか。(dosではできないがPSだとできる、dosで書くよりPSで書いた方が速い(行数だったり処理速度だったり)など) ③dosでも実行可能な処理の場合、PSを用いる利点はあるか(dosじゃだめなのか) ④逆に、PSよりコマンドプロンプトで書いた方が良い場合はありますか?

ブレインストーミング的な内容で恐縮ですが、
部分的な回答でも全く問題ないので、ご回答頂けると幸いです。

追記

皆さま、ご回答ありがとうございます。
ご回答・および調査から、個人的な見解としては、
「コマンドプロンプトでもPowerShellでできるほとんどのことできそう・・・?DBからデータ取得したりinsertしたり。。。」と
「PowerShellの利点は、オブジェクトを扱える点と、.NET Frameworkとやらを使える点なのかな」といったぼんやりとした認識ですが、
.NET Frameworkが使えると何ができるようになるのか、いまいちピンときてません。

.NET Frameworkの主だった機能は何で、(共通言語ランタイムはどこのサイトでも書かれてましたが)
PowerShellにおいて、.NET Frameworkが使えるようになるとできるようになることとはなんでしょうか?

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

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

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

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

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

guest

回答4

0

どちらも他のプログラムを呼び出すことができ、その組み合わせで仕事をします。
そして互いに互いを呼び出すことができるので、できないことはもう片方を呼び出してやらせることができます。

しかし、私がこの二つの最も大きな違いと認識しているのは、パイプラインです。

呼び出したコマンドはそれ単体で仕事をするのではなく、標準入出力をつなぎ合わせてパイプラインを形作ります。
これにより、小さなコマンドの組み合わせでデータの複雑な加工が容易にできます。

コマンドプロンプトの場合、パイプラインを流れるのはテキストです。
これは Linux でよく使われているシェルと同じですね。

teratail で「シェル芸ならね」を検索すると、パイプラインを巧みに使ってほんの一行で様々なコマンドを組み合わせて複雑な処理をしている人を発見できます。

PowerShell の場合は、パイプラインを流れるのは単なるテキストではなく、メソッドとプロパティを持ったオブジェクトです。
これはとても画期的なことです。

コマンドを組み合わせて呼び出すのがグルー言語の役目ですが、PowerShell を使うとその組み合わせの世界が大きく広がります。
より多くの情報を受け渡しすることで、各コマンドはより柔軟にそれを扱うことができます。

これにより、コマンドプロンプトしか無かった時には、他の言語を使ってコマンドを作らなければ実現できなかったことが、PowerShell では既存のコマンドの組み合わせでできるようになりました。

例えばソートにしても、コマンドプロンプトのために用意された sort.exe は、渡されたテキストを文字コード順に並び替えるものなのに対し、PowerShell のソートは日付やファイルサイズなど、そのオブジェクトの持つプロパティによって並び替えます。
ファイルの一覧を取得し、曜日でグループ化し、それぞれのグループをファイルサイズで降順に並び替えるようなことが一行でできます。

投稿2018/10/22 23:13

Zuishin

総合スコア28656

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

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

0

私の基礎的な認識

こちらの認識はちょっと不正確と思います。
DOS(コマンドプロンプト?) から、PowerShellを呼び出す事ができ、またその逆も出来ます。従って、相互に呼び出す事で、互いのできる事は全てできますが、それは違いでも何でもありません。
また、Excelを操作できるとかありますが、.Netの機能を呼び出す事ができる事であってPowerShellだからという事ではありません。(ちなみにExcelは入っていないと使えないが)

どちらもシェルスクリプト(Unix的言い方では)です。

上手い説明ないかと思ったら、過去にも同様の質問がありました。
コマンドプロンプトとWindows PowerShellの違いについて
こちらを見て頂くのが早いかと。

まあ、ざっくりと言って、コマンドプロンプト(DOS)が MS-DOS時代の コマンドライン入力とそのバッチ処理(実質、シーケンシャル処理) に対し、Linux(Unix)等を意識し、より便利に使えるようにしたものが、PowerShellと思っています。.NETが素で呼べるのが便利な気もしますが、賛否ありそうな感じ。(環境依存) その一方、バッチファイル(DOSコマンド)のシンプルさが無くなって、ちょっと使うには面倒になった気もします。

Googleで、 powershell command prompt 違い(一部、Google補完あり)で検索したら、色々と解説が見つかりました。参考にされるのも良いかと思います。

投稿2018/10/22 12:26

編集2018/10/22 13:36
pepperleaf

総合スコア6383

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

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

0

ベストアンサー

コマンドプロンプトからpowershell使えるので
そう意味ではpowershellで出来てコマンドプロンプトにできないことは基本的にないと思います。

普通に答えるならばpowershellならコマンドプロンプトでは使えなかった NET Frameworkが
使えたりコンソールの出力で色指定ができる等でしょうか

PSを用いる利点は 優れたコマンドレットが多数あり、さらに簡単にFunctionやClassが作成出来たり、
コマンドプロンプトよりも人の言語に近いので扱いやすいことなどでしょうか

でも私が一番の利点だと思っていることは コマンドプロンプトよりもpowershellの方が後から出てきたものでありこれから作成するスクリプトの寿命がpowershellの方が長くなりそうなことでしょうか...

--追記--
コマンドプロンプトの方がいいのは まだwin10の回復オプションにあるのがコマンドプロンプトなので
普段から使っていれば いざというときにこまらない
powershellでもコマンドプロンプトの記述が普通に使えるので
コマンドプロンプトが消えたとしてもpowershellをコマンドプロンプトの時と同様に使えば
当分困らない
っといったところでしょうか?

--追記--
大きく違うところ追加で
powershellはオブジェクト指向なとこですかね

正直 違うところを探すよりもおんなじ所を探したほうが早いと思います。
同じとこ以外は全部違うということで

--追記--
pepperleaf様の回答を見て少し考えなおしたのですが、一言に"違い"と言ってもその言葉が本質的に何を指しているかによって大きく変わってくると私は思います。

例えばですがコマンドプロンプトで特定のプロセスを停止出来るかと問われれば 少し触れる人であれば出来る というと思います。
その方法を問えば大抵はTaskListやTaskKillを使う方法を答えると思います。
ですが、TaskListの正体はTaskList.exe TaskKillの正体はTaskKill.exeです。
コマンドプロンプト...言い方を変えればcmd.exeではないのです。
でもそんなことを言ったらコマンドプロンプトで出来ることがかなり減ってしまうと思うのですが.....

話を戻しますがあなたの言う"違い"とは何を指して言っているのでしょうか。
見た目でしょうか、利便性でしょうか、それぞれのexe単体で実現可能な内容でしょうか、それともあらゆる手段を使用した場合での実現可能な内容でしょうか

違いは 具体的にやりたいことが決まった時にそれを基準に考えたほうがいいと思うのですが
どうでしょうか?

投稿2018/10/22 07:39

編集2018/10/22 16:01
kamikazelight

総合スコア305

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

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

0

//Windows 7 以降、PowerShell はプレインストールされてるので
//今更 dosコマンドを使う意味合いは薄いような気もしますが…

まず、いろんな意味で双方は別物ですから、違うのは当然ですね。
古い車とスーパーカーを比較しいてるようなものですから、
似たような使い方はできても「だからなに?」って感じでしょう。

dosコマンドで出来ることは限られますから、まずは自分で
調べてみられてはいかがでしょうか。時間もかからないでしょう。
そういう意味で PowerShell は学習コストが高いですから
(強いて言えば)そういう違いもあるってことで。

//例えば、古い環境で動いていた .bat を PowerShell に移行したい
//などという場合なら違いを調べる動機にはなるのかなあ。
//ただ、以前使えていた dosコマンドが現在の環境では提供されていない
//もしくはオプションが変わっている、ということはありそうなので、
//すんなりいかないこともあるかもしれませんねえ。

投稿2018/10/22 13:34

takasima20

総合スコア7458

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問