Измените получение учетных данных в SSRS с powershell - PullRequest
1 голос
/ 05 ноября 2019

Я хочу изменить получение учетных данных источника данных SSRS с помощью следующих учетных данных на Без учетных данных с powershell и сценарием не удается

Я хочу изменить значение «Store» на «None» в соответствии с этой статьей: https://docs.microsoft.com/en-us/dotnet/api/reportservice2010.credentialretrievalenum?view=sqlserver-2016#ReportService2010_CredentialRetrievalEnum_None

Это мой код:

$uri ='http://ServerName/ReportServer/ReportService2010.asmx?wsdl'

$reporting = New-WebServiceProxy -uri $uri -UseDefaultCredential -namespace "ReportingWebService"
$DataSources = $reporting.ListChildren('/', $true) | Where-Object  {$_.Name -eq "DataSourceName"}   

  foreach($Object in $DataSources) {
   $dataSource =$reporting.GetDataSourceContents($Object.path)
   #$dataSource.CredentialRetrieval="None"
  $dataSource.CredentialRetrieval=[ReportingWebService.CredentialRetrievalEnum]::None
   $reporting.SetDataSourceContents($Object.path,$dataSource)
 }

Исключение вызывает "SetDataSourceContents" с аргументом (ами) "2": "Комбинация значений для полей UserName и CredentialRetrieval недопустима. ---> Microsoft.ReportingServices.Diagnostics.Utilities.InvalidElementCombinationException: комбинация значений для полей UserName и CredentialRetrieval недопустима. "В строке: 13 символов: 4 + $ reports.SetDataSourceContents ($ Object.path, $ dataSource) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId: SoapException

1 Ответ

0 голосов
/ 09 ноября 2019

Проблема заключалась в том, что я фактически не изменил существующие параметры поиска учетных данных «Магазин» с обязательным параметром «Имя пользователя». Чтобы решить эту проблему, я должен создать новое определение источника данных с новыми настройками получения учетных данных и применить его к моему источнику данных:

$uri ='http://servername/ReportServer/ReportService2010.asmx?wsdl'
$reporting = New-WebServiceProxy -uri $uri -UseDefaultCredential
$type=$reporting.GetType().Namespace
$DataSources = $reporting.ListChildren('/', $true) | Where-Object  {$_.Name -eq "Data source name"} 

 foreach($Object in $DataSources) {
   $dataSource =$reporting.GetDataSourceContents($Object.path)
    $dataSourceDefinitionType = ($type + '.DataSourceDefinition');
    $dataSourceDefinition = New-Object ($dataSourceDefinitionType);
    $dataSourceDefinition.Extension = $dataSource.Extension; #get data from existent data source definition
    $dataSourceDefinition.ConnectString = $dataSource.ConnectString #get data from existent data source definition
    $credentialRetrievalDataType = ($type + '.CredentialRetrievalEnum'); 
    $credentialRetrieval = new-object ($credentialRetrievalDataType);
    $credentialRetrieval.value__ = 3;
    $dataSourceDefinition.CredentialRetrieval = $credentialRetrieval;
    $dataSourceDefinition.WindowsCredentials = $dataSource.WindowsCredentials; #get data from existent data source definition
    $dataSourceDefinition.Enabled = $dataSource.Enabled; #get data from existent data source definition
    $dataSourceDefinition.EnabledSpecified = $dataSource.EnabledSpecified; #get data from existent data source definition
    $reporting.SetDataSourceContents($Object.path,$dataSourceDefinition)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...