[運用]
|
|
本連載では、Windowsの次世代シェルであるWindows PowerShell(以下PowerShell)の基本的な機能を理解していただくことを目的としている。前編では、まずPowerShellの基本的な概念を理解していただくという意味で、より手軽に扱える対話型シェルを中心に解説を進めた。しかし、PowerShellの最終的な目標はスクリプティング技術によるシステム運用の自動化である。後編の今回は、前回の内容を踏まえて、PowerShell上でスクリプトを利用するための基礎について解説していく。
具体的には、最初にスクリプトを実行するための基本的な手順を理解したうえで、PowerShellにおける変数や制御構文、関数など基礎的な構文の解説を行っていく。
PowerShellスクリプトの基本
スクリプトとはいっても、その実体はファイルとして保存されたコマンドの集合にすぎない。例えば前回も紹介した次のコードをスクリプト化するには、ただ単にこれをテキスト・エディタで入力し、ファイルとして保存すればよい。
|
|
| Get-ChildItemコマンドレットの処理結果をリスト形式に整形する(Begin.ps1) |
ここでは、スクリプトのファイル名を「Begin.ps1」としておこう。ファイルのベース名には任意の名前を指定できるが、PowerShellスクリプトの拡張子は「.ps1」としなければならない。
ただし拡張子を「.ps1」としたスクリプト・ファイルをエクスプローラなどからダブルクリックしてもPowerShellが自動起動するわけでは「ない」点には注意が必要である(試してみれば分かるように、「.ps1」ファイルはデフォルトでメモ帳によって開かれる)。
従来多くのスクリプティング実行環境では、スクリプト・ファイルをダブルクリックすれば自動的にコードを実行できたため、PowerShellのこの仕様は一見、不便であるように思われるかもしれない。しかし従来のこのような挙動は、往々にしてセキュリティ上の問題となることが多かった。つまりスパム・メールなどに添付されてきたスクリプト・ファイルをエンドユーザーがダブルクリックしてしまった場合、そのまま任意のコードが実行されてしまう可能性があった。しかしPowerShellではユーザーが「.ps1」ファイルをダブルクリックしても単にメモ帳が開くだけである。これにより、PowerShellから明示的にスクリプト・ファイルを呼び出さない限り、こうした悪意あるスクリプトが意図せずに実行される可能性を最小限に抑えることができる。
スクリプト・ファイルの実行方法
ではPowerShellスクリプトを実際に実行してみよう。繰り返しになるが、PowerShellでは「.ps1」ファイルのダブルクリックではスクリプトを起動することができないので、PowerShell上から明示的に呼び出す必要がある。ただしこの場合にも、従来のコマンド・プロンプトに慣れている方にとってはいくつか注意しなければならない点がある。
実行に関する注意1―PowerShellはカレント・フォルダを検索しない
例えば先ほど作成した「Begin.ps1」をカレント・フォルダ(ここでは「C:\Windows\Temp」)に配置しているものと仮定する。その場合、従来のコマンド・プロンプトであれば、単にファイル名を指定するだけでスクリプト・ファイルが呼び出され、実行されるはずだ。これは、コマンド・プロンプトがコマンド・パスの検索先として、デフォルトでカレント・フォルダを含めているためだ。しかしPowerShellの場合はどうだろう。
PS > Begin.ps1 |
このように、エラーとなり、ファイル名が認識されていないことが確認できる。結論からいってしまうと、PowerShellではスクリプト・ファイルを実行する場合に必ず絶対パスか相対パス形式でファイルを指定しなければならない。つまり上の例であれば、
PS > ./Begin.ps1 |
または、
PS > C:\Windows\Temp\Begin.ps1 |
のように指定する必要がある(拡張子「.ps1」は省略しても構わない)。
実行に関する注意2―スクリプト実行ポリシーを設定すること
もっとも、これだけではまだ「.ps1」ファイルを実行することはできない。絶対パス/相対パスを指定して再び実行してみると、先ほどとはまた異なるエラーメッセージに遭遇することになるはずだ。具体的なメッセージは以下のとおりである。
スクリプトの実行がシステムで無効になっているため、ファイル C:\...\Begin.ps1 を読み込めません。詳細については、「get-Help about_signing」と入力してヘルプを参照してください。 |
PowerShellではセキュリティ上の理由から、デフォルトでスクリプトの実行が無効に設定されている。そのため、スクリプト・ファイルを実行するためには、あらかじめPowerShellのスクリプト実行ポリシーを変更しておく必要がある。実行ポリシーを変更するにはSet-ExecutionPolicyコマンドレットを利用する。
PS > Set-ExecutionPolicy RemoteSigned |
Set-ExecutionPolicyコマンドレットを実行してから再びスクリプト・ファイルを実行してみると、今度は確かにスクリプト・ファイルが呼び出され、正しく実行されることが確認できるはずだ。
|
|
| スクリプト・ファイルを正常に呼び出すことができた例 |
Set-ExecutionPolicyコマンドレットで指定可能な実行ポリシーには以下のようなものがある。
| 実行ポリシー | 概要 |
| Restricted | すべてのスクリプトを実行不可 |
| AllSigned | すべてのスクリプトに証明書を要求 |
| RemoteSigned | インターネット経由でダウンロードしたスクリプトのみ証明書を要求 |
| Unrestricted | すべてのスクリプト実行を許可(ただしインターネット経由でダウンロードしたコードは実行確認のみあり) |
![]() |
|
| PowerShellで利用可能な実行ポリシー | |
通常、スクリプトを開発/実行する環境においては、実行ポリシーとして「RemoteSigned」を選択しておくことをお勧めする。「AllSigned」がより安全ではあるが、すべてのスクリプトに証明書が必要となるため、特に自分でスクリプトを開発するような局面では適切とはいえない。「Unrestricted」は名前のとおり、一切の制約を課さない実行ポリシーであり、すべてのスクリプトを無条件に実行することができる。通常、特別な理由がない限りはUnrestrictedの利用は避けるべきだ。
以上、PowerShellにおけるスクリプトの実行方法を理解したところで、ここからはPowerShellにおける基本的な構文について紹介していく。
| INDEX | ||
| [運用]Windows PowerShellコマンド&スクリプティング入門(前編) | ||
| PowerShellの基本 | ||
| 1.PowerShellを始めよう | ||
| 2.PowerShellをインストールする | ||
| 3.キーワード1「コマンドレット」―PowerShellを操作する基本コマンド | ||
| 4.キーワード2「.NETオブジェクト」―コマンドレットの戻り値はオブジェクト | ||
| 5.キーワード3「ドライブ」―データソースへのアクセスを一元化する | ||
| [運用]Windows PowerShellコマンド&スクリプティング入門(後編) | ||
| PowerShellスクリプティングの第一歩 | ||
| 1.PowerShellスクリプトの基本 | ||
| 2.PowerShellの変数 | ||
| 3.PowerShellの制御構文 | ||
| 4.PowerShellの関数 | ||
| 5..NET Frameworkのクラスを利用する | ||
| Windows運用 |
ホワイトペーパー(TechTargetジャパン)
- WindowsTIPS (2010/3/12)
− 不要なアドオンを無効化してIE8の起動を高速化する
− IE8のソース表示エディタを変更する
− RRASのNATでポートマッピングを定義する - PowerShell 2.0で始めるWindowsシステム管理 (2010/3/11)
コマンド・プロンプトやWSHスクリプトはもう古い!? これからのWindowsシステム管理はPowerShellでスマートに片付けよう - Hyper-Vライブ・マイグレーションの運用ノウハウ (2010/3/10)
ライブ・マイグレーションの運用フェイズで役立つノウハウを解説。実用的なPowerShellスクリプトなども紹介する - 第211話 あとで読む (2010/3/9)
おっ、これいいねぇ。ああこっちも。いやあインターネットは情報の宝庫だね。いまは忙しいから、「あとで読む」ってことでメモメモ
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 New! |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜Java編〜
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |

| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |

| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |
| ◆ | 直属上司が海外にいるのエンジニアに見る 【実例】場所に捉われないワークスタイル |

| ◆ | 「仮想化工房」のマイスターが選んだのは VMware、Hyper-V、そしてVirtageだった! |
| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |







