none
PS Script nur auf Server ausführbar RRS feed

  • Frage

  • Moin

    Ich habe einen PS Script geschrieben der über VPN auf eine DB Mysql zugreift und Daten ausliest, auf dem Server funktioniert dies. ( die Datei liegt auch auf dem Server und soll von da aufgerufen werden )

    Rufe ich die Script Datei von einen Clienten übers Netzwerk auf , bekomme ich immer diese Fehler.

    \\rma\ActivateOS\activate.ps1 : System.Management.Automation.MethodInvocationException: Ausnahme beim Aufrufen von
    "Open" mit 0 Argument(en):  "Unable to connect to any of the specified MySQL hosts." --->
    MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts. --->
    MySql.Data.MySqlClient.MySqlException: Timeout expired.  The timeout period elapsed prior to completion of the
    operation or the server is not responding.
       bei MySql.Data.Common.StreamCreator.GetTcpStream(MySqlConnectionStringBuilder settings)
       bei MySql.Data.MySqlClient.NativeDriver.Open()
       --- Ende der internen Ausnahmestapelüberwachung ---
       bei MySql.Data.MySqlClient.NativeDriver.Open()
       bei MySql.Data.MySqlClient.Driver.Open()
       bei MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
       bei MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
       bei MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
       bei MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
       bei MySql.Data.MySqlClient.MySqlPool.GetConnection()
       bei MySql.Data.MySqlClient.MySqlConnection.Open()
       bei CallSite.Target(Closure , CallSite , Object )
       --- Ende der internen Ausnahmestapelüberwachung ---
       bei System.Management.Automation.ExceptionHandlingOps.CheckActionPreference(FunctionContext funcContext, Exception
    exception)
       bei System.Management.Automation.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
       bei System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
       bei System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction.Run(InterpretedFrame frame)
    In Zeile:1 Zeichen:91
    + ... tionPolicy -Scope Process Bypass }; & '\\rma\ActivateOS\activate.ps1'
    +                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
        + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,activate.ps1

    vom Server aufgerufen funktioniert dies :

    PS D:\ActivateOS> D:\ActivateOS\activate.ps1
    Bitte geben Sie die Kundenbestellnummer ein!: 123456
    Aktivierung mit Windows-Key NXXXX-RXXXX-HXXXX-GXXXX-8XXXX von Kunde : 123456
    Ihre Windows Version wurde aktiviert

    Warum funktioniert dies von den Clients übers Netzwerk nicht???

    MFG


    Donnerstag, 17. Oktober 2019 13:56

Antworten

  • Lässt sich, ohne den Code zu sehen, nicht beantworten. Die Fehlermeldung sagt nur aus, dass er den angegebenen Server nicht erreichen kann. Nicht warum.

    Da das Skript auf dem Server ausgeführt funktioniert und vom Client (per Freigabe??) nicht. Würde ich mal raten, das es daran liegt in welchem Kontext das Skript ausgeführt wird.

    Wenn du das Skript von einem Client per Freigabe ausführst, wird das Skript unter dem User ausgeführt, den du auf dem Client für den Zugriff nutzt. Es könnten also sein, dass du in dem Skript auf Pfade des Servers zugreifst, die gibt es dann natürlich auf deinem Client nicht und das Skript weiß nicht, das du Pfade auf dem Quellserver meinst.

    etc. etc. etc.

    Normalerweise verwendet man Powershellboardmittel, um vom Client Remote Code auf einem Zielgerät auszuführen. Sowas wie invoke-command z.B.

    Gruß
    Donnerstag, 17. Oktober 2019 14:14
  • Da MySQL per TCP connection will, solltest du prüfen ob der Port 3306 für MySQL in der Firewall auch freigegeben ist.
    Dies betrifft den Port auf dem Client als auch auf dem Server.
    Donnerstag, 17. Oktober 2019 15:47

Alle Antworten

  • Lässt sich, ohne den Code zu sehen, nicht beantworten. Die Fehlermeldung sagt nur aus, dass er den angegebenen Server nicht erreichen kann. Nicht warum.

    Da das Skript auf dem Server ausgeführt funktioniert und vom Client (per Freigabe??) nicht. Würde ich mal raten, das es daran liegt in welchem Kontext das Skript ausgeführt wird.

    Wenn du das Skript von einem Client per Freigabe ausführst, wird das Skript unter dem User ausgeführt, den du auf dem Client für den Zugriff nutzt. Es könnten also sein, dass du in dem Skript auf Pfade des Servers zugreifst, die gibt es dann natürlich auf deinem Client nicht und das Skript weiß nicht, das du Pfade auf dem Quellserver meinst.

    etc. etc. etc.

    Normalerweise verwendet man Powershellboardmittel, um vom Client Remote Code auf einem Zielgerät auszuführen. Sowas wie invoke-command z.B.

    Gruß
    Donnerstag, 17. Oktober 2019 14:14
  • Da MySQL per TCP connection will, solltest du prüfen ob der Port 3306 für MySQL in der Firewall auch freigegeben ist.
    Dies betrifft den Port auf dem Client als auch auf dem Server.
    Donnerstag, 17. Oktober 2019 15:47