PowerShell-Skript wird von der Shell ausgeführt, nicht jedoch von meiner Anwendung

9

Ich versuche eine Windows-Anwendung zu erstellen, die verschiedene Powershell-Skripte ausführen kann.

Ich habe ein Skript, das so funktioniert, wie es sollte (wenn es von der Powershell-Eingabeaufforderung ausgeführt wird) und meine Windows-Anwendung scheint es so auszuführen, wie es sollte, aber es kann die Methoden auf meiner OU nicht finden.

Wenn ich das Skript von der Windows-Anwendung aus führe, erhalte ich folgende Meldungen:

  

FEHLER: Beim Abrufen von Element "Create" ist folgende Ausnahme aufgetreten: "There    ist kein solches Objekt auf dem Server.   "

     

FEHLER: Beim Abrufen des Mitglieds "Löschen" ist folgende Ausnahme aufgetreten: "Dort    ist kein solches Objekt auf dem Server. "

Powershell-Skript:

%Vor%

}

Der C # -Code, den ich habe, ist dies:

%Vor%     
kfuglsang 15.03.2011, 10:51
quelle

4 Antworten

0

Bei der Ausführung innerhalb von C # habe ich festgestellt, dass ich das PowerShell-Snap-In "Microsoft.Windows.AD" hinzufügen muss, bevor das Cmdlet ausgeführt werden kann.

    
kfuglsang 13.08.2011, 08:37
quelle
1

Scheint, dass Sie gerade einen Benutzer in AD erstellen. Wenn Sie mit dem c # -Code ein Powershell-Skript aufrufen, fügen Sie ein weiteres bewegliches Teil in Ihr Skript ein. Warum nicht direkt im C # -Code anrufen? Überprüfen Sie diesen Artikel MSDN .

    
Adeel 06.05.2011 21:32
quelle
0

Das Problem scheint zu sein, dass die Create-Methode für Ihr ADSI-Objekt $ou nicht existiert. Ich würde prüfen, ob es richtig erstellt wird. Führen Sie das Skript außerhalb Ihrer Anwendung aus, um sicherzustellen, dass es funktioniert, oder führen Sie eine zusätzliche Zeile mit den zugehörigen Elementen aus:

%Vor%     
Aaron Jensen 16.03.2011 00:38
quelle
0

Es scheint fast so, als ob das Runspace in der Anwendung mit einem restriktiven RunspaceConfiguration erstellt wird, sodass es System.DirectoryServices für die benötigte AD-Funktionalität nicht finden kann.

Was bekommen Sie, wenn Sie Folgendes in Ihrer Anwendung ausführen?

%Vor%

Wenn ich das unter dem Debugger in einer einfachen Konsolenanwendung ausführe, bekomme ich 28 Assemblys (19 außerhalb des Debuggers), einschließlich System.DirectoryServices . Das Bit [AppDomain]::CurrentDomain.GetAssemblies() zeigt 16, wenn ich es in einer Vanilla-Eingabeaufforderung ausführe. System.DirectoryServices wird in allen drei Listen angezeigt.

    
David Pope 21.04.2011 23:08
quelle

Tags und Links