Gestire i proprietari di sottoscrizioni ed eseguire la sottoscrizione - PowerShellManage Subscription Owners and Run Subscription - PowerShell

Serve aiuto? Serve aiuto? Forum MSDN, Stackoverflow, ConnectNeed help? Need help? MSDN Forum, Stackoverflow, Connect

A partire da SQL Server 2008 R2SQL Server 2008 R2 Reporting ServicesReporting Services è possibile trasferire a livello di programmazione la proprietà di una sottoscrizione Reporting ServicesReporting Services da un utente a un altro.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. In questo argomento sono disponibili alcuni script di Windows PowerShell che possono essere usati per modificare o semplicemente elencare la proprietà delle sottoscrizioni.This topic provides several Windows PowerShell scripts you can use to change or simply list subscription ownership. Ogni esempio include sintassi di esempio per la modalità nativa e la modalità SharePoint.Each sample includes sample syntax for both Native mode and SharePoint mode. Dopo la modifica del proprietario, la sottoscrizione sarà eseguita nel contesto di protezione del nuovo proprietario e nel campo User!UserID nel report sarà visualizzato il valore relativo al nuovo proprietario.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. Per altre informazioni sul modello a oggetti chiamato dagli esempi di PowerShell, vedere ChangeSubscriptionOwnerFor more information on the object model the PowerShell samples call, see ChangeSubscriptionOwner

Contenuto correlato di PowerShellPowerShell related content

||
|-|
| Si applica a:Applies to:Modalità nativa di Reporting ServicesReporting Services | Modalità SharePoint di Reporting ServicesReporting Services Si applica a:Applies to: Reporting ServicesReporting Services Native mode | Reporting ServicesReporting Services SharePoint mode|

Contenuto dell'argomento: In this topic:

Come usare gli script How to use the scripts

PermissionsPermissions

In questa sezione sono riepilogati i livelli di autorizzazione necessari per usare ogni metodo della modalità nativa e della modalità SharePoint di 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. Gli script in questo argomento usano i metodi seguenti di Reporting ServicesReporting Services :The scripts in this topic use the following Reporting ServicesReporting Services methods:

Uso degli scriptScript usage

Creare file script (con estensione ps1)Create Script files (.ps1)

  1. Creare una cartella con nome c:\scripts.Create a folder named c:\scripts. Se si sceglie una cartella diversa, modificare il nome della cartella usato nelle istruzioni di esempio della sintassi da riga di comando.If you choose a different folder then modify the folder name used in the example command line syntax statements.

  2. Creare un file di testo per ogni script e salvare i file nella cartella c:\scripts.Create a text file for each script and save the files to the c:\scripts folder. Quando si creano i file con estensione ps1, usare il nome di ogni esempio di sintassi da riga di comando.When you create the .ps1 files, use the name from each example command line syntax.

  3. Aprire un prompt dei comandi con privilegi amministrativi.Open a command prompt with administrative privileges.

  4. Eseguire ogni file script, usando l'esempio di sintassi da riga di comando disponibile in ogni esempio.Run each script file, using the sample command line syntax provided with each example.

    Ambienti testatiTested environments

    Gli script in questo argomento sono stati testati in PowerShell versione 3 e con le versioni seguenti di 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: elencare la proprietà di tutte le sottoscrizioni Script: List the ownership of all subscriptions

Questo script permette di elencare tutte le sottoscrizioni in un sito.This script lists all of the subscriptions on a site. È possibile usare questo script per testare la connessione o verificare il percorso del report e l'ID di sottoscrizione da usare in altri script.You can use this script to test your connection or to verify the report path and subscription id for use in the other scripts. Questo script è utile anche per la semplice verifica delle sottoscrizioni esistenti e dei relativi proprietari.This is also a useful script to simply audit what subscriptions exist and who owns them.

Sintassi in modalità nativa:Native mode syntax:

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

Sintassi in modalità SharePoint:SharePoint mode syntax:

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

Script: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  
Suggerimento

Per verificare gli URL del sito in modalità SharePoint, usare il cmdlet Get-SPSitedi SharePoint.To verify site URLS in SharePoint mode, use the SharePoint cmdlet Get-SPSite. Per altre informazioni, vedere Get-SPSite.For more information, see Get-SPSite.

