2014-01-30 75 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

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

相關問題