| 

.NET C# Java Javascript Exception

2
Das GUI-Geklicke nervt, vor allem, wenn im Rahmen eines Windows-Upgrades mehrere Rechner gleichgezogen werden sollen. Bislang hab ich bei M$ nur den lapidaren Hinweis gefunden, dass es keine Konsolenprogramme gäbe, die den Reporting Services Configuration Manager RSCM ersetzen, und ich möge doch WMI programmmieren. Hat das jemand von euch schon gemacht, könnte sie / er mir ein Gerüst zur Verfügung stellen, von dem ich ausgehen kann? Gibt es (weniger aufwändige) Alternativen zu WMI über .NET?

Folgende Aufgaben will ich programmieren oder als erste Näherung scripten:

1. Ausführendes Konto des lokalen Reporting-Server-Dienstes ändern, dafür wird natürlich der Dienst beendet und neu gestartet,

2. die URL des Webdienstes / das virtuelle Verzeichnis setzen,

3. eine Berichtsserver-Datenbank erstellen, dabei Instanznamen und ausführendes Konto setzen,

4. die Berichts-Manager-URL setzen,

5. einem neu anzulegenden Reporting-Services-User die Rolle "Content Manager" zuweisen. Dieser Schritt wird per GUI und Mausgeschubse nicht im RSCM erledigt, sondern im Berichts-Manager. Als besondere Herausforderung verlangt 5., dass der Administrator-Account aktiviert, mit Kennwort versehen, der Berichts-Manager in einer Administrator-Loginsitzung im Browser gestartet und die "Intranet-Einstellungen" des IE aktiviert werden.

Dem MSSQL-Setup kann ich die Konfiguration des Reporting Services nicht überlassen, denn das kennt nur 3 Optionen: 1. Installation im Native mode mit Default-Konfiguration, 2. Installation zur Zusammenarbeit mit Sharepoint, 3. nur Dateien kopieren, später manuell konfigurieren. 1. und 2. trifft für uns nicht zu. Also hier 3., und danach RSCM = zeitraubendes Mausgeschubse.
13.09.2012
mupan 575 1 8
mupan 575 1 8
http://tfl09.blogspot.de/2008/12/discovering-wmi-and-networking-with.html: Da gibt einen WMI Explorer, der nicht nur Browsen erlaubt, sondern auch PowerShell-Code erzeugt. Das ist schon mal nicht schlecht, hilft aber erst, wenn ich weiß, was genau ich brauche, um 1., 2., 3. ... auszuführen.
mupan 13.09.2012
1 Antwort
1
Jemand hat mich auf den richtigen Namespace und darin die zuständige Klasse aufmerksam gemacht:

Class: MSReportServer_ConfigurationSetting

Namespace: root\Microsoft\SqlServer\ReportServer\RS_SQLEXPRESS\V10\Admin

Ref: http://technet.microsoft.com/en-us/library/ms154648%28v=sql.105%29.aspx

Mein gesamtes Setup-Projekt soll in PowerShell passieren, deshalb setze ich das in PowerShell um: Mit Get-WMIObject eine Collection der MSSQL-Instanzen holen, über die iterieren, die benannte Instanz erkennen, und in der alles einstellen, was im RSCM per GUI auch geht. Gar nicht so schwer, wenn man einmal sieht, wie's geht. Durch das Codebeispiel hab ich begriffen, wie's grundsätzlich geht, und kann mit den Informationen in der Literatur und in der WMI was anfangen.

Grundsätzliches zur WMI mit PowerShell steht z.B. auf powershell.com oder auf 50 Seiten in Kapitel 14 in Windows PowerShell 2.0, Das Praxisbuch.

In der Technet-Referenz sind übrigens Sharp- und VB.NET-Beispiele, das wird den meisten hier näher sein.

Ich bin noch lange nicht fertig: Der RSCM hat auch das Anlegen der ReportServer-DB in meiner Instanz übernommen, das muss ich beim programmatischen Konfigurieren über WMI anscheinend mit T-SQL erledigen. Und 5. ist noch ein anderes Gebäude in meiner Großbaustelle.

Meine Frage hier ist aber beantwortet. Ich darf das nur noch nicht selbst als Antwort markieren; dazu gibt es Diskussionen hier auf codekicker, ob und wie die umgesetzt werden, wissen wir aber noch nicht.

#Snippets (PowerShell 2, MSSQL 2008 R2)
#...
$RSNameSpace = "root\Microsoft\SqlServer\ReportServer\RS_SQLEXPRESS\V10\Admin"
$SSRSs = Get-WmiObject -Class "MSReportServer_ConfigurationSetting" -Namespace $RSNameSpace
#...
foreach ($SSRS in $SSRSs
{
if ($SSRS.InstanceName = "SQLEXPRESS")
{
#...
$SSRS.SetServiceState($false, $false, $false);
$SSRS.SetWindowsServiceIdentity($true, "", "");
$SSRS.SetServiceState($true, $true, $true);
#...
}
}
22.09.2012
mupan 575 1 8
mupan 575 1 8

Stelle deine .net-Frage jetzt!