VB.NETでPowershellスクリプトを実行中にエラーが発生しました

ジェームズウォーカー

私の目標は、vb.netアプリケーション内でPowerShellコマンドを実行することです。calcPowerShell内でコマンドを実行しようとしています

次のシステムがインポートされます。

Imports System.IO
Imports System.Collections.ObjectModel
Imports System.Management.Automation
Imports System.Management.Automation.Runspaces
Imports System.Text

RunScriptPowerShellコマンドを実行する関数を作成しました

Public Function RunScript(ByVal script As String) As String
        Dim runspace As Runspace = RunspaceFactory.CreateRunspace()
        runspace.Open()
        Dim pipeline As Pipeline = Runspace.CreatePipeline()
        pipeline.Commands.AddScript(script)
        pipeline.Commands.Add("Out-String")
        Dim results As Collection(Of PSObject) = pipeline.Invoke()
        Runspace.Close()
        Dim stringbuilder As StringBuilder = New StringBuilder()
        For Each ps As PSObject In results
            stringbuilder.AppendLine(ps.ToString())
        Next
        Return stringbuilder.ToString()
End Function

私が使用しているNuGetパッケージは次のとおりです:System.Management.Automation.dllと混同しないでください System.Management.Automation

この関数を使用してPowerShellコマンドを実行する方法(calcこのインスタンスで実行:)

 txtOutput.Text = RunScript("calc")

(注:txtOutputPowerShell内で実行されたときのコマンドの出力を含むテキストボックスです)

ソリューションをビルドする前にエラーは表示されませんが、ソリューションをビルドするときに、次のエラーがコンソールに記録されました。

エラーBC30002:タイプ「Runspace」が定義されていません。
エラーBC30451: 'RunspaceFactory'が宣言されていません。保護レベルが原因でアクセスできない場合があります。
エラーBC30002:タイプ「パイプライン」が定義されていません。
エラーBC30002:タイプ「PSObject」が定義されていません。
エラーBC30002:タイプ「PSObject」が定義されていません。

J.スコットエルブリン

VBでPowerShellスクリプトを実行する方法は次のとおりです。

Imports System.Management.Automation.Runspaces
    ''' <summary>
    ''' Allows running PowerShell snippets/scripts/commands.
    ''' </summary>
    ''' <param name="scriptText">
    ''' The PowerShell command to send.
    ''' </param>
    ''' <returns>
    ''' The result of the command as a string.
    ''' </returns>
    ''' <remarks>
    ''' Requires: reference to System.Management.Automation.dll, and Imports System.Collections.ObjectModel
    ''' </remarks>
    Public Function RunPSScript(ByVal scriptText As String) As String

        ' Create a Powershell runspace
        Dim pShellRunSpace As Runspace = RunspaceFactory.CreateRunspace()

        ' Open it
        pShellRunSpace.Open()

        ' Create a pipeline and feed it the script text
        Dim pShellPipeline As Pipeline = pShellRunSpace.CreatePipeline()

        pShellPipeline.Commands.AddScript(scriptText)

        ' Add an extra command to transform the script output objects into nicely formatted strings.
        ' Remove this line to get the actual objects that the script returns.
        ' For example: the script "Get-Process" returns a collection of System.Diagnostics.Process instances.
        pShellPipeline.Commands.Add("Out-String")

        ' Execute the script
        Dim pShellResults As Collection(Of PSObject) = pShellPipeline.Invoke()

        ' Close the runspace 
        pShellRunSpace.Close()

        ' Convert the script result into a single string
        Dim sb As New StringBuilder()

        For Each obj As PSObject In pShellResults
            sb.AppendLine(obj.ToString())
        Next

        ' Return the results of the script that has now been converted to text
        Return sb.ToString()

    End Function

また、PowerShellが処理を完了するのを待つ(つまり、渡すtnc google.com -port 8080)だけでも時間がかかり、UIが保持されることがよくあるので、BackgroundWorkerなどに呼び出しを渡して処理します。

また、このスレッドが役立つ場合があります。変数が宣言されていないため、保護レベルが原因でアクセスできない可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

vb.netのループ中にエラーが発生しました

分類Dev

vb.net2015でセットアップと展開を使用してsetup.msiを作成中にエラーが発生しました

分類Dev

vb.netのクエリでInsertintoエラーが発生しています

分類Dev

VBでのOpenFileDialogの処理中にエラーが発生しました

分類Dev

C#をVB.NETに変換中にエラーが発生しました

分類Dev

VB.NETでdatediffを使用しているときに変換エラーが発生しました

分類Dev

XSDからXMLを生成中にエラーが発生しました(xsd.exeを使用)VB.NET

分類Dev

stringBuilderObject.Append()VB.netに<hr>タグを配置しようとしたときにオブジェクト参照エラーが発生しました

分類Dev

vbとSQLServerでエラーが発生しました

分類Dev

vbとSQLServerでエラーが発生しました

分類Dev

VBコードが実行されているExcelシートで、新しいブックを開くときにエラーが発生する

分類Dev

vb.netにタブページを追加するときにエラーが発生しました

分類Dev

vb.net2010での電子メールの送信中にエラーが発生しました

分類Dev

現在のスコープvb6で重複エラーが発生しました

分類Dev

VBコードをC#に変換中にエラーが発生しました

分類Dev

c dllはvb6で正常に動作しますが、vb.netでエラーが発生します(保護されたメモリの読み取りまたは書き込みを試みました)

分類Dev

VBでUbuntu13.04 GNOME64ビットを実行しているときに「VT-x / AMD-Vが動作していません」エラーが発生しました

分類Dev

VBでUbuntu13.04 GNOME64ビットを実行しているときに「VT-x / AMD-Vが動作していません」エラーが発生しました

分類Dev

C#からPowershellスクリプトを実行中にエラーが発生しました

分類Dev

可能であれば、VB.NETでエラージャンプが発生した後、For Eachループを継続しますか?

分類Dev

vb.netのクエリでエラーが発生すると、誤ったdouble値が返されます

分類Dev

vb6で動的に作成されたラベルをアンロード中にエラーが発生しました

分類Dev

ボタンをクリックすると、VB.netでPythonスクリプトを実行します

分類Dev

C#からVB6アプリケーションを呼び出そうとしたときにファイル/アクセスエラーが発生しました

分類Dev

SSH経由でPythonスクリプトを実行中にエラーが発生しました

分類Dev

GitBashでスクリプトを実行中にエラーが発生しました

分類Dev

nohupでスクリプトを実行中にエラーが発生しました

分類Dev

nohupでスクリプトを実行中にエラーが発生しました

分類Dev

crond:crontabでPythonスクリプトを実行中にsendmailエラーが発生しました

Related 関連記事

  1. 1

    vb.netのループ中にエラーが発生しました

  2. 2

    vb.net2015でセットアップと展開を使用してsetup.msiを作成中にエラーが発生しました

  3. 3

    vb.netのクエリでInsertintoエラーが発生しています

  4. 4

    VBでのOpenFileDialogの処理中にエラーが発生しました

  5. 5

    C#をVB.NETに変換中にエラーが発生しました

  6. 6

    VB.NETでdatediffを使用しているときに変換エラーが発生しました

  7. 7

    XSDからXMLを生成中にエラーが発生しました(xsd.exeを使用)VB.NET

  8. 8

    stringBuilderObject.Append()VB.netに<hr>タグを配置しようとしたときにオブジェクト参照エラーが発生しました

  9. 9

    vbとSQLServerでエラーが発生しました

  10. 10

    vbとSQLServerでエラーが発生しました

  11. 11

    VBコードが実行されているExcelシートで、新しいブックを開くときにエラーが発生する

  12. 12

    vb.netにタブページを追加するときにエラーが発生しました

  13. 13

    vb.net2010での電子メールの送信中にエラーが発生しました

  14. 14

    現在のスコープvb6で重複エラーが発生しました

  15. 15

    VBコードをC#に変換中にエラーが発生しました

  16. 16

    c dllはvb6で正常に動作しますが、vb.netでエラーが発生します(保護されたメモリの読み取りまたは書き込みを試みました)

  17. 17

    VBでUbuntu13.04 GNOME64ビットを実行しているときに「VT-x / AMD-Vが動作していません」エラーが発生しました

  18. 18

    VBでUbuntu13.04 GNOME64ビットを実行しているときに「VT-x / AMD-Vが動作していません」エラーが発生しました

  19. 19

    C#からPowershellスクリプトを実行中にエラーが発生しました

  20. 20

    可能であれば、VB.NETでエラージャンプが発生した後、For Eachループを継続しますか?

  21. 21

    vb.netのクエリでエラーが発生すると、誤ったdouble値が返されます

  22. 22

    vb6で動的に作成されたラベルをアンロード中にエラーが発生しました

  23. 23

    ボタンをクリックすると、VB.netでPythonスクリプトを実行します

  24. 24

    C#からVB6アプリケーションを呼び出そうとしたときにファイル/アクセスエラーが発生しました

  25. 25

    SSH経由でPythonスクリプトを実行中にエラーが発生しました

  26. 26

    GitBashでスクリプトを実行中にエラーが発生しました

  27. 27

    nohupでスクリプトを実行中にエラーが発生しました

  28. 28

    nohupでスクリプトを実行中にエラーが発生しました

  29. 29

    crond:crontabでPythonスクリプトを実行中にsendmailエラーが発生しました

ホットタグ

アーカイブ