Ich habe ein Powershell-Skript, an dem ich für SSRS-Berichtsverwaltungsaufgaben nach der Migration arbeite.Warum sehe ich diese Fehler in meinem SSRS Powershell-Skript in einer Umgebung, aber nicht in einer anderen Umgebung?
In diesem speziellen Szenario haben wir eine DEV-Umgebung (wo ich hauptsächlich getestet habe), die eine einzelne Instanz von SSRS hostet, und eine Prod-Umgebung, die eine skalierte Implementierung über 4 Knoten ist.
ich Powershell neu bin (entdeckte es nur 2 Tagen ...) und das Skript, das ich habe, ist ziemlich einfach:
Clear-Host
$Username = "domain\myUsername"
$Password = "myPassword"
$Cred = New-Object System.Management.Automation.PSCredential -ArgumentList @($Username,(ConvertTo-SecureString -String $Password -AsPlainText -Force))
# Dev Connection String
$webServiceUrl = 'http://DEVwebServer.domain.com/reportserver/reportservice2010.asmx?WSDL'
# Prod Connection String
# $webServiceUrl = 'http://PRODwebServerNode1.domain.com/reportserver/reportservice2010.asmx?WSDL'
$rs = New-WebServiceProxy -Uri $webServiceUrl -Credential $Cred
$reports = $rs.ListChildren("/Some Folder Under Root", $true) | Where-Object { $_.TypeName -eq "Report" }
$type = $ssrsProxy.GetType().Namespace;
$schedDefType = "{0}.ScheduleDefinition" -f $type;
$schedDef = New-Object ($schedDefType)
$warning = @();
foreach ($report in $reports) {
$sched = $rs.GetExecutionOptions($report.Path, [ref]$schedDef);
$snapShotExists = $rs.ListItemHistory($report.Path);
if($sched -eq "Snapshot") {
Write-Host "Following report is configured to run from Snapshot:" -ForegroundColor Yellow
Write-Host ("Report Name: {0}`nReport Path: {1}`nExecution Type: {2}`n" -f $report.Name, $report.Path, $sched)
if ($snapShotExists) {
Write-Host "Does Snapshot Exist..?`n" -ForegroundColor Yellow
Write-Host "Yes!`tNumber of Snapshots: " $snapShotExists.Count -ForegroundColor Green
$snapShotExists.CreationDate
Write-Host "`n------------------------------------------------------------"
}
elseif (!$snapShotExists) {
Write-Host "Does Snapshot Exist..?`n" -ForegroundColor Yellow
Write-Host ("No!`n") -ForegroundColor Red
Write-Host "Creating Snapshot.......`n" -ForegroundColor Yellow
$rs.CreateItemHistorySnapshot($report.Path, [ref]$warning);
Write-Host "Snapshot Created!`n" -ForegroundColor Green
$snapShotExists.CreationDate
Write-Host "`n------------------------------------------------------------"
}
}
}
Der Zweck des Skripts einfach ist, alle rekursiv iterieren Überprüfen Sie in den Berichten für den angegebenen Ordner in der Variablen $ reports, ob der Ausführungstyp auf "Snapshot" festgelegt ist, ob überprüft wird, ob ein "History-Snapshot" vorhanden ist, und falls noch keiner vorhanden ist, erstellen Sie einen.
Wenn ich dies in Dev laufe funktioniert es ganz gut, aber wenn ich in ART laufen bekomme ich folgende Fehler für jeden $ Bericht in meiner foreach-Schleife wiederholt:
Alle Ideen, warum dieser würde in einer und nicht in der anderen arbeiten und wie kann man diesen Fehler überwinden?
starten in Dev arbeitete von zu überprüfen, wenn die PS-Versionen auf den zwei Rechnern unterschiedlich sind (mit $ PSVersionTable.PSVersion von einer PS-Eingabeaufforderung). Sie müssen möglicherweise die 2 Maschinen auf der gleichen Version ist alles. –