2010-12-02 4 views
0

ich einen Powershell-Skript habe durch eine Liste von LinkedServer Objekten in einem SQL Server mit einigen Code wie folgt zu wiederholen:Zugriff LinkedServer Eigenschaften über SQL Server SMO API

foreach($linkedServer in $instance.LinkedServers) 
{  
... some code ... 
} 

Ich möchte auf der Standard-Informationen, um herauszufinden, Sicherheit eines verbundenen Servers. Um zu sehen, was ich meine, laden Sie SQL Server Management Studio und öffnen Sie einen Verbindungsserver. Wenn Sie keine haben, erstellen Sie einfach einen zu einem Remote-Server. Klicken Sie auf die Registerkarte Sicherheit, und Sie sehen eine Liste der Login-Zuordnungen für verknüpfte Server (LinkedServerLogins-Auflistung in SMO). Am unteren Rand des Bildschirms wird eine Standardeinstellung im Abschnitt "Für eine Anmeldung nicht in der Liste oben definiert ..." festgelegt. Ich kann nirgends im SMO-Objektmodell finden, um zu diesen Informationen zu gelangen. Ist es möglich?

Danke, Mark.

Antwort

0

Es scheint in der linked server login properties zu sein: in den Eigenschaften

foreach($linkedServer in $instance.LinkedServers) 
{ 
    "LinkedServer:" + $linkedServer.Name 

    foreach($linkedServerLogin in $linkedServer.LinkedServerLogins) 
    { 
     " LinkedServerLogin:" + $linkedServerLogin.Name 
     foreach($property in $linkedServerLogin.Properties) 
     { 
      " Property:" + $property.Name + " - " + $property.Value 
     } 
    } 
} 

Impersonate und RemoteUser sind enthalten.

+0

Das funktioniert, aber es gibt auch alle verknüpften Serverzuordnungen zurück. Wenn ich den LinkedServerLogin.Name für eine leere Zeichenfolge teste, scheint dies die Einstellung zu sein, die ich brauche. Das SMO-Modell ist in diesem Bereich immer noch gebrochen, glaube ich. –