구독 소유자를 관리 하 고 구독-PowerShell 실행Manage Subscription Owners and Run Subscription - PowerShell

도움이 필요하세요? 도움이 필요하세요? MSDN 포럼, Stackoverflow, ConnectNeed help? Need help? MSDN Forum, Stackoverflow, Connect

SQL Server 2008 R2SQL Server 2008 R2 Reporting ServicesReporting Services 부터 Reporting ServicesReporting Services 구독 소유권을 프로그래밍 방식으로 한 사용자에서 다른 사용자에게 전송할 수 있습니다.Starting with SQL Server 2008 R2SQL Server 2008 R2 Reporting ServicesReporting Services you can programmatically transfer the ownership of a Reporting ServicesReporting Services subscription from one user to another. 이 항목에서는 구독 소유권을 변경하거나 단순히 나열할 수 있는 여러 가지 Windows PowerShell 스크립트를 제공합니다.This topic provides several Windows PowerShell scripts you can use to change or simply list subscription ownership. 각 샘플에는 기본 모드 및 SharePoint 모드에 대한 샘플 구문이 포함됩니다.Each sample includes sample syntax for both Native mode and SharePoint mode. 구독 소유자를 변경한 후 구독은 새 소유자의 보안 컨텍스트에서 실행되고, 보고서의 User!UserID 필드에 새 소유자 값이 표시됩니다.After you change the subscription owner, the subscription will then execute in the security context of the new owner, and the User!UserID field in the report will display the value of new owner. PowerShell 샘플의 개체 모델에 대한 자세한 내용은 ChangeSubscriptionOwnerFor more information on the object model the PowerShell samples call, see ChangeSubscriptionOwner

PowerShell 관련 내용PowerShell related content

||
|-|
| 적용 대상:Applies to: Reporting ServicesReporting Services 기본 모드 | Reporting ServicesReporting Services SharePoint 모드 적용 대상:Applies to: Reporting ServicesReporting Services Native mode | Reporting ServicesReporting Services SharePoint mode|

항목 내용 In this topic:

스크립트 사용 방법 How to use the scripts

PermissionsPermissions

이 섹션에서는 기본 모드와 SharePoint 모드 Reporting ServicesReporting Services의 각 메서드를 사용하기 위해 필요한 권한 수준을 요약합니다.This section summarizes the permission levels required to use each of the methods for both Native and SharePoint mode Reporting ServicesReporting Services. 이 항목의 스크립트는 다음 Reporting ServicesReporting Services 메서드를 사용합니다.The scripts in this topic use the following Reporting ServicesReporting Services methods:

스크립트 사용자Script usage

스크립트 파일(.ps1) 만들기Create Script files (.ps1)

  1. 이름이 c:\scripts인 폴더를 만듭니다.Create a folder named c:\scripts. 다른 폴더를 선택하는 경우 예제 명령줄 구문에 사용된 폴더 이름을 수정합니다.If you choose a different folder then modify the folder name used in the example command line syntax statements.

  2. 각 스크립트의 텍스트 파일을 만들고 c:\scripts 폴더에 파일을 저장합니다.Create a text file for each script and save the files to the c:\scripts folder. .ps1 파일을 만들 때 각 예제 명령줄 구문의 이름을 사용합니다.When you create the .ps1 files, use the name from each example command line syntax.

  3. 관리 권한으로 명령 프롬프트를 엽니다.Open a command prompt with administrative privileges.

  4. 각 예제에 제공된 샘플 명령줄 구문을 사용하여 각 스크립트 파일을 실행합니다.Run each script file, using the sample command line syntax provided with each example.

    테스트 완료된 환경Tested environments

    이 항목의 스크립트는 PowerShell 버전 3 및 Reporting ServicesReporting Services의 다음 버전에서 테스트되었습니다.The scripts in this topic were tested on PowerShell version 3 and with the following versions of Reporting ServicesReporting Services:

  • SQL Server 2014SQL Server 2014

  • SQL Server 2012SQL Server 2012

  • SQL Server 2008 R2SQL Server 2008 R2

