2014-01-30 74 views
0

我写了一个Powershell脚本来删除/创建一个示例Biztalk应用程序。在PowerShell中使用-contains不起作用

每当我尝试创建一个应用程序。 上午检查是否有已经使用以下条件

[void] [System.reflection.Assembly]::LoadWithPartialName("Microsoft.BizTalk.ExplorerOM") 
$Catalog = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer 
$Catalog.ConnectionString = "SERVER=$SQLServerInstance;DATABASE=$SQLCatalog;Integrated Security=SSPI" 

if($Catalog.Applications -contains $AppName) 
{ 
write-eventlog -logname "$logname" -Source "$Source" -eventid "$eventidError" -message "$errormessage" -entrytype "Error" -Computername "$Server" 
} 
else 
{ 
.... 
invoke-expression $Addapp 
} 

首次创建它的应用程序的任何应用程序中存在。但是当我尝试第二次运行时(已经创建了应用程序)。它仍然执行着真实的案例。它没有执行else部分。

请教。是否有任何其他财产刷新以获取新添加的应用程序。

+0

你可以显示什么在$ catalog.applications? –

回答

0

根据documentation$Catalog.Applications是一个Microsoft.BizTalk.ExplorerOM.Application对象的数组,而您需要一个具有这些对象的名称字符串的数组。尝试这样的:

if (($Catalog.Applications | select -Expand Name) -contains $AppName) { 
    ... 
    Write-EventLog ... 
} else { 
    ... 
    Invoke-Expression $Addapp 
} 
+0

它的工作。谢谢.. !!! –

相关问题