Existe-t-il un moyen d'obtenir le Package XML à partir des packages qui se trouvent dans le Catalogue SSIS avec PowerShell, mais sans télécharger et extraire le projet ? Je veux rechercher certaines chaînes dans le document XML.
################################
########## PARAMÈTRES ##########
################################
$SsisServer = ".\sql2016"
############################
########## SERVEUR ##########
############################
# Charger l'assembly Integration Services
$SsisNamespace = "Microsoft.SqlServer.Management.IntegrationServices"
[System.Reflection.Assembly]::LoadWithPartialName($SsisNamespace) | Out-Null;
# Créer une connexion au serveur
$SqlConnectionstring = "Source de données=" + $SsisServer + ";Catalogue initial=master;Sécurité intégrée=SSPI;"
$SqlConnection = Nouvel objet Système.Data.SqlClient.SqlConnection $SqlConnectionstring
# Créer l'objet Integration Services
$IntegrationServices = Nouvel objet $SsisNamespace".IntegrationServices" $SqlConnection
# Vérifier si la connexion a réussi
if (-not $IntegrationServices)
{
Throw [System.Exception] "Échec de la connexion au serveur $SsisServer "
}
#############################
########## CATALOGUE ##########
#############################
# Créer un objet pour le Catalogue SSISDB
$Catalog = $IntegrationServices.Catalogs["SSISDB"]
# Vérifier si le Catalogue SSISDB existe
if (-not $Catalog)
{
Throw [System.Exception] "Le catalogue SSISDB n'existe pas!"
}
##########################
########## BOUCLE ##########
##########################
foreach ($Folder dans $Catalog.Folders)
{
Write-Host $Folder.Name
foreach ($Project dans $Folder.Projects)
{
Write-Host " - " $Project.Name
foreach ($Package dans $Project.Packages)
{
Write-Host " - " $Package.Name
# COMMENT OBTENIR LE PACKAGE XML ???
# Non fonctionnel :
# Exception lors de l'appel de "Sérialiser" avec "1" argument(s) :
# "Le paramètre 'sink.Action' n'est pas valide."
#$sb = Nouvel objet Système.Text.StringBuilder
#$sw = Nouvel objet Système.IO.StringWriter($sb)
#$writer = Nouvel objet Système.Xml.XmlTextWriter($sw)
#$xml = $Package.Serialize($writer)
}
}
}