Script: elencare tutte le sottoscrizioni di proprietà di un utente specifico Script: List all subscriptions owned by a specific user

Questo script permette di elencare tutte le sottoscrizioni di proprietà di un utente specifico.This script lists all of the subscriptions owned by a specific user. È possibile usare questo script per testare la connessione o verificare il percorso del report e l'ID di sottoscrizione da usare in altri script.You can use this script to test your connection or to verify the report path and subscription id for use in the other scripts. Questo script è utile se un utente abbandona l'organizzazione e si vuole verificare le sottoscrizioni appartenenti a tale utente, in modo da potere modificare il proprietario o eliminare la sottoscrizione.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.

Sintassi in modalità nativa:Native mode syntax:

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

Sintassi in modalità SharePoint:SharePoint mode syntax:

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

Script: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: modificare la proprietà per tutte le sottoscrizioni appartenenti a un utente specifico Script: Change ownership for all subscriptions owned by a specific user

Questo script permette di cambiare la proprietà per tutte le sottoscrizioni appartenenti a un utente specifico, impostando il parametro relativo al nuovo proprietario.This script changes the ownership for all subscriptions owned by a specific user to the new owner parameter.

Sintassi in modalità nativa:Native mode syntax:

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

Sintassi in modalità SharePoint:SharePoint mode syntax:

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

Script: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: elencare tutte le sottoscrizioni associate a un report specifico Script: List all subscriptions associated with a specific report

Questo script permette di elencare tutte le sottoscrizioni associate a un report specifico.This script lists all of the subscriptions associated with a specific report. La sintassi del percorso del report è diversa in modalità SharePoint, che necessita di un URL completo.The report path syntax is different SharePoint mode which requires a full URL. Nell'esempio di sintassi il nome usato per il report è "title only", che include uno spazio e quindi deve essere racchiuso da virgolette semplici.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.

Sintassi in modalità nativa:Native mode syntax:

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

Sintassi in modalità 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: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: cambiare la proprietà di una sottoscrizione specifica Script: Change ownership of a specific subscription

Questo script permette di cambiare la proprietà di una sottoscrizione specifica.This script changes the ownership for a specific subscription. La sottoscrizione è identificata dal valore SubscriptionID passato nello script.The subscription is identified by the SubscriptionID that you pass into the script. È possibile usare uno degli script per elencare le sottoscrizioni per determinare il valore SubscriptionID corretto.You can use one of the list subscription scripts to determine the correct SubscriptionID.

Sintassi in modalità nativa:Native mode syntax:

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

Sintassi in modalità 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: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: eseguire (attivare) una singola sottoscrizione Script: Run (fire) a single subscription

Questo script eseguirà una sottoscrizione specifica usando il metodo FireEvent.This script will run a specific subscription using the FireEvent method. Lo script eseguirà immediatamente la sottoscrizione, indipendentemente dalla pianificazione configurata per la sottoscrizione.The script will immediately run the subscription regardless of the schedule configured for the subscription. EventType è verificato rispetto al set noto degli eventi definiti nel file di configurazione del server di report rsreportserver.config . Lo script usa il tipo di evento seguente per le sottoscrizioni standard: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>

Per altre informazioni sul file di configurazione, vedere RsReportServer.config Configuration File.For more information on the configuration file, see RsReportServer.config Configuration File.

Lo script include logica di ritardo di tipo "Start-Sleep -s 6". Dopo l'attivazione dell'evento è quindi disponibile tempo per rendere disponibile lo stato aggiornato con il metodo 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.

Sintassi in modalità nativa:Native mode syntax:

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

Sintassi in modalità SharePoint:SharePoint mode syntax:

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

Script: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}  

Vedere ancheSee Also

Metodo ReportingService2010.ListSubscriptionsReportingService2010.ListSubscriptions Method

Metodo ReportingService2010.ChangeSubscriptionOwnerReportingService2010.ChangeSubscriptionOwner Method

ReportingService2010.ListChildrenReportingService2010.ListChildren

ReportingService2010.FireEventReportingService2010.FireEvent