在powershell中使用-contains不起作用

时间:2014-01-30 12:19:46

标签: powershell

我编写了一个Powershell脚本来删除/创建示例Biztalk应用程序。

每当我尝试创建应用程序时。 检查是否已存在使用以下条件的应用程序

[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部分。

请咨询。是否有任何其他属性可以刷新以获取新添加的应用程序。

1 个答案:

答案 0 :(得分:0)

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

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