[PowerShell V2 CTP3]PowerShellでF#

by HIRO 3. 7月 2009 09:07

今回はPowerShellからF#のコードを使用する方法についてです。

これまでの関連記事は

PowerShellでC#
PowerShellでVB.NET

です。

前回の記事で、Add-Typeコマンドレットの-Languageパラメータでは

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

を指定可能だとお伝えしました。

PowerShellのヘルプを眺めていたら、F#も扱えるとのことだったので実験をしてみました。

まずは前提条件としてF#がインストールされていなければいけません。(自分の場合はF#の1.9.6.2がインストールされています。)

まずはPowerShellを起動し、下記のように入力してください。

PS>  cd "C:\Program Files\FSharp-1.9.6.2\bin"
PS C:\Program Files\FSharp-1.9.6.2\bin> Add-Type -Path FSharp.Compiler.CodeDom.dll
PS C:\Program Files\FSharp-1.9.6.2\bin> $provider = New-Object Microsoft.FSharp.Compiler.CodeDom.FSharpCodeProvider 

1行目は自分のF#がインストールされている場所にあるbinディレクトリへの移動です。

2行目でF# Code CompilerをPowerShellで使用可能にします。

3行目でF#のプロバイダのインスタンスを$provider変数に代入します。

次にF#のソースコードを変数$sourceに代入します。SayHelloという関数をF#で記述しています。

$fSharpCode=@"
#light

let SayHello () = "Hello PowerShell"
"@ 

次に下記のように入力します。(ヘルプからのパクリ)

$fsharpType = Add-Type -TypeDefinition $fSharpCode -CodeDomProvider $provider -PassThru | where { $_.IsPublic }

これで下準備はOKです。

あとは下記のようにしてSayHello関数を使用します。

PS> $fsharpType::SayHello()
Hello PowerShell

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell V2 CTP3 | コマンドレット

[PowerShell V2 CTP3]PowerShellでVB.NET

by HIRO 2. 7月 2009 09:46

前回はPowerShellでC#を使用したので、今回はVB.NETを使用する方法について説明します。

PowerShellでVB.NETのソースコードを展開する場合もAdd-Typeコマンドレットを使用します。

Add-Type コマンドレットには -Languageパラメータという言語を指定するパラメータがあるのですが、"VisualBasic"と指定するとVB.NETを使用できるようになります。

既定値はC#となっているので、前回は指定しなかったというわけです。

使用可能な言語とパラメータに指定する値は下記の通りです(*)。

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

* C#がなぜ2通りあるのかわかりません。どのように差が出るのか... わかる方いましたら情報いただけると助かります。

Add-Typeコマンドレットの書式は下記の通りとなります。

Add-Type -Language 使用する言語 展開するソースコード

 

以下は、乱数を作成するメソッドをVB.NETで作成し、PowerShellで使用できるようにします。

$source = @"
Public Class MyFunction

    Public Shared Function GetRandom( _
        ByVal MinValue As Integer, _
        ByVal MaxValue As Integer) As Integer
        Dim r As New System.Random()
        Return r.Next(MinValue, MaxValue)
    End Function


    Public Function GetRandom2() As Integer
        Dim r As New System.Random()
        Return r.Next(0, 10)
    End Function
End Class
"@


Add-Type -Language VisualBasic $source

C#のときと同様に Sharedなメソッドは

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

で使用できます。

今回作成したクラスMyFunctionにあるメソッド GetRandomは

PS> [MyFunction]::GetRandom(-5, 5)

のようにして使用します。この場合は-5~5までの間の乱数を返します。

インスタンスを作成する場合も前回と同様で

変数 = New-Object クラス名

とします。

今回のクラスの場合は

PS> $MyFunc = New-Object MyFunction

としてインスタンスを作成し

PS> $MyFunc.GetRandom2()

として使用します。

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell V2 CTP3 | コマンドレット

[PowerShell V2 CTP3]PowerShellでC#

by HIRO 1. 7月 2009 10:17

どうもご無沙汰しております。HIROです。 

今回は Add-Type コマンドレットを使用して、 PowerShellでC#のクラス直接利用する方法を紹介します。

Add-Type コマンドレットは V2 から搭載されるもので、他の言語のソースを直接PowerShell上で展開して使用できるようにします。

今回はC#のクラスをPowerShell上で文字列として定義し、利用してみたいと思います。

まずはヒア文字列を使用して変数 $source にC#のSampleClassを代入します。

PS> $source = @"
public class SampleClass{
    public static string GetHello(string Name)
    {
        return "Hello " + Name;
    }
    public string GetHello2(string Name)
    {
        return "Hello Hello" + Name;
    }
}
"@

このクラスに

このクラスには GetHelloとGetHello2の2つのメソッドがあります。

早速ですが、Add-Typeコマンドレットで、このクラスをPowerShellに登録しましょう。

Add-Type -TypeDefinition $Source

とします。

登録したクラスの利用ですがスタティックメソッドは

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

の書式で使用することができます。

Get-Helloメソッドは次のようにして使用できます。
(::と入力した後[Tab]キーを押すとタブ補完が働きます。)

PS> [SampleClass]::GetHello("HIRO")
Hello HIRO

次にstaticでないメソッドはインスタンスを作成してからでないと使用できません。

インスタンスの作成は New-Object コマンドレットを使用します。

PS> $sample = New-Object SampleClass

インスタンスを作成したら

PS> $sample.GetHello2("HIRO")
Hello Hello HIRO

のようにして、利用することができます。

Add-Typeコマンドレットで使用できる言語はC#だけではないので、次回は別の言語を取り上げたいと思います。

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell V2 CTP3 | コマンドレット

MSMVP受賞と記事リンク

by 牟田口大介 1. 7月 2009 06:36

牟田口です。おはようございます。今日付けでMSMVP for PowerShellを受賞いたしましたので、ここでもご報告させていただきます。今後ともよろしくお願いいたします。

わんくまのほうでTips記事を書きました。

[PSv2]リモートセッションを張るとき明示的に認証する
http://blogs.wankuma.com/mutaguchi/archive/2009/06/30/176828.aspx

これからPSv2の話を向こうでやっていく感じにしたいと思っていますので、随時こちらでもリンクをはりますね。

7/4大阪での講演もまだ若干席に余裕がありますのでご都合がつく方はぜひどうぞ。

最新のブログ

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

大阪でPowerShell v2の講演をやります

by 牟田口大介 8. 6月 2009 20:43

牟田口です。こんばんは。

7/4(土)にわんくま同盟大阪勉強会で、PSv2のセッションを行います。
http://www.wankuma.com/seminar/20090704osaka30/Default.aspx

「PowerShell ver2について ~ついにWindowsサーバー管理環境の主流へ~」

Windows 7とWindows Server 2008 R2で標準機能となるPowerShell ver2を紹介します。PS2は簡単にコマンドラインで管理を行ったり、複数サーバーへリモートで同時コマンド実行したり、標準装備のスクリプト開発環境があったりするのが目玉です。
今後はWindowsサーバーOSおよびサーバー管理製品群はPSベースで管理をおこなうのが主体になります。今回はそんなPS2を一足早く見ていきましょう。

もしよろしければどうぞご参加ください! 

現在のレート 5.0 (1人)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2009 PowerShell from Japan!!