2014-01-30 2 views
0

Powershell 스크립트를 작성하여 샘플 BizTalk 응용 프로그램을 제거/작성했습니다.-contains in powershell이 ​​(가) 작동하지 않습니다.

언제든지 응용 프로그램을 만들려고합니다. 암 검사는 모든 응용 프로그램이 이미 응용 프로그램을 만드는 처음으로 아래의 조건

[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 
} 

를 사용하는 존재입니다. 하지만 내가 두 번째 시간 (이미 만든 앱)을 실행하려고 할 때. 진정한 사건을 실행하는 그 stil. else 부분을 실행하지 않습니다.

Please Advice. 새로 추가 된 응용 프로그램을 새로 고치려면 다른 속성이 있습니까?

+0

$ catalog.applications에 무엇이 있는지 보여 줄 수 있습니까? –

답변

0

에 따르면 documentation$Catalog.ApplicationsMicrosoft.BizTalk.ExplorerOM.Application 개체의 배열입니다. 반면에이 개체의 문자열 이름을 가진 배열이 필요합니다. 다음과 같이 시도하십시오.

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

효과가있었습니다. 감사.. !!! –

관련 문제