1

わかりませんか。これを投稿してすぐに、ようやく動作するようになりました。将来誰かがこの問題を抱えている場合に備えて、私がしたことを投稿します。それは私にとって大きな見落としです!

ユーザー名の行の直前に、
「Import-Module DataOnTap」&Environment.NewLine&_**という行を追加しました。

VB.Net2010コード内からPowerShellスクリプトを実行しようとしています。PowerShellでコードを実行すると、正常に実行されます。VS2010内から実行すると、「「connect-nacontroller」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認してください。パスが含まれているので、パスが正しいことを確認して、再試行してください。」「DimresultsAsCollection(Of PSObject)= MyPipeline.Invoke()」行に到達すると、エラーが発生します。

これが私のコードです(ユーザー名とパスワードを変更し、機能するようになったらコードへの入り方を変更します。ボリュームの名前も変更しました):

Protected Sub ExecuteCode_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    resultBox.Text = RunScript(powerShellCodeBox.Text)
End Sub

Private Function RunScript(ByVal scriptText As String) As String
    Dim MyRunSpace As Runspace = RunspaceFactory.CreateRunspace()
    MyRunSpace.Open()
    Dim MyPipeline As Pipeline = MyRunSpace.CreatePipeline()
    Dim userName As String = "abc"
    Dim password As String = "123"
    Dim myscript As String = "$username = " & Chr(34) & userName & Chr(34) & Environment.NewLine & _
                 "$password = ConvertTo-SecureString  " & Chr(34) & password & Chr(34) & " -AsPlainText -Force" & Environment.NewLine & _
                 "$cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $userName,$password" & Environment.NewLine & _
                 "connect-nacontroller mydrive -credential $cred" & Environment.NewLine
    MyPipeline.Commands.AddScript(myscript)
    MyPipeline.Commands.Add("Out-String")
    Dim results As Collection(Of PSObject) = MyPipeline.Invoke()
    MyRunSpace.Close()
    Dim MyStringBuilder As New StringBuilder()
    For Each obj As PSObject In results
        MyStringBuilder.AppendLine(obj.ToString())
    Next
    Return MyStringBuilder.ToString()

End Function
4

1 に答える 1

0

ユーザー名の行の直前に、「Import-Module DataOnTap」&Environment.NewLine&_**という行を追加しました。

于 2012-05-22T12:41:26.247 に答える