作成 2010.01.05
更新 2011.11.27
PowerShell で他言語を使用する Visual Basic 編
このサンプルは、クリップボードにコピーします。
$provider = New-Object Microsoft.VisualBasic.VBCodeProvider
$params = New-Object System.CodeDom.Compiler.CompilerParameters
$params.GenerateInMemory = $True
$refs =
	"System.dll","Microsoft.VisualBasic.dll","System.Data.DLL", `
	"System.management.dll","System.DirectoryServices.dll"
$params.ReferencedAssemblies.AddRange($refs)

# VB.NET EXAMPLE
$txtCode = '

Imports Microsoft.VisualBasic
Imports System
Imports System.Threading

Public Class clip

  Public Shared clip_data As String

  Sub Main()
    Dim newThread As Thread = New Thread(AddressOf ThreadMethod)
    newThread.SetApartmentState(ApartmentState.STA)
    newThread.Start()
  End Sub

  Public Property clip_text() As String
    Get
      Return clip_data
    End Get
    Set(ByVal value As String)
      clip_data = value
    End Set
  End Property

  Shared Sub ThreadMethod()
    Dim Comp As New Microsoft.VisualBasic.Devices.computer
    Comp.clipboard.setText(clip_data)
  End Sub

End Class

'

# コンパイルエラーは $results.Errors で取得できる
$results = $provider.CompileAssemblyFromSource($params, $txtCode)
$mAssembly = $results.CompiledAssembly
$i = $mAssembly.CreateInstance("clip")
$i.clip_text = "hello clip"
$r = $i.Main()

©2004-2017 UPKEN IPv4