Windows PowerShellは、コマンドプロンプト(cmd.exe)の後継となるコマンドラインインタフェース(CLI)である。

PowerShellの起動方法

Windows 7の場合、スタートメニューから[アクセサリ] - [Windows PowerShell] - [Windows PowerShell]を選択する。PowerShellを管理者として実行するには、右クリックメニューから「管理者として実行」を選択する。

コマンドレット

PowerShellではコマンドのことをコマンドレットと呼ぶ。PowerShellにどのようなコマンドレットがあるのか確認するには、 Get-Comannd コマンドレットを実行する。なお、PowerShellではコマンドレットの大文字と小文字を区別しない。

各コマンドレットの使用方法を調べるには、 Get-Help コマンドレットを実行するか、調べたいコマンドレットを -? オプションを指定して実行する。

Get-Help Cmdlet

または

Cmdlet -?

Cmdlet には調べたいコマンドレットの名前を指定する。

PowerShellのコマンドレット一覧
コマンドレット 別名 説明
Compare-Object diff オブジェクトを比較する。
Copy-Item cp 項目をコピーする。
ForEach-Object コレクション内の各アイテムをループ処理する。
Get-ChildItem dir, ls 指定した場所から項目及び子項目を取得する。
Get-Command コマンドレットの一覧を表示する。
Get-Content type 項目の内容を取得する。
Get-Help ヘルプを表示する。
Remove-Item del, rd, rm, rmdir 項目を削除する。
Rename-Item 項目の名前を変更する。
Set-ExecutionPolicy 実行ポリシを設定する。
Set-Location cd, chdir 現在の作業場所を設定する。
Sort-Object プロパティ値に基づいてオブジェクトを並び替える。
Set-Variable set 変数の値を設定する。
Write-Output echo オブジェクトを標準出力へ出力する。

PowerShellスクリプト

Windows PowerShellはスクリプト言語の機能も提供している。PowerShellスクリプトファイルの拡張子は「.ps1」である。PowerShellスクリプトはエクスプローラからダブルクリックしても実行できない。PowerShellはカレントフォルダを検索しないため、カレントフォルダにあるPowerShellスクリプトを実行する場合にも相対パス名又は絶対パス名で指定する必要がある。

PS C:\Users\marina> ./Foo.ps1

または

PS C:\Users\marina> C:\Users\marina\Foo.ps1

のように指定する。

PowerShellスクリプトを実行する場合、ファイル拡張子「.ps1」は省略することができる。

PowerShellでは、セキュリティ上の理由によりデフォルトでスクリプトの実行ができないようになっている。スクリプトを実行するには、あらかじめPowerShellのスクリプト実行ポリシを設定しておく必要がある。実行ポリシを変更するには、PowerShellを管理者として実行し、Set-ExecutionPolicyコマンドレットを実行する。

Set-ExecutionPolicy RemoteSigned

スクリプト起動パラメータ

スクリプト起動時のオプション及び引数の定義方法は次のとおり。

Param ( switch,switch... attribute parameter, attribute parameter... )

switch
スクリプトのスイッチ(オプション)を次の書式で指定する。

[switch] $SwitchName

attribute
パラメータの属性を次の書式で指定する。

[Parameter(Mandatory=boolean)]

booleanには、パラメータの指定が必須の場合は$True、パラメータの指定が省略可能な場合は$Falseを指定する。

parameter
スクリプトのパラメータを次の書式で指定する。

[type] $ParameterName

Rename-Item

正規表現を使って複数のファイルの名前を一括して変更する例を示す。

PS C:\> Get-ChildItem *
-a--- 2015/06/29 00:00 1000 foo_1.txt
-a--- 2015/06/29 00:00 1000 foo_2.txt
-a--- 2015/06/29 00:00 1000 foo_2.txt
PS C:\> Get-ChildItem * | Rename-Item -NewName { $_.Name -replace 'foo', 'bar' }
PS C:\> Get-ChildItem *
-a--- 2015/06/29 00:00 1000 bar_1.txt
-a--- 2015/06/29 00:00 1000 bar_2.txt
-a--- 2015/06/29 00:00 1000 bar_2.txt

スポンサーリンク