Enterprise: Stapeldetails aus der Datenbank lesen

Geändert am Fr, 5 Jul, 2024 um 12:44 NACHMITTAGS

Es kann bei der Fehlersuche immer wieder der Fall auftreten, dass man detaillierte Informationen zu einem Stapel aus der Datenbank benötigt. Die Stapeldetails liegen als komprimierter Datenblock in der Datenbank vor und müssen über ein Skript aus der Datenbank extrahiert werden.


Zu diesem Zweck gibt es die folgenden PowerShell-Skripte. Ersetzen Sie bitte in den Skripten das vorgegebene Passwort (********) mit dem korrekten Passwort Ihrer Installation. Das aktuelle Passwort des Benutzers CrosscapUser können Sie der Datei web.config im Installationsordner des CROSSCAP Enterprise-Servers entnehmen.


Wählen Sie nun im Anschluss für die Variablen $batchname den Stapelnamen und $project die Projektvorlage, damit der entsprechende Stapel aus der Daten exportiert werden kann. Die Variable $path bezeichnet den Ausgabepfad und ist im Beispiel so eingestellt, dass der exportierte Stapel in dem Ordner des PowerShell-Skriptes als Datei batchfile.xml entsteht.


PowerShell-Skript für CROSSCAP Enterprise V3

$ErrorActionPreference = "Stop"

###################################################
# Bitte anpassen
$path = $PSScriptRoot + '\'

$batchname = "Batch052"
$project = "&&t&a&z"
###################################################

Add-Type -Path ($path + "Npgsql.dll")
Add-Type -Path ($path + "Mono.Security.dll")

[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression') | Out-Null

$outFile = $path+"batchfile.xml"

$hostName = "localhost"
$username = "CrosscapUser"
$password = "************"

$ConnectionStringBuilder1 = New-Object Npgsql.NpgsqlConnectionStringBuilder("")
$ConnectionStringBuilder1.UserId = $username
$ConnectionStringBuilder1.Password = $password
$ConnectionStringBuilder1.Server = $hostname
$ConnectionStringBuilder1.Database = "CrosscapEnterprise"
$ConnectionStringBuilder1.Pooling = $false

$connectionString = $ConnectionStringBuilder1.ToString()

$connection = New-Object Npgsql.NpgsqlConnection($connectionString)
$connection.Open()

try
{
    $cmd=$connection.CreateCommand()
    #---------------------------------------------------------------------
    $cmd.CommandText = 'select "BatchFile" from "Batches" where "TemplateName"=@templateName and "BatchName" =@batchName'
    $cmd.Parameters.AddWithValue("@templateName", $project)
    $cmd.Parameters.AddWithValue("@batchName", $batchname)

    $reader = $cmd.ExecuteReader()
    if($reader.HasRows -eq $true)
    {
        while($reader.Read() -eq $true)
        {
            $bytes = $reader[0]

            $ZipBytes = $bytes
            $ZipStream = New-Object System.IO.Memorystream
            $ZipStream.Write($ZipBytes,0,$ZipBytes.Length)
            $ZipArchive = New-Object System.IO.Compression.ZipArchive($ZipStream)
            $ZipEntry = $ZipArchive.GetEntry('BatchFile')
            $EntryReader = New-Object System.IO.StreamReader($ZipEntry.Open())
            $EntryReader.ReadToEnd() | Out-File -FilePath $outFile
        }
    }
    $reader.Close()
}
finally
{
    if($connection -ne $null)
    {
        $connection.Close()
        $connection.Dispose()
    }
}



PowerShell-Skript für CROSSCAP Enterprise V4

$ErrorActionPreference = "Stop"

###################################################
# Bitte anpassen
$path = $PSScriptRoot + '\'

$batchname = "Batch001"
$project = "Test"
$tenant = "*"
###################################################

Add-Type -Path ($path + "Npgsql.dll")
Add-Type -Path ($path + "Mono.Security.dll")

[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression') | Out-Null

$outFile = $path+"batchfile.xml"

$hostName = "localhost"
$username = "CrosscapUser"
$password = "************"

$ConnectionStringBuilder1 = New-Object Npgsql.NpgsqlConnectionStringBuilder("")
$ConnectionStringBuilder1.UserId = $username
$ConnectionStringBuilder1.Password = $password
$ConnectionStringBuilder1.Server = $hostname
$ConnectionStringBuilder1.Database = "CrosscapEnterprise"
$ConnectionStringBuilder1.Pooling = $false

$connectionString = $ConnectionStringBuilder1.ToString()

$connection = New-Object Npgsql.NpgsqlConnection($connectionString)
$connection.Open()

try
{
    $cmd=$connection.CreateCommand()
    #---------------------------------------------------------------------
    $cmd.CommandText = 'select "BatchFile" from "TL_Batches" where "FK_TemplateID"=(select id from "TL_ProjectTemplates" where name = @templateName and "FK_TenantID" = (select "PK_TenantID" from "Tenant" where "Name" = @tenant)) and "FK_TenantID"=(select "PK_TenantID" from "Tenant" where "Name" = @tenant) and "BatchName" = @batchName'
    $cmd.Parameters.AddWithValue("@templateName", $project)
    $cmd.Parameters.AddWithValue("@batchName", $batchname)
    $cmd.Parameters.AddWithValue("@tenant", $tenant)

    $reader = $cmd.ExecuteReader()
    if($reader.HasRows -eq $true)
    {
        while($reader.Read() -eq $true)
        {
            $bytes = $reader[0]

            $ZipBytes = $bytes
            $ZipStream = New-Object System.IO.Memorystream
            $ZipStream.Write($ZipBytes,0,$ZipBytes.Length)
            $ZipArchive = New-Object System.IO.Compression.ZipArchive($ZipStream)
            $ZipEntry = $ZipArchive.GetEntry('BatchFile')
            $EntryReader = New-Object System.IO.StreamReader($ZipEntry.Open())
            $EntryReader.ReadToEnd() | Out-File -FilePath $outFile
        }
    }
    $reader.Close()
}
finally
{
    if($connection -ne $null)
    {
        $connection.Close()
        $connection.Dispose()
    }
}



War dieser Artikel hilfreich?

Das ist großartig!

Vielen Dank für das Feedback

Leider konnten wir nicht helfen

Vielen Dank für das Feedback

Wie können wir diesen Artikel verbessern?

Wählen Sie wenigstens einen der Gründe aus
CAPTCHA-Verifikation ist erforderlich.

Feedback gesendet

Wir wissen Ihre Bemühungen zu schätzen und werden versuchen, den Artikel zu korrigieren