IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Inst. Tech View

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第33回 Windows PowerShell 2014年1月

 今回のInst. Tech Viewは、Windows PowerShellについての話題です。

 Windows PowerShell(以下PowerShell)はMicrosoftのコマンドラインシェルです。スクリプト言語としても利用することができます。PowerShellはWindows Server 2008 R2、Windows 7以降のWindowsでは、標準インストールされています。

 また、Microsoftやサードパーティから各社の製品を管理するための「スナップイン(PSSnapin)」もしくは「モジュール(Module)」が提供されています。それらを追加することで、新たなコマンドが使用できるようになります。
 例えば、VMware社やCitrix社から、vSphereやXenDesktopを管理するためのスナップインがリリースされています。

 Windows Server 2008 R2以降では、タスクバーに最初からPowerShellコマンドウィンドウ(Powershell.exe)の起動ボタンがあり気軽に使用できます。
 従来の外部コマンド(例えばipconfig.exeやping.exe)もPowerShellコマンドウィンドウから実行できますので従来のコマンドプロンプト(cmd.exe)を立ち上げずに、PowerShellコマンドウィンドウを多く使用しているサーバー管理者の方もいらっしゃるはずです。

 PowerShell環境で使用するコマンドのことを、従来のコマンドと区別して「コマンドレット」と呼びます。コマンドレットの形式は以下のような形式で統一されています。

 構文
 [動詞]-[名詞] パラメータ名 "値"

 例えば、『ヘルプ情報が欲しい』場合を考えます。情報を取得するので[動詞]には[Get]を記述します。ヘルプの情報が欲しいので[名詞]には[Help]を記述します。これを-(ハイフン)で区切ります。結果として、以下のようなコマンドレットがあります。

 Get-Help

 従来のコマンドプロンプトでは、コマンドやパラメータ形式に規則性がなく、コマンドの機能を推測することが容易ではありませんでしたが、PowerShellでは改善されています。

 PowerShellは、コマンドレットの実行結果を、テキスト文字列ではなく、オブジェクトとして出力します。オブジェクトにはプロパティ(オブジェクト固有の情報)やメソッド(オブジェクト固有の動作)があり「オブジェクト.プロパティ」あるいは「オブジェクト.メソッド(引数)」の形式で利用できます。
 また、コマンドレット実行結果のオブジェクトを | (パイプ)を介して、次のコマンドレットの入力として引き渡すことができます。

 例えば、Linuxのシェルで、プロセス名を指定して、あるプロセスのIDを表示しようとすると以下のようになります。

 ps -ef | grep 'cupsd' | gawk '{print $2}'

 psコマンドの実行結果の文字列を、grepでキーワードとなる文字列を指定して検索しています(今回はcupsd)。
 psコマンド実行結果の2フィールド目が、IDのフィールドとなるため最後の$2でそれを指定し、表示しています。

 同様の処理をPowerShellで行うと、以下のようになります。

 get-process | where-object {$_.Processname -eq 'spoolsv'} | format-table id

 get-processコマンドレットで、プロセス情報をオブジェクトとして取得し、パイプで次のコマンドレットに引き渡しています。

 where-objectでどのプロセスか絞り込みます。続く { } の中には、絞り込むための条件式が入ります。
 $_ は、前のコマンドレットからパイプで引き渡されたオブジェクトが代入されるキーワードです。
 -eq はイコールですので、「Processnameプロパティの値がspoolsvのもの」という条件でプロセスを指定しています。

 最後にformat-tableという、表示を行うコマンドレットを使用してパイプで引き渡されたオブジェクトの、idプロパティのみを表示しています。

 以上、参考までとなりますが、他のシェル言語と比較してみました。
 文字列検索よりオブジェクト.プロパティでの形式で指定した方が、曖昧さは無くなると思いますがコマンドとしては長くなることがあるかもしれません。
 各コマンドレットには短いエイリアス(別名)が用意されていることが多いのですが、今回は使用しませんでした。また、コマンドレットを途中まで入力して、Tabキーで残りを補完することも可能です。皆様がPowerShellを使用する際には、エイリアスやタブ補完なども、あわせて活用していただければ幸いです。

 CTC教育サービスでは今回ご紹介したPowerShellを使用して、Windowsベースのサーバーを管理するための基礎的な知識とスキルを学習するトレーニングコースを開催しております。皆様のご受講を、心よりお待ちしております。

※上記コマンド類は一例としてご紹介させていただいております。    ※
※お客様の環境によっては記載のとおりの動作をしない場合がございます。※

■■■ コースの詳細情報はこちら ■■■  ※価格はメルマガ配信時点の価格です。

P711:Windows PowerShell 2.0 による管理の自動化
期間:2日間
価格:\90,000(税抜)

 CTC教育サービスのトレーニングを今後ともよろしくお願い致します。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes