PowerShell

PowerShellはWindows系OSに標準搭載されているシェルです。


WindowsのCUIツールといえば長らくコマンドプロンプトでしたが、その事実上の後継としてWindows7・Windows Server 2008 R2から標準搭載が始まりました。

Microsoftとしては、どちらが上位で下位で云々という話ではなく、互いを補完するように使って欲しいそうです。

ただ、明らかにPowerShellのほうが便利・高性能ですので、これからはどんどんPowerShellに移行していくでしょうね。


ところで、PowerShellは改良・発展を終えており、MicrosoftはPowerShell CoreというPowerShellの派生・発展型シェルの改良に注力しています。

今から学び始める人は、そちらを勉強するほうが効率的かもしれません。

文法

実行方法

PowerShellを利用するには3つの方法があります。


1つ目は、直接ターミナルを立ち上げる方法。

ファイル名が「powershell.exe」ですので、そこから起動させます。


2つ目は、.ps1ファイルから起動させる方法です。

拡張子が.ps1であるファイルに処理を記載することでファイルから起動させることができます。


3つ目は、PowerShell ISEを利用することです。

これはPowerShell用の統合開発環境でPowerShellを本格的に利用する場合は大変重宝できるツールです。

PowerShellが標準搭載されている環境では、こちらも標準搭載されているので手軽に使えて便利ですね。

大文字・小文字

原則として、アルファベットの大文字・小文字は区別されません。

以下の処理は、いずれも正常に作動し、同じ結果となります。

公式準拠の記述

Write-HostHello world.

全て大文字

WRITE-HOSTHello world.

全て小文字

write-hostHello world.

文字コード

PowerShellの標準文字コードはShift_JISです。

強制改行

通常、コマンドレットは1行に記載する必要があります。

そこで文末に「`(バッククォート)」をつけると任意の場所で改行することができるようになります。

文字列の扱い

文字列を指定する際は「'(シングルクォート)」か「"(ダブルクォート)」を使います。

「'」で囲むと変数やエスケープシーケンスが機能せず、リテラルそのままに処理されます。

「"」で囲むと変数を展開し、エスケープシーケンスが機能します。

一長一短ありますので使い分けが大事です。

エスケープシーケンス

対象となる文字の前に「`(バッククォート)」を付けることでエスケープシーケンスが機能します。


対象となるのは「``(バッククォート)」「`'(シングルクォート)」「`"(ダブルクォート)」「`t(タブ)」「'r(キャリッジリターン)」「`n(改行)」です。

コメントアウト

PowerShellのコメントアウトは2種類用意されています。

単行コメントアウト

#この記号の後ろはコメントアウトとなります。

複行コメントアウト

<#

記号の間がコメントアウトとなります。

#>

変数

PowerShellでは変数名の前に$記号を付けることで変数と見なされます。

コマンドプロンプトよりも、かなり見やすく、書きやすくなった印象です。

特に、=記号の左右を空けなくても良くなったのが個人的に一番嬉しいところです。

変数の書き方(コマンドプロンプト)

SET変数名=データ

変数の書き方(PowerShell)

$変数名=データ


また、コマンドプロンプトとは異なり、配列と連想配列の利用も可能になりました。

配列

$変数名=@(データ1,データ2,...,データn)

配列(@記号は省略できます)

$変数名=(データ1,データ2,...,データn)

連想配列(@記号は省略できません)

$変数名=@{要素1=データ1;要素2=データ2;...要素n=データn}

配列にアクセスする際は変数名の後ろに「[](ブラケット)」を付けて、そのなかに要素番号を打ちます。

要素番号は大多数のプログラミング言語と同様に0から始まります。

配列へのアクセス

$変数名[要素番号]

連想配列へのアクセス

$foo=@{one=1;two=2}

$foo["one"]

//1