For IT administration of a Report Server instance, you will occasionally need to use WMI. We try to ease this to some extent by exposing a command line tool rsconfig.exe as well as the RS Configuration Tool UI. That said, sometimes you just need to talk to WMI directly – and for that PowerShell is a great tool!
Here are a couple of script fragments that I have used in the past:
# Gem 1 - Enumerate All Instances # $computer = "JGALLA7" $namespaces = gwmi -class "__NAMESPACE" -namespace "root\Microsoft\SqlServer\ReportServer" -computer $computer [string]$fn = $namespaces[0].Name # any of the namespaces can be used to enumerate all instances $instances = gwmi -class MSReportServer_Instance -namespace "root\Microsoft\SqlServer\ReportServer\$fn\v10" -computer $computer $instances | ft InstanceName,EditionName,Version #InstanceName EditionName Version #------------ ----------- ------- #MSSQLSERVER ENTERPRISE EVALUATION EDITION #### #ELEND ENTERPRISE EVALUATION EDITION #### #VIN ENTERPRISE EVALUATION EDITION #### #SAZED DEVELOPER EDITION #### # Gem 2 - get service account of each instance $configurations = gwmi -class MSReportServer_ConfigurationSetting -namespace "root\Microsoft\SqlServer\ReportServer\$fn\v10\Admin" -computer $computer $configurations | ft InstanceName,ServiceName,WindowsServiceIdentityConfigured #InstanceName ServiceName WindowsServiceIdentityConfigured #------------ ----------- -------------------------------- #MSSQLSERVER ReportServer redmond\#### #ELEND ReportServer$ELEND NT Authority\NetworkService #VIN ReportServer$VIN NT Authority\NetworkService #SAZED ReportServer$SAZED NT AUTHORITY\NETWORK SERVICE # Gem 3 - Update Service Account Password of each instance using a particular user name $username = "redmond\####" $newpassword = "mynewpassword" foreach ($update in $configurations | where {$_.WindowsServiceIdentityConfigured -eq $username}) { $update.SetWindowsServiceIdentity(0, $username, $newpassword) }
# Gem 1 - Enumerate All Instances #
$computer = "JGALLA7" $namespaces = gwmi -class "__NAMESPACE" -namespace "root\Microsoft\SqlServer\ReportServer" -computer $computer [string]$fn = $namespaces[0].Name
# any of the namespaces can be used to enumerate all instances $instances = gwmi -class MSReportServer_Instance -namespace "root\Microsoft\SqlServer\ReportServer\$fn\v10" -computer $computer $instances | ft InstanceName,EditionName,Version
#InstanceName EditionName Version #------------ ----------- ------- #MSSQLSERVER ENTERPRISE EVALUATION EDITION #### #ELEND ENTERPRISE EVALUATION EDITION #### #VIN ENTERPRISE EVALUATION EDITION #### #SAZED DEVELOPER EDITION ####
# Gem 2 - get service account of each instance
$configurations = gwmi -class MSReportServer_ConfigurationSetting -namespace "root\Microsoft\SqlServer\ReportServer\$fn\v10\Admin" -computer $computer $configurations | ft InstanceName,ServiceName,WindowsServiceIdentityConfigured
#InstanceName ServiceName WindowsServiceIdentityConfigured #------------ ----------- -------------------------------- #MSSQLSERVER ReportServer redmond\#### #ELEND ReportServer$ELEND NT Authority\NetworkService #VIN ReportServer$VIN NT Authority\NetworkService #SAZED ReportServer$SAZED NT AUTHORITY\NETWORK SERVICE
# Gem 3 - Update Service Account Password of each instance using a particular user name $username = "redmond\####" $newpassword = "mynewpassword" foreach ($update in $configurations | where {$_.WindowsServiceIdentityConfigured -eq $username}) { $update.SetWindowsServiceIdentity(0, $username, $newpassword) }
Some additional useful links: