Bir dizi raporu SSRS web hizmetlerini kullanarak SQL Server Raporlama Hizmetleri 2008 R2'ye dağıtmak için bir powershell komut dosyası yazıyorum. Yaklaşımdan oldukça memnunum, yeni bir dağıtım klasörü oluşturmak ve raporları yüklemek çok kolaydı. Ben de istiyorum AncakRaporlama hizmetleri 2008 R2 web hizmetleri api - güvenlik izinlerini nasıl yönetirim?
$reportServerUri = "http://{0}/ReportServer/ReportService2005.asmx" -f $reportServerName
$proxy = New-WebServiceProxy -Uri $reportServerUri -Namespace SSRS.ReportingService2005 -Credential $credential
#Dont currently set any properties so set empty array of properties
$propertyArray = @()
$warnings = $proxy.CreateFolder($folderName, $folderParent, $propertyArray)
klasörün izinlerini ayarlamak için muktedir ve ben biraz takılıp nerede şudur: Bir klasörün kod gösteren yaratılış snippet'idir aşağıdadır. Tekrarlamak istediğim, web kullanıcı arayüzünden, klasörün güvenlik seçeneğini seçip bir kullanıcıya karşı bir rol eklemek istiyorum.
Bunun, createFolder çağrısında propertyArray aracılığıyla gerçekleştirilebileceğini düşündüm ancak henüz dokümanda herhangi bir bilgi bulamadım (mevcut özellikleri araştırıp ilgili hiçbir şeyi göremiyorum). kılavuzluk için http://msdn.microsoft.com/en-us/library/cc282788.aspx numaralı telefondan. Öyleyse orada çıkmaz bir uca ulaştı. Bu düzeyde izinleri yönetmek için özel bir yöntem olabileceğini düşündüm ancak bir tanesini tespit edemedim.
ReportingService2005 web hizmetlerini kullanıyorum, ayrıca 2010 web hizmetlerinin olduğunu biliyorum, ancak aradığım şeyi de bulamadım.
Web hizmetleri API'sı kullanılarak klasörlere nasıl izin eklediğimi (ve raporlar ve paylaşılan veri kaynakları gibi diğer nesneler için muhtemelen tutarlı bir yöntem) herkes biliyor mu? Web arayüzünün bunu yapabilmeniz için mümkün olması gerektiğini varsayalım. Bu bir powershell sorusu değil, aiı'nın izinleri yönetmek için kullanmasıyla ilgilidir.
Güncelleştirme - Aşağıda, işin yapıldığı anlaşılan kod pasajı yer almaktadır. Politikalarda yapılan güncellemenin orijinal listeyi içermesi gerektiği için bu durumu biraz düzeltmem gerekiyor. Bu yüzden mevcut politikaları almam, yeni politikamı buna eklemem ve tam liste ile güncellemem gerekiyor. Ama bunu daha sonra düzeltirim!
$Policies = $global:ssrsproxy.GetPolicies($ItemPath, [ref] $InheritsFromParent)
$PolicyAlreadyExists = $false
$Policies | Foreach-Object{ if ($_.GroupUserName -eq $GroupUserName)
{$PolicyAlreadyExists = $true} }
$Policies | Foreach-Object{ $_ | get-member }
if ($PolicyAlreadyExists){
"Policy already applied."
} else {
$Policy = New-Object SSRS.ReportingService2005.Policy
$Policy.GroupUserName = $GroupUserName
$Roles = @()
$Role = New-Object SSRS.ReportingService2005.Role
$Role.Name = $RoleName
$Roles += $Role
$Policy.Roles = $Roles
$global:ssrsproxy.SetPolicies($ItemPath, $Policy)
"Policy applied."
}