스크립트: 모든 구독의 소유권 나열 Script: List the ownership of all subscriptions

이 스크립트는 사이트의 모든 구독을 나열합니다.This script lists all of the subscriptions on a site. 이 스크립트를 사용하여 연결을 테스트하거나 다른 스크립트에서 사용하는 보고서 경로 및 구독 ID를 확인할 수 있습니다.You can use this script to test your connection or to verify the report path and subscription id for use in the other scripts. 또한 어떤 구독이 존재하며 누가 소유하는지 간단하게 감사할 수 있는 유용한 스크립트입니다.This is also a useful script to simply audit what subscriptions exist and who owns them.

기본 모드 구문:Native mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/reportserver" "/"  

SharePoint 모드 구문:SharePoint mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/_vti_bin/reportserver" "http://[server]"  

스크립트:Script:

# Parameters  
#    server   - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)  

Param(  
    [string]$server,  
    [string]$site  
   )  

$rs2010 += New-WebServiceProxy -Uri "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;  
$subscriptions += $rs2010.ListSubscriptions($site); # use "/" for default native mode site  

Write-Host " "  
Write-Host "----- $server's Subscriptions: "  
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted, Status  

SharePoint 모드에서 사이트 URL을 확인하려면 SharePoint cmdlet Get-SPSite를 사용합니다.To verify site URLS in SharePoint mode, use the SharePoint cmdlet Get-SPSite. 자세한 내용은 Get-SPSite를 참조하세요.For more information, see Get-SPSite.

스크립트: 특정 사용자가 소유하는 모든 구독 나열 Script: List all subscriptions owned by a specific user

이 스크립트는 특정 사용자가 소유하는 모든 구독을 나열합니다.This script lists all of the subscriptions owned by a specific user. 이 스크립트를 사용하여 연결을 테스트하거나 다른 스크립트에서 사용하는 보고서 경로 및 구독 ID를 확인할 수 있습니다.You can use this script to test your connection or to verify the report path and subscription id for use in the other scripts. 이 스크립트는 조직의 누군가가 떠나고 이들이 소유하고 있던 구독을 확인하여 소유자를 변경하거나 구독을 삭제하려고 할 때 유용합니다.This script is useful when someone in your organization leaves and you want to verify what subscriptions they owned so you can change the owner or delete the subscription.

기본 모드 구문:Native mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "[server]/reportserver" "/"  

SharePoint 모드 구문:SharePoint mode syntax:

powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]"  "[server]/_vti_bin/reportserver" "http://[server]"  

스크립트:Script:

# Parameters:  
#    currentOwner - DOMAIN\USER that owns the subscriptions you wish to change  
#    server        - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)  
#    site        - use "/" for default native mode site  
Param(  
    [string]$currentOwner,  
    [string]$server,  
    [string]$site  
)  

$rs2010 = New-WebServiceProxy -Uri "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;  
$subscriptions += $rs2010.ListSubscriptions($site);  

Write-Host " "  
Write-Host " "  
Write-Host "----- $currentOwner's Subscriptions: "  
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status | where {$_.owner -eq $currentOwner}  

스크립트: 특정 소유자가 소유하는 모든 구독의 소유권 변경 Script: Change ownership for all subscriptions owned by a specific user

이 스크립트는 특정 소유자가 소유하는 모든 구독의 소유권을 새 소유자 매개 변수로 변경합니다.This script changes the ownership for all subscriptions owned by a specific user to the new owner parameter.

기본 모드 구문:Native mode syntax:

powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\current owner]" "[Domain]\[new owner]" "[server]/reportserver"  

SharePoint 모드 구문:SharePoint mode syntax:

powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\{current owner]" "[Domain]\[new owner]" "[server]/_vti_bin/reportserver"  

스크립트:Script:

# Parameters:  
#    currentOwner - DOMAIN\USER that owns the subscriptions you wish to change  
#    newOwner      - DOMAIN\USER that will own the subscriptions you wish to change  
#    server        - server and instance name (e.g. myserver/reportserver, myserver/reportserver_db2, myserver/_vti_bin/reportserver)  

