WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

VBからPowerShellを実行する場合の、エラーの取得方法

VBからPowerShellを呼び出す場合には、「RunspaceInvoke 」を用いて実行しますが、その時のPowerShell側で発生したエラーの取得方法です。

RunspaceInvokeオブジェクトのInvokeメソッド実行時に、エラー内容をIList 型で取得できます。

あとは、エラーがある場合にこのオブジェクトを利用してエラー内容を表示することになります。

下記は、リモートから Get-VM2 という存在しないPowerShellコマンドをわざと実行して、エラーを表示しています。

PowerShellのリモート実行のサンプルコードも含まれていますので参考までに。

    1:          Dim strCmdlet As String = ""
   2:          strCmdlet += "$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList 'admin', (ConvertTo-SecureString 'adminpass' -AsPlainText -Force);"
   3:          strCmdlet += "Invoke-Command -ComputerName 'Server01' -Credential $Cred {"
   4:          strCmdlet += "Get-VM2 | Select Name"
   5:          strCmdlet += "}"
   6:   
   7:          Dim objRunspace As Runspace = RunspaceFactory.CreateRunspace()
   8:          objRunspace.Open()
   9:          Dim objRunspaceInvoke As RunspaceInvoke = New RunspaceInvoke(objRunspace)
  10:          Dim objErrors As IList = Nothing
  11:          Dim objResult As ObjectModel.Collection(Of PSObject) = objRunspaceInvoke.Invoke(strCmdlet, Nothing, objErrors)
  12:   
  13:          If objErrors.Count() > 0 Then
  14:              Dim objError As PSObject = objErrors(0)
  15:              Dim objRecord As ErrorRecord = objError.BaseObject
  16:              Console.WriteLine(objRecord.Exception.Message)
  17:              Console.WriteLine(objRecord.FullyQualifiedErrorId)
  18:          Else
  19:              For Each objPSObject As PSObject In objResult
  20:                  Console.WriteLine(objPSObject.Properties("Name").Value)
  21:              Next
  22:          End If

エラー内容はPowerShell実行時のエラーと同じ内容が取得できます。

用語 'Get-VM2' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。
名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
CommandNotFoundException

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://codename2010.blog11.fc2.com/tb.php/246-b8276a70
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。