UnenlistParties (esempio di BizTalk Server)
Nell'esempio UnenlistParties viene illustrato come rimuovere tutte le entità associate a un assembly BizTalk Server distribuito.
Avviso
Dopo la distribuzione, rimuovere gli script di distribuzione se non sono necessari. Gli script di amministrazione e gli altri script da non rimuovere devono essere protetti mediante elenchi di controllo di accesso (ACL, Access Control List) e accuratamente monitorati.
Prerequisiti
È necessario disporre di BizTalk Server privilegi amministrativi per usare gli oggetti amministrativi in questo esempio.
L'esecuzione dello script di Windows PowerShell richiede i criteri di esecuzione di Windows PowerShell. Per altre informazioni, vedere about_Execution_Policies.
Progettazione e finalità dell'esempio
Questo esempio, scritto in Visual C# utilizzando oggetti del modello a oggetti di BizTalk Explorer, consente di eseguire le operazioni seguenti:
Esecuzione di una query per un determinato assembly.
Recupero di tutti i ruoli associati all'assembly.
Rimozione di tutte le entità associate a ognuno di tali ruoli.
Gestire gli eventuali errori in modo che all'utente vengano restituite informazioni significative.
Percorso dell'esempio
L'esempio è disponibile nel seguente percorso dell'SDK:
<Percorso> esempi\Amministrazione\ExplorerOM\UnenlistParties\
Nella seguente tabella sono riportati i file inclusi nell'esempio e ne viene descritto lo scopo.
File | Descrizione |
---|---|
App.ico, AssemblyInfo.cs, UnenlistParties.csproj, UnenlistParties.sln, UnenlistParties.cs | File di progetto, soluzione e origine per la compilazione di un'applicazione da riga di comando in Visual C# che rimuove tutte le entità per un determinato assembly. |
Compilare e inizializzare questo esempio
In Visual Studio aprire il file di soluzione UnenlistParties.sln.
Scegliere Compila soluzione dal menu Compila.
Esegui questo esempio
In una finestra di comando passare alla seguente cartella:
<Percorso> esempi\Amministrazione\ExplorerOM\UnenlistParties\bin\Debug\
Eseguire il file UnenlistParties.exe passando uno dei due argomenti della riga di comando seguenti:
<AssemblyName>. Nome dell'assembly da cui devono essere rimosse tutte le entità associate. Se il nome dell'assembly include spazi, racchiuderlo tra virgolette.
/?. Visualizza la Guida.
Ad esempio:
UnenlistParties "My BizTalk Assembly.dll"
-OPPURE-
UnenlistParties /?
Esempio di script di Windows PowerShell
Il frammento di script di Windows PowerShell seguente può essere usato per illustrare le stesse funzionalità delle classi ExplorerOM :
#===================#
#=== Main Script ===#
#===================#
#=== Make sure the ExplorerOM assembly is loaded ===#
[void] [System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM")
#=== Connect to the BizTalk Management database ===#
$Catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer
$Catalog.ConnectionString = "SERVER=.;DATABASE=BizTalkMgmtDb;Integrated Security=SSPI"
#=====================================================#
#=== If no assembly name is specified, just list ===#
#=== the assemblies, roles and partyies enlisted. ===#
#=====================================================#
if ($args[0] -eq $null)
{
Write-Host `r`n===========================================================
Write-Host No assembly name provided for party unenlist operation.
Write-Host Listing Parties for each assembly on local BizTalk Server:
Write-Host ===========================================================`r`n
foreach ($assembly in $Catalog.Assemblies)
{
write-host $Assembly.Name`r`n
foreach ($role in $Assembly.Roles)
{
write-host `t($role.name)
foreach($party in $role.EnlistedParties)
{
Write-Host `t`t($party.Party.Name)
}
write-host
}
}
write-host
}
#=====================================================#
#=== If assembly name is specified, remove parties ===#
#=== enlisted in all roles for the assembly. ===#
#=====================================================#
else
{
$Assembly = $Catalog.Assemblies[$args[0]]
if ($assembly -eq $null)
{
write-host Assembly named $args[0] not found.`r`n
}
else
{
write-host `r`nUnenlisting parties from all roles in ($Assembly.Name)`r`n
foreach ($role in $Assembly.Roles)
{
$count = $role.EnlistedParties.count
for($c=0; $c -lt $count; $c++)
{
#==========================================================#
#=== Array index stays at zero because the collection ===#
#=== changes after each item is removed. ===#
#==========================================================#
$party = $role.EnlistedParties[0]
Write-Host Unenlisting ($party.Party.Name) from ($role.Name)...
$role.RemoveEnlistedParty($party)
Write-Host done.`r`n
}
}
write-Host Comitting changes...
$catalog.SaveChanges()
Write-Host done.`r`n
}
}
L'output di script seguente è stato generato dalla rimozione di entità dall'assembly Supplier, che fa parte dell'esempio PartyResolution. L'esempio < PartyResolution si trova nella directory Samples Path>\Amministrazione\Orchestrations\PartyResolution.
PS C:\> .\UnenlistParties.ps1 Supplier
Unenlisting parties from all roles in Supplier
Unenlisting ShipmentAgency1 from ShipmentRole ...
done.
Unenlisting ShipmentAgency2 from ShipmentRole ...
done.
Unenlisting BuyerAgency from Buyer ...
done.
Comitting changes...
done.