Runspace04 サンプルの VB.NET ソース コードを次に示します。 このサンプルでは、System.Management.Automation.RunspaceInvoke クラスを使用して、終了エラーを生成するスクリプトを実行します。 ホスト アプリケーションは、エラーをキャッチし、エラー レコードを解釈する役割を担います。
注
このサンプルの VB.NET ソース ファイル (runspace02.vb) は、Windows Vista および Microsoft .NET Framework 3.0 ランタイム コンポーネント用 Windows ソフトウェア開発キットを使用してダウンロードできます。 ダウンロード手順については、「Windows PowerShell をインストールして Windows PowerShell SDKをダウンロードする方法」を参照してください。
ダウンロードしたソース ファイルは、<PowerShell Samples> ディレクトリにあります。
コード サンプル
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
Imports System.Text
Imports Microsoft.VisualBasic
Imports System.Management.Automation
Imports System.Management.Automation.Host
Imports System.Management.Automation.Runspaces
Namespace Microsoft.Samples.PowerShell.Runspaces
Class Runspace04
''' <summary>
''' This sample uses the RunspaceInvoke class to execute
''' a script. This script will generate a terminating
''' exception that the caller should catch and process.
''' </summary>
''' <param name="args">Unused</param>
''' <remarks>
''' This sample demonstrates the following:
''' 1. Creating an instance of the RunspaceInvoke class.
''' 2. Using this instance to execute a string as a PowerShell script.
''' 3. Passing input objects to the script from the calling program.
''' 4. Using PSObject to extract and display properties from the objects
''' returned by this command.
''' 5. Retrieving and displaying error records that may be generated
''' during the execution of that script.
''' 6. Catching and displaying terminating exceptions generated
''' by the script being run.
''' </remarks>
Shared Sub Main(ByVal args() As String)
' Define a list of patterns to use in matching
' Note that the fourth pattern is not a valid regular
' expression so it will cause a terminating exception to
' be thrown when used in Select-String.
Dim patterns() As String = {"aa", "bc", "ab*c", "*", "abc"}
' The script to run to use the patterns. Input passed
' to the script will be available in the $input variable.
Dim script As String = "$input | where {" & _
" Select-String $_ -InputObject 'abc' }"
' Create an instance of the RunspaceInvoke class.
Dim invoker As New RunspaceInvoke()
' Invoke the runspace. Because of the bad regular expression,
' no objects will be returned. Instead, an exception will be
' thrown.
Try
Dim errors As System.Collections.IList = Nothing
Dim result As PSObject
For Each result In invoker.Invoke(script, patterns, errors)
Console.WriteLine("'{0}'", result.ToString())
Next result
' Now process any error records that were generated
' while running the script.
Console.WriteLine(vbCrLf & _
"The following non-terminating errors occurred:" & vbCrLf)
If Not (errors Is Nothing) AndAlso errors.Count > 0 Then
Dim err As PSObject
For Each err In errors
System.Console.WriteLine(" error: {0}", err.ToString())
Next err
End If
Catch runtimeException As RuntimeException
' Trap any exception generated by the script. These exceptions
' will all be derived from RuntimeException.
System.Console.WriteLine("Runtime exception: {0}: {1}" & _
vbCrLf + "{2}", _
runtimeException.ErrorRecord.InvocationInfo.InvocationName, _
runtimeException.Message, _
runtimeException.ErrorRecord.InvocationInfo.PositionMessage)
End Try
System.Console.WriteLine(vbCrLf + "Hit any key to exit...")
System.Console.ReadKey()
End Sub 'Main
End Class 'Runspace04
End Namespace
こちらもご覧ください
Windows PowerShell SDK の
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
PowerShell