Param(  
    [string]$currentOwner,  
    [string]$newOwner,  
    [string]$server  
)  

$rs2010 = New-WebServiceProxy -Uri "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;  
$items = $rs2010.ListChildren("/", $true);  

$subscriptions = @();  

ForEach ($item in $items)  
{  
    if ($item.TypeName -eq "Report")  
    {  
        $curRepSubs = $rs2010.ListSubscriptions($item.Path);  
        ForEach ($curRepSub in $curRepSubs)  
        {  
            if ($curRepSub.Owner -eq $previousOwner)  
            {  
                $subscriptions += $curRepSub;  
            }  
        }  
    }  
}  

Write-Host " "  
Write-Host " "  
Write-Host -foregroundcolor "green" "-----  $currentOwner's Subscriptions changing ownership to $newOwner : "  
$subscriptions | select SubscriptionID, Owner, Path, Description,  Status  | format-table -AutoSize  

ForEach ($sub in $subscriptions)  
{  
    $rs2010.ChangeSubscriptionOwner($sub.SubscriptionID, $newOwner);  
}  

$subs2 = @();  

ForEach ($item in $items)  
{  
    if ($item.TypeName -eq "Report")  
    {  
        $subs2 += $rs2010.ListSubscriptions($item.Path);  
    }  
}  

스크립트: 특정 보고서와 연결된 모든 구독 나열 Script: List all subscriptions associated with a specific report

이 스크립트는 특정 보고서와 연결된 모든 구독을 나열합니다.This script lists all of the subscriptions associated with a specific report. 보고서 경로 구문은 전체 URL이 필요한 다른 SharePoint 모드입니다.The report path syntax is different SharePoint mode which requires a full URL. 구문 예제에서 사용된 보고서 이름은 “title only”이며 공백을 포함하고 있으므로 보고서 이름을 작은따옴표로 묶어야 합니다.In the syntax examples, the report name used is “title only”, which contains a space and therefore requires the single quotes around the report name.

기본 모드 구문:Native mode syntax:

powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/reportserver" "'/reports/title only'" "/"  

SharePoint 모드 구문:SharePoint mode syntax:

powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/_vti_bin/reportserver"  "'http://[server]/shared documents/title only.rdl'" "http://[server]"  

스크립트:Script:

# Parameters:  
#    server      - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)  
#    reportpath  - path to report in the report server, including report name e.g. /reports/test report >> pass in  "'/reports/title only'"  
#    site        - use "/" for default native mode site  
Param  
(  
      [string]$server,  
      [string]$reportpath,  
      [string]$site  
)  

$rs2010 = New-WebServiceProxy -Uri "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;  
$subscriptions += $rs2010.ListSubscriptions($site);  

Write-Host " "  
Write-Host " "  
Write-Host "----- $reportpath 's Subscriptions: "  
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status | where {$_.path -eq $reportpath}  

스크립트: 특정 구독의 소유권 변경 Script: Change ownership of a specific subscription

이 스크립트는 특정 구독의 소유권을 변경합니다.This script changes the ownership for a specific subscription. 구독은 스크립트에 전달하는 SubscriptionID로 식별됩니다.The subscription is identified by the SubscriptionID that you pass into the script. 구독 나열 스크립트 중 하나를 사용하여 올바른 SubscriptionID를 확인할 수 있습니다.You can use one of the list subscription scripts to determine the correct SubscriptionID.

기본 모드 구문:Native mode syntax:

powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/reportserver" "/" "ac5637a1-9982-4d89-9d69-a72a9c3b3150"  

SharePoint 모드 구문:SharePoint mode syntax:

powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/_vti_bin/reportserver" "http://[server]" "9660674b-f020-453f-b1e3-d9ba37624519"  

스크립트:Script:

# Parameters:  
#    newOwner       - DOMAIN\USER that will own the subscriptions you wish to change  
#    server         - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)  
#    site        - use "/" for default native mode site  
#    subscriptionID - guid for the single subscription to change  

