Jump to content
FaFu198

PowerShell Invoke-Command SQL Verbindung

Recommended Posts

Hallo zusammen,

 

ich möchte folgendes Skripten.

 

Über ein Invoke-Command bauen ich mittels Schleife eine Verbindung zu einem Server auf und will von dort aus einen Befehl ausführen.

 

Auf dem jeweiligen Server soll ein Wert ausgelesen werden und in eine MSSQL Datenbank geschrieben werden. Führe ich mein Skript lokal aus, bekomme ich keinen Fehler. Führe ich es Remote aus, will er trotz Username und PW Angabe eine Verbindung als Anonymous aufbauen.

 

Könnt ihr mir sagen, wie ich das besser realisieren kann.

 

 

*Ich könnte den Wert in eine Variable schreiben und wieder zurück geben, aber ich möchte gerne diese Variante einmal testen.

 

 

$Result = Invoke-Command -ComputerName $ClusterHostObjekt{

            $ClusterObjekt_Invoke = $using:ClusterObjekt.Name
            $ClusterHostObjekt_Invoke = $using:ClusterHostObjekt
            $datum = $using:datum


            # Aufbau DB Verbindung
			$DBServer = "DB_Server.test.net"
			$Connection = New-Object System.Data.SQLClient.SQLConnection

			$Connection.ConnectionString = "User ID=sa;Password=PASSWORD;server='$DBServer';trusted_connection=true;"

             
			$Connection.Open()
            $Command = New-Object System.Data.SQLClient.SQLCommand
            $Command.Connection = $Connection
            $Connection.Close()

}

In diesem Skript will ich nur eine Verbindung aufbauen und wieder schließen. Leider kommt dann diese Meldung

 

Ausnahme beim Aufrufen von "Open" mit 0 Argument(en): "Fehler bei der Anmeldung für den Benutzer "NT-AUTORITÄT\ANONYMOUS-ANMELDUNG"."

 

 

Vielleicht kennt jemand die Lösung

 

Vielen Dank

 

MfG

Sebastian

 

Share this post


Link to post
Share on other sites

https://docs.microsoft.com/en-us/dotnet/framework/data/adonet/connection-string-syntax

Mit Trusted_Connection versuchst du eine Windows Anmeldung. Du übergibst aber die SQL User Credentials. Entweder das eine oder das andere.

Remote hat er aber für die Windows Anmeldung keine Credentials. Hierfür würdest du CredSSD brauchen, was man aber aus Security Sicht nicht möchte (hier laden die Credentials auf dem Zielsystem).

Share this post


Link to post
Share on other sites

Hallo,

 

vielen Dank für die Antwort. Wenn ich den User sa nicht mit angebe, habe ich immer noch die Fehlermeldung.

 

$Connection.ConnectionString = "server='$DBServer';trusted_connection=true;Integrated Security=SSPI"

 

Was genau muss ich machen, damit der User, mit dem ich das Skript starte übergeben wird?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...