Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

PowerShell 2.0の新機能(6)
――他言語の利用

PowerShell 2.0のAdd-Typeコマンドレット

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/04/12 14:00

 PowerShell 2.0ではAdd-Typeというコマンドレットが追加され、このコマンドレットを使用すると、C#やVB.NETといった他言語のソースを利用することが可能です。今回は、PowerShell 2.0で他言語を利用する方法について説明します。

目次

はじめに

 PowerShell 2.0ではAdd-Typeというコマンドレットが追加されました。このコマンドレットを使用すると、C#やVB.NETのソースコードをスクリプト内に組み込んだり、ファイルから読み込んで利用することができます。

 これにより、既存の資産を用いたり、他のC#/VB.NETエンジニアにメソッドを作成してもらって利用したりといったことが可能となります。

対象読者

 PowerShellの基本的な操作ができる方。

 PowerShellについて学びたい方は、PowerShell入門の連載を参照ください。

他言語を利用する

 それでは他言語を利用する方法についてみていきましょう。

 最初にC#のコードを利用してAdd-Typeコマンドレットの基本的な使用方法について説明し、その後でVB.NETやF#といったコードを利用する方法について触れます。

C#のコードを利用する

 次のコードはC#で書かれたSampleClassというクラス定義です。このクラスにはSayHelloとSayHello2という2つのメソッドがあります。

SampleClass(C#)
public class SampleClass{
    public static string SayHello(string Name)
    {
        return "Hello " + Name;
    }
    public static string SayHello2(string Name)
    {
        return "こんにちは" + Name + "さん";
    }
}

 このコードをヒア文字列を使用して、次のように$Sourceという変数に代入します(変数名は自由に付けてかまいません)。

ヒア文字列を使用して変数にソースコードを代入する
$source=@"
public class SampleClass{
    public static string SayHello(string Name)
    {
        return "Hello " + Name;
    }
    public static string SayHello2(string Name)
    {
        return "こんにちは" + Name + "さん";
    }
}
"@

 次に、変数$Sourceに格納されたコードをAdd-TypeコマンドレットでPowerShellから利用できるようにします。

 Add-Typeコマンドレットの基本構文を次に示します。

ヒア文字列を使用して変数にソースコードを代入する
Add-Type -Language 使用する言語 -TypeDefinition 利用するコード

 -Languageパラメータには表1の値を指定することができます。このことからも分かるように、C#、VB.NET、JScriptのソースコードを利用できます。 

表1 -Languageパラメータ値
言語 パラメータ値
C# CSharp
CSharpVersion3
VB.NET VisualBasic
JScript JScript

 それではAdd-Typeコマンドレットを使用して、PowerShellからSampleClassを利用できるようにして見ましょう。

Add-Type -Language CSharp -TypeDefinition $Source

 -Languageは既定値がCSharpとなっています。このためC#を利用する場合は-Languageパラメータを省略して次のように記述できます。

Add-Type -TypeDefinition $Source

 Add-Typeコマンドレットで登録したクラスを利用するには次のようにします。

[クラス名]::メソッド名

 たとえば、SampleClassのSayHelloメソッドを利用するには

[SampleClass]::SayHello("CodeZine")

のようにします。

 実行すると図1のようになります。

図1 SayHelloメソッドの実行

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • HIRO(ヒロ)

    HIRO's.NETのHIROです。 とある半導体工場のSEです。 VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。 最近はBlog でPowerShellについて書いています。 2008/07/07にPowerShell from Japan!!という...

バックナンバー

連載:PowerShell 2.0の新機能
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5