none
Get-RDConnectionBrokerHighAvailability programmatisch in .NET ausführen um aktiven Connection Broker zu ermitteln

    Frage

  • Hallo alle zusammen,

    ich versuche derzeit über den PowerShell Befehl Get-RDConnectionBrokerHighAvailability aus dem RemoteDesktop Modul den aktiven Connection Broker zu ermitteln. Das klappt per PowerShell (aus dem System32 Ordner) auch sehr gut. (Mit der aus dem SysWOW64 Ordner nicht, da dort das RemoteDesktop Modul fehlt.)

    Beispiel:
    Befehle:
    Import-Module RemoteDesktop
    Get-RDConnectionBrokerHighAvailability -ConnectionBroker "[Zufälliger Connection Broker]"
    Ausgabe:
    ActiveManagementServer   : [Name des aktiven Brokers]
    .....

    Nun bin ich dabei dies auch per (VB).NET umzusetzen. Bei der Ausführung des Befehls innerhalb eines Webprojektes bekomme ich allerdings immer die Fehlermeldung (in einer normalen EXE Anwendung funktioniert es!):
    Der RD-Verbindungsbrokerserver ist nicht verfügbar. Stellen Sie sicher, dass Sie eine Verbindung mit dem RD-Verbindungsbrokerserver herstellen können.

    Das wundert mich, da es ja in der normalen PowerShell funktioniert. Woran kann das liegen?
    Code:

    Imports System.Management.Automation
    Imports System.Management.Automation.Runspaces
    
    Dim _RS As Runspace = RunspaceFactory.CreateRunspace()
    _RS.Open()
    Dim myPL As Pipeline = _RS.CreatePipeline
    
    myPL.Commands.AddScript("Get-RDConnectionBrokerHighAvailability -ConnectionBroker ""[Zufälliger Connection Broker]""")
    
    Dim results As Collection(Of PSObject) = myPL.Invoke()
    Dim errors As PipelineReader(Of Object) = myPL.Error
    If errors.Count > 0 Then
    Dim strError As String = ""
    For Each obj As Object In errors.ReadToEnd()
    myMain.Log.SIS.LogError(obj.ToString)
    strError &= obj.ToString() & vbNewLine
    Next
    
    Throw New Exception("Unable to perform command: " & strError)
    
    End If
    myPL.Dispose()


    • Bearbeitet MarvinKlar Mittwoch, 12. September 2018 07:39
    Mittwoch, 12. September 2018 07:39

Antworten

  • Web-Projekte laufen u.U. im Internetserver isoliert und können deshalb nicht auf alle Ressourcen zugreifen.
    Mittwoch, 12. September 2018 10:35
  • Ja, es lag tatsächlich an dem Benutzer/der Identität!

    Über Anwendungspools->Webseite->Erweiterte Einstellungen->Identität lies sich ein Domänen-Benutzer mit Administrationsrechten konfigurieren.

    Nach einem Neustart der Webseite ließen sich die PowerShell Befehle problemlos ausführen!

    Vielen Dank für die Hilfe!
    Freitag, 14. September 2018 08:57

Alle Antworten