Param(  
    [string]$newOwner,  
    [string]$server,  
    [string]$site,  
    [string]$subscriptionid  
   )  
$rs2010 = New-WebServiceProxy -Uri "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential;  

$subscription += $rs2010.ListSubscriptions($site) | where {$_.SubscriptionID -eq $subscriptionid};  

Write-Host " "  
Write-Host "----- $subscriptionid's Subscription properties: "  
$subscription | select Path, report, Description, SubscriptionID, Owner, Status  

$rs2010.ChangeSubscriptionOwner($subscription.SubscriptionID, $newOwner)  

#refresh the list  
$subscription = $rs2010.ListSubscriptions($site) | where {$_.SubscriptionID -eq $subscriptionid}; # use "/" for default native mode site  
Write-Host "----- $subscriptionid's Subscription properties: "  
$subscription | select Path, report, Description, SubscriptionID, Owner, Status  

스크립트: 단일 구독 실행 Script: Run (fire) a single subscription

이 스크립트는 FireEvent 메서드를 사용하여 특정 구독을 실행합니다.This script will run a specific subscription using the FireEvent method. 이 스크립트는 구독에 구성된 일정에 상관없이 구독을 즉시 실행합니다.The script will immediately run the subscription regardless of the schedule configured for the subscription. EventType은 보고서 서버 구성 파일 rsreportserver.config 에 정의된 알려진 이벤트 집합과 일치합니다. 이 스크립트는 표준 구독에 대해 다음 이벤트 유형을 사용합니다.The EventType is matched against the known set of events that are defined in the report server configuration file rsreportserver.config The script uses the following event type for standard subscriptions:

<Event>

<Type>TimedSubscription</Type>

</Event>

구성 파일에 대한 자세한 내용은 RsReportServer.config Configuration File을 참조하세요.For more information on the configuration file, see RsReportServer.config Configuration File.

스크립트에는 지연 논리 “Start-Sleep -s 6”이 포함되어 있으므로, 업데이트된 상태가 ListSubscription 메서드를 통해 사용 가능할 수 있도록 이벤트 발생 후 시간이 있습니다.The script includes delay logic “Start-Sleep -s 6” so there is time after the event fires, for the updated status to be available with the ListSubscription method.

기본 모드 구문:Native mode syntax:

powershell c:\scripts\FireSubscription.ps1 "[server]/reportserver" $null "70366e82-2d3c-4edd-a216-b97e51e26de9"  

SharePoint 모드 구문:SharePoint mode syntax:

powershell c:\scripts\FireSubscription.ps1 "[server]/_vti_bin/reportserver" "http://[server]" "c3425c72-580d-423e-805a-41cf9799fd25"  

스크립트:Script:


# Parameters  
#    server         - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)  
#    site           - use $null for a native mode server  
#    subscriptionid - subscription guid  

Param(  
  [string]$server,  
  [string]$site,  
  [string]$subscriptionid  
  )  

$rs2010 = New-WebServiceProxy -Uri "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;  
#event type is case sensative to what is in the rsreportserver.config  
$rs2010.FireEvent("TimedSubscription",$subscriptionid,$site)  

Write-Host " "  
Write-Host "----- Subscription ($subscriptionid) status: "  
#get list of subscriptions and filter to the specific ID to see the Status and LastExecuted  
Start-Sleep -s 6 # slight delay in processing so ListSubscription returns the updated Status and LastExecuted  
$subscriptions = $rs2010.ListSubscriptions($site);   
$subscriptions | select Status, Path, report, Description, Owner, SubscriptionID, EventType, lastexecuted | where {$_.SubscriptionID -eq $subscriptionid}  

관련 항목:See Also

ReportingService2010.ListSubscriptions 메서드ReportingService2010.ListSubscriptions Method

ReportingService2010.ChangeSubscriptionOwner 메서드ReportingService2010.ChangeSubscriptionOwner Method

ReportingService2010.ListChildrenReportingService2010.ListChildren

ReportingService2010.FireEventReportingService2010.FireEvent