Ich habe nach einer Lösung für das Problem gesucht, mit dem ich konfrontiert werde, wenn ich versuche, PowerShell von VB.net zu starten. Ich bin nicht sehr erfahren im Codieren, also Entschuldigung, wenn ich nicht die richtige Terminologie verwende.PowerShell und .NET
Unten habe ich den Code kopiert, mit dem ich arbeite. Wenn ich den Code kompiliere und das Programm ausführe, erhalte ich ein paar Ausnahmen, die auf PowerShell-Module verweisen. Ich habe viel gesucht, um sicherzustellen, dass ich die erforderlichen PowerShell-Module und/oder -Ansammlungen nicht vermisse.
Imports System.Collections.ObjectModel
Imports System.Management.Automation
Imports System.Management.Automation.Runspaces
Imports System.Management.Automation.Host
Imports System.Text
Public Class Form1
Private Function RunScript(ByVal Script As String) As Object
Dim MyRunSpace As Runspace = RunspaceFactory.CreateRunspace()
MyRunSpace.Open()
Dim MyPipeline As Pipeline = MyRunSpace.CreatePipeline()
MyPipeline.Commands.AddScript(Script)
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
End Function
Private Function GetAD()
Dim Script As New StringBuilder()
Script.Append("$ADUSER= Get-ADUser -filter { cn -eq " + Chr(34) + "Common Name" + Chr(34) + " }" + vbCrLf)
Script.Append("$ADUSER" + vbCrLf)
Return Script.ToString()
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Call RunScript(GetAD)
End Sub
Private Sub RichTextBox1_TextChanged(sender As Object, e As EventArgs) Handles RichTextBox1.TextChanged
RichTextBox1.Text = ToString()
End Sub
End Class
Hier sind die Ausnahmen, die der Compiler zurückgibt, wenn die PowerShell-Pipeline das Skript verarbeitet und an den Compiler zurückgibt. Wiederum habe ich sichergestellt, dass ich den RSAT auf meinem Computer installiert habe. Außerdem stellte ich sicher, dass ich ein altes NET 3.5 SDK hatte. Alle Suchergebnisse zu diesem speziellen Thema waren bisher nicht hilfreich.
+ Exception Exception thrown: 'System.DllNotFoundException' in System.Management.Automation.dll ("Unable to load DLL 'wldp.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)") System.DllNotFoundException
Exception thrown: 'System.Management.Automation.ItemNotFoundException' in System.Management.Automation.dll ("Cannot find path 'C:\windows\system32\windowspowershell\v1.0\Modules\ActiveDirectory\Microsoft.ActiveDirectory.Management' because it does not exist.")
Exception thrown: 'System.IO.FileNotFoundException' in mscorlib.dll ("Could not load file or assembly 'Microsoft.ActiveDirectory.Management' or one of its dependencies. The system cannot find the file specified.")
Exception thrown: 'System.IO.FileNotFoundException' in mscorlib.dll ("Could not load file or assembly 'file:///C:\windows\system32\windowspowershell\v1.0\Modules\ActiveDirectory\Microsoft.ActiveDirectory.Management' or one of its dependencies. The system cannot find the file specified.")
Exception thrown: 'System.IO.FileNotFoundException' in mscorlib.dll ("Could not load file or assembly 'Microsoft.ActiveDirectory.Management' or one of its dependencies. The system cannot find the file specified.")
Exception thrown: 'System.Management.Automation.PSArgumentException' in System.Management.Automation.dll ("The Windows PowerShell snap-in 'Microsoft.ActiveDirectory.Management' is not installed on this computer.")
Jede Hilfe oder Vorschlag wird sehr geschätzt.
Ihre Ausnahme # 2 besagt eindeutig, dass der angegebene Pfad nicht existiert, Sie sollten das zuerst überprüfen, und ich glaube, es ist das seme-Problem für die anderen. – abichango
Ich habe den referenzierten Pfad auf der Ausnahme überprüft und das Verzeichnis ist dort und es gibt Dateien darin, obwohl ich nicht sicher bin, wenn im referenzierten Verzeichnis Dateien fehlen. –
Wenn Sie in einer 32-Bit-VB.NET-Anwendung sind, müssen Sie in C suchen: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \ Module –