私は、SSRS Webサービスを使用してSQL Server Reporting Services 2008 R2に多数のレポートを展開するためのpowershellスクリプトを作成しています。私はこのアプローチにかなり満足しています。新しい展開フォルダを作成してレポートをアップロードするのは簡単でした。次のフォルダの作成を示すコードの抜粋です:Reporting Services 2008 R2 WebサービスAPI - どのようにセキュリティ権限を管理しますか?
$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)
私もフォルダにアクセス許可を設定できるようにしたいのですが、私は少し立ち往生していますこれはどこですが。私が複製したいのは、Web UIからフォルダのセキュリティオプションを選択し、役割に対してユーザー\グループを追加する場所です。
これは、createFolder呼び出しでpropertyArrayを使用している可能性があると思っていましたが、ドキュメント内の情報をまだ見つけることができませんでした(既存のプロパティを調べて関連するものは表示されません)。案内のためにhttp://msdn.microsoft.com/en-us/library/cc282788.aspxにある。だからそこでは行き止まりに終わった。私はこのレベルでパーミッションを管理する特定の方法があると考えていましたが、それを特定できませんでした。
私はReportingService2005 Webサービスを使用していますが、2010年のWebサービスもありますが、私が探しているものを見つけることはできませんでした。
WebサービスAPI(おそらく、レポートや共有データソースなどの他のオブジェクトの一貫したメソッド)を使用してフォルダにアクセス権を追加する方法を知っている人はいますか?私はそれが可能でなければならないと仮定します。これは、PowerShellの質問ではなく、アクセス許可の管理に使用するapiについてです。
更新 - 以下は、仕事をしていると思われるコードのスニペットです。ポリシーの更新に元のリストを含める必要があるように、これを少し修正する必要があるので、現在のポリシーを取得し、新しいポリシーを追加し、完全なリストで更新する必要があります。しかし、私は後でそれを修正します!
$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."
}