PowerShell(パワーシェル)のコマンドレットやスクリプトの作成方法と実行までを解説!
PowerShellのコマンドレットや機能を掘り下げたい。PowerShellでスクリプトの作成方法と実行までを知りたいなどにお応えします。
	この記事では、PowerShellの使用方法の解説やPowerShellで使用される代表的なコマンドレット、スクリプト作成の例をご紹介します。
もくじ
PowerShell(パワーシェル)の正式名称や使用するメリット
	  PowerShellの正式名称は「Windows PowerShell」と言い、Microsoftが開発したCUI(キャラクターユーザーインターフェイス)シェルおよびスクリプト言語です。
CUIとは、文字入力でコンピュータに指示を与えるときに使われるインターフェースを指します。
		  シェルとは、人間が入力した内容をコンピューターに伝えるプログラムの事を指します。
		  スクリプトとは、ソフトウェア上で実行される、そのソフトの持つ機能を呼び出しす事で、作業を自動化したり、機能を拡張したりするために用いられる言語の事をスクリプトと呼びます。
	  
Windowsには、初期の頃からコマンドプロンプトというCUIが標準搭載されていましたが、あまり現代的とは言えず、新しい世代のWindows OSを操作するには機能が不足していました。
		  そこで、コマンドプロントに変わる新しいCUIとしてPowerShellが登場しました。
	  
PowerShellは、コマンドプロンプトに比べると高機能でスクリプトも作りやすいというメリットがあります。
		  そのため、PowerShellを使いこなすことができれば、業務の効率化を図ったり、反復作業を自動化したりなどをすることができます。
    
PowerShell(パワーシェル)は主に2種類「Windows PowerShell」「PowerShell Core」がある
PowerShellの正式名称は「Windows PowerShell」と言います。
もう一つWindows以外でも使えるPowerShellとして「PowerShell Core」が公開されています。
2つのPowerShellはどちらも似た動作をしており、ほとんどの要素が共通していますが、完全に同一のものではありません。
		  片方で使えるコマンドレットがもう片方では使えないという場合もあるため注意が必要です。
	  
当記事では「Windows PowerShell」に関して解説をします。
PowerShell(パワーシェル)で使えるコマンドレットとは?
PowerShellでは、コマンドを「コマンドレット」と呼び、コマンドレットを使ってWindowsへ命令を行います。
		  コマンドレットは「動詞-名詞」の命名規則に沿って作られています。
		  たとえば、ディレクトリを移動したい場合は「Set-Location」というように直感的にコマンドレットを記述できます。
	  
コマンドレットには「エイリアス」というコマンドレットを別名で呼び出せる機能が備わっています。
		  たとえば、「Set-Location」のエイリアスには「ls」「cd」「chdir」が定義されています。
		  コマンドプロンプトやUnixのコマンドに慣れている方なら、スムーズにPowerShellを使うことができるでしょう。
	  
PowerShell(パワーシェル)の基本的なコマンドレット
Get-Help
Get-Help [コマンドレット]
指定したコマンドレットのヘルプを呼び出すことができます。
		  ヘルプには概要や構文が記載されており、初めて使うコマンドレットを知りたい場合には、このコマンドを使って調べてみましょう。
	  
例)
		  Get-Help Get-ChildItem
    
Set-Location
Set-Location [ディレクトリのパス]
ディレクトリのパスを指定し、ディレクトリを移動することができます。相対パス、絶対パスどちらでの指定でも移動可能です。
例)
		  Set-Location work
		  現在のディレクトリの下のworkディレクトリに移動
	  
Set-Location C:\Windows
		  C:\Windowsに移動
	  
Get-ChildItem
Get-ChildItem
現在のディレクトリにあるファイルやディレクトリの一覧を表示できます。
		  コマンドプロンプトの「dir」やUnixなどで使われる「ls」といったエイリアスが定義されています。
	  
また、表示するファイル一覧のディレクトリをパスで指定することも可能です。
		  そのほか、ファイルの拡張子で指定したり、ファイル名に特定の文字列が含まれているかどうかといった条件をつけたりができます。
	  
例)
		  Get-ChildItem -Recurse
		  現在のディレクトリと配下のサブディレクトリにあるファイルとディレクトリの一覧を表示
	  
Get-ChildItem -Recurse -Include b*.txt
		  現在のディレクトリと配下のサブディレクトリにあるbから始まって、拡張子がtxtのファイル一覧を表示
	  
New-Item
New-Item [ファイル名.拡張子]
    New-Item [ディレクトリ名] -Directory 
	  現在のディレクトリに新しいファイルやディレクトリを作成します。
		  規定では空のファイルの中身や作成するディレクトリを指定することも可能です。
	  
例)
		  New-Item C:\Test\sample -Directory 
		  C:\Test配下にsampleというディレクトリを作成
	  
Out-File
[コマンドレット] | Out-File [ファイル名.拡張子]
受け取った結果をコンソール上ではなく、ファイルに出力することができます。
		  また「| Out-File」の代わりに「>」を使うことで、簡略化した記述も可能です。
	  
例)
		  alias > alias.txt
		  エイリアスの一覧をNameだけに成型しalias.txtに出力
	  
PowerShell(パワーシェル)のさまざまな機能
	  PowerShellにはコマンドレットを使ってWindowsに指示する以外にも、さまざまな機能が備わっています。
以下ではPowerShellの代表的な機能を紹介します。
パイプライン
PowerShellにはパイプラインという機能があり、複数のコマンドレットや処理を組み合わせることで複雑な命令を行うことができます。
たとえば、「Get-ChildItemで取得したファイル一覧をSort-Objectでソートして表示」といったことを、パイプラインでコマンドレットを組み合わせて行うことができます。
ループ構文や条件文を使える
forやwhileといったループ構文やif,switchなどの条件文を使い処理を実行できます。
コマンドレットと組み合わせることもでき、「特定の条件で、特定のコマンドレットを実行する」といった使い方も可能です。
スクリプト
PowerShellではコマンドレットやループ構文、条件文、変数などを用いてスクリプトを作ることができます。
簡単なものであれば、PowerShell上からスクリプトファイルを作成することも可能です。
		  長く複雑なスクリプトを作成する場合は、Microsoftが提供する「PowerShell ISE」という統合開発環境を利用すると良いでしょう。
	  
なお、デフォルトの設定ではスクリプトを実行することができません。
		  スクリプトの実行には「Set-ExecutionPolicy」というコマンドレットを利用して、スクリプトの実行ポリシーを変更する必要があります。
	  
自分で作成したスクリプトを利用する場合は、
		  Set-ExecutionPolicy RemoteSigned
		  と設定するのがおすすめです。
	  
PowerShell(パワーシェル)でのスクリプトの作成と実行方法
本格的なスクリプトを作成する場合「PowerShell ISE」を利用するのがおすすめです。
		  簡単なスクリプトを作成・利用したい場合は既存のWindows PowerShellでも十分ですので、使い分けをするようにしましょう。
	  
PowerShell上からスクリプトを作成する
PowerShell上からスクリプトを作成する場合「Write-Output "処理" > [ファイル名].ps1」と入力するだけで簡単なスクリプトが作成できます。
例)
		  Write-Output  "Write-Output ""Hello, World!""" > hello.ps1 
		  Hello, World!とコンソールに出力するhello.ps1というスクリプトを作成
	  
作成したスクリプトは「パス\ファイル名」で実行できます。
	  テキストファイルからスクリプトを作成する
いくつかの処理を組み合わせたスクリプトを作成するのであれば、テキストファイルに記述し、拡張子をps1に変更することで、利用することができます。
例)
		  実行ディレクトリとサブディレクトリのファイル数、ファイルサイズを表示する
		  テキストファイルに以下を記述します。
	  
$num = (Get-ChildItem -Recurse).count;
		  $length = 0;
		  Get-ChildItem -Recurse | ForEach-Object { $length += $_.Length };
		  Write-Host "ファイルの数は、 $num  ファイルサイズは $length です。"
	  
と記述し、拡張子をps1に変更する。

		  
	  まとめ
PowerShellのコマンドレットやスクリプトなどを使いこなすことで、マウス操作のみでは繰り返しなどの手間がかかってしまうことを自動化し、効率よく作業ができるようになります。
		  Windowsユーザーなら誰でも利用できるうえ、開発環境も用意されているため、すぐに始めることも可能です。
		  普段からWindowsPCで仕事や作業を行う方は、この機会にぜひPowerShellの学習を始めてみてはいかがでしょうか。
	  
            