Ich versuche, Informationen zu den SQL Server-Diensten auf Remotecomputern mithilfe von SMO durch ein Powershell-Skript zu sammeln. Mein Code scheint mit mehreren Instanzen auf dem Server zu funktionieren, wenn sie dieselbe SQL Server-Version verwenden.Auflisten von SQL Server-Diensten mit zwei verschiedenen Versionen von SQL Server auf dem Server
Mein Problem ist, dass, wenn zwei Instanzen installiert sind, die verschiedene Versionen von SQL Server sind, nur ein Satz von Diensten in dem ManagedComputer-Objekt, das ich erstelle, vorhanden ist.
Insbesondere habe ich eine EXPRESS-Installation von SQL Server 2008 R2, als eine benannte Instanz namens "SQLEXPRESS". Die Standardinstanz von SQL Server 2012. Der Code unten den unten Ausgang gibt, die die 2012 Dienstleistungen fehlt:
PS C:\od\scripts\Powershell\ServerInventory> [void][reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")
PS C:\od\scripts\Powershell\ServerInventory> $s = New-Object -typeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer myComputer
PS C:\od\scripts\Powershell\ServerInventory> $s.services.name
MSSQL$SQLEXPRESS
SQLAgent$SQLEXPRESS
SQLBrowser
PS C:\od\scripts\Powershell\ServerInventory> $s
ConnectionSettings : Microsoft.SqlServer.Management.Smo.Wmi.WmiConnectionInfo
Services : {MSSQL$SQLEXPRESS, SQLAgent$SQLEXPRESS, SQLBrowser}
ClientProtocols : {}
ServerInstances : {MSSQLSERVER, SQLEXPRESS}
ServerAliases : {}
Urn : ManagedComputer[@Name='myComputer']
Name : myComputer
Properties : {}
UserData :
State : Existing
Für die Managed Objekt, sehe ich nicht die Möglichkeit, es irgendetwas zu passieren andere als die Computername, auf dem ich ausgeführt werde, nichts, was für eine SQL Server-Instanz spezifisch ist.
Ich bin auf der Suche nach einer Möglichkeit, Informationen über beide Dienste der Instanz zu sammeln.
Ich kann das nicht reproduzieren. Was ist mein Computer? Es ist kein gültiger Name oder eine Variable. Ist 'myComputer' der eigentliche Name Ihrer Maschine? Vielleicht verbinden Sie sich mit der falschen Maschine. Versuchen Sie mit '.' anstelle von' myComputer' –
Ja, 'myComputer' ist der Computername, ich änderte es vom tatsächlichen Computernamen. Ich habe versucht, remote und auf der Maschine selbst vergebens, mit dem Namen und '.' – SQLEnforcer
@Panagiotis haben Sie einen Server mit zwei verschiedenen Versionen von SQL Server läuft? – SQLEnforcer