1. ホーム
  2. スクリプト・コラム
  3. パワーシェル

Powershellを選択すべき10の理由(cmdを捨てるべき)

2022-01-04 03:28:27

Powershellは、Windows 7の時代からWindowsに組み込まれており、現在Windowsシステム上で共存しているMicrosoftのcmdからの大きなアップグレードと見ることができます。

{1つ目は、powershellを学ぶのに非常にお勧めのサイトです。 まず、powershellの学習サイトとして強くお勧めするのが、このサイトです。

powershellオンラインチュートリアル

1.powershellはより強力である。

マイクロソフトの "powershell" という名前はちょっと自慢げですが(私も以前はそう思っていました)、そんなことはありません。powershell は Linux の bash よりも強力ですし、悪評高い cmd は言うに及ばずです。(宣伝の意図はありません)

powershellはオブジェクト指向を完全にサポートしています。

{NET .NETプログラミングシステムにより、スクリプト作成がより簡単に、より強固になりました。一方、cmdはちょっとしたコマンドの束に過ぎないのです。

cmdからpowershellへの移行コストはほぼゼロに近い

cmdに愛着がありすぎて手放せないという方も、まったく問題ありません! powershell は cmd のスーパーセットなので、dir, cd, ipconfig などの一般的なコマンドはすべて powershell で直接使うことができるのです。powershellは完全なオブジェクト指向に基づいており、関数やオブジェクトにquot;aliases"を与えることで、これらの古いコマンドをサポートしているのです。

4. 誘惑のパイプライン操作

パイプ操作はLinuxのシェルからヒントを得ていますが、powershellは文字列を直接扱うのではなく、すべてをオブジェクトで包んでいるので、そのパイプ操作はLinuxのシェルよりはるかに柔軟です。

PS C:\Users\Haley> ls | sort -Descending Name | Format-Table Name,Mode

Name Mode
---- ----
VirtualBox VMs d-----
Videos d-r----
Searches d-r----
Saved Games d-r---
Pictures d-r---
OneDrive d-r---
Music d-r----
Links d-r---

このコマンドは、現在のパスにあるすべてのファイルを名前の降順で並べ、Name と Mode のフィールドだけを表示した表に出力します。

5. 完全なヘルプドキュメント

どんな関数やオブジェクトも help * コマンド(正確には Get-Help 関数で、より "オブジェクト指向的な命名規則で、help はその別名)で見ることができます。もし理解できない場合は、-onlineパラメータを追加すれば、オンラインヘルプの完全なドキュメントを開くことができるので、マイクロソフトのワンストップサービスには感心するばかりです。

例えば、lsのヘルプ文書は以下の通りです。

PS C:\Users\Haley> help ls

Name
  Get-ChildItem

Summary
  Gets the items and child items in one or more specified locations.


Syntax
  Get-ChildItem [[-Filter] <String>] [-Attributes {ReadOnly | Hidden | System | Directory | Archive | Device | Normal
   | Temporary | SparseFile | ReparsePoint | Compressed | Offline | NotContentIndexed | Encrypted | IntegrityStream |
   NoScrubData}] [-Depth <UInt32>] [-Directory] [-Exclude <String[]>] [-File] [-Force] [-Hidden] [-Include <String[]>
  ] -LiteralPath <String[]> [-Name] [-ReadOnly] [-Recurse] [-System] [-UseTransaction] [<CommonParameters>]

  Get-ChildItem [[-Path] <String[]>] [[-Filter] <String>] [-Attributes {ReadOnly | Hidden | System | Directory | Arch
  ive | Device | Normal | Temporary | SparseFile | ReparsePoint | Compressed | Offline | NotContentIndexed | Encrypte
  d | IntegrityStream | NoScrubData}] [-Depth <UInt32>] [-Directory] [-Exclude <String[]>] [-File] [-Force] [-Hidden]
   [-Include <String[]>] [-Name] [-ReadOnly] [-Recurse] [-System] [-UseTransaction] [<CommonParameters>]


Description
  The Get-ChildItem cmdlet gets the items in one or more specified locations.
   You can use the Recurse parameter to get items in all child cont
  ainers.

  A location can be a file system location, such as a directory, or a location exposed by a different Windows PowerSh
  ell provider, such as a registry hive or a certificate store.


Related links
  Online Version: http://go.microsoft.com/fwlink/?LinkId=821580
  Get-Item
  Get-Location
  Get-Process
  Get-PSProvider

Note
  To see an example, type: "get-help Get-ChildItem -examples".
  For more information, type: "get-help Get-ChildItem -detailed".
  To get technical information, type: "get-help Get-ChildItem -full".
  For online help, type: "get-help Get-ChildItem -online"


6. 基本的な数学演算と配列演算(加算、減算、乗算、除算モジュロ)をサポートし、電卓として開放可能

PS C:\Users\Haley> 1 + 1
2
PS C:\Users\Haley> 3 * 5
15
PS C:\Users\Haley> 0xab
171
PS C:\Users\Haley> 1kb
1024
PS C:\Users\Haley> 1mb / 1kb
1024

7. 優れたスクリプトの経験

powershellスクリプトの構文は高級プログラミング言語と非常に似ており、例えば、分岐文 if(...) {} else{}, ループ for(...) {} はC言語と似ていないため、プログラミング体験を大幅に向上させることができます。

8. 豊富な文字列操作のオブジェクトと関数、正規表現の完全サポート

文字列操作はシェルスクリプトの主な仕事であり、正規表現はこれ以上説明する必要はないでしょう。

9. リダイレクトのサポートでファイルの読み書きが楽々

powershellは、html、csv、xmlなどへの結果のエクスポートと、リダイレクトによるファイルからの読み込みをネイティブでサポートしています。

PS C:\Users\Haley> ls | Select-Object Mode,Name | Export-Csv ~/desktop/test.csv

カレントディレクトリにあるすべてのファイル名-書き込み権限をcsvファイルに保存します。

デバッグ対応

この機能はほとんど使われませんが、デバッグサポートは完全なプログラミング言語にとって不可欠な機能です。