PowerShell, BizTalk и изменение конфигурации Host Instance - PullRequest
1 голос
/ 23 марта 2012

Еще один вопрос PowerShell / BizTalk, но сначала немного предыстории:

У нас есть много (8 обрабатываемых, 2 изолированных) экземпляров хоста в одной среде разработчика.Один из экземпляров поврежден («Ошибка установки» как состояние в консоли администратора).Я увидел, что ему не хватает пароля, и попытался обновить его вручную.Не повезло, у меня был неправильный пароль, и это был тот же пароль, который был сохранен для учетной записи в нашей CMDB ... О, хорошо.Просто чтобы сбросить его и изменить на всех экземплярах хоста.

Ну, я хотел попробовать сделать это PowerShell.Это отчасти работает, но только если экземпляры находятся в ServiceState 8?ServiceState 4 (запущен) конечно выдает ошибку.Но так же ServiceState 1 (остановлено)?

Очень раздражает.Это сбой метода Install:

Исключение, вызывающее «Install»: «Произошла ошибка при установке службы NT NT BTSSvc $ Test_host. Проверьте следующее: 1) Предоставленные учетные данные верны и указан пользовательдля имени включена привилегия «войти в систему как служба». 2) Все окна службы консоли управления Microsoft (MMC) закрыты. Диспетчер управления службами окна не разрешит создание службы, если служба удалена, но на нее все еще ссылаютсяу открытого окна MMC. "

Код:

$hosts = Get-WmiObject MSBTS_HostInstance -namespace 'root/MicrosoftBizTalkServer'
foreach($hostinst in $hosts)
{
    if ($hostinst.Logon -eq $acc)
    {
        if($hostinst.ServiceState -eq 1 -or 8)
        {
            write-host "Hostinstans" $hostinst.HostName "har ServiceState" $hostinst.ServiceState
            $hostinst.Install($acc, $pw, "True")
            Start-Sleep -Seconds 30
            write-host "Hostinstans" $hostinst.HostName "har nytt lösenord och ServiceState" $hostinst.ServiceState
        }
    }
}

У кого-нибудь есть идеи?Меня это раздражает!

С уважением,

Иоаким

Ответы [ 2 ]

0 голосов
/ 26 марта 2012

Нашел ответ!

Если экземпляр находится в ServiceState 1, я должен удалить его, прежде чем вносить в него изменения! Мой код для этого должен быть таким (например):

    $hosts = Get-WmiObject MSBTS_HostInstance -namespace 'root/MicrosoftBizTalkServer'
foreach($hostinst in $hosts)
{
    if ($hostinst.Logon -eq $acc)
    {
        if(($hostinst.ServiceState -eq 1) -or ($hostinst.ServiceState -eq 8))
        {
            if($hostinst.ServiceState -eq 1)
            {
               $hostinst.Uninstall()
            }
            write-host "Hostinstans" $hostinst.HostName "har ServiceState"     $hostinst.ServiceState
            $hostinst.Install($acc, $pw, "True")
            Start-Sleep -Seconds 30
            write-host "Hostinstans" $hostinst.HostName "har nytt lösenord och ServiceState" $hostinst.ServiceState
        }
    }
}
0 голосов
/ 23 марта 2012
$hostinst.ServiceState -eq 1 -or 8

следует переписать

($hostinst.ServiceState -eq 1) -or ($hostinst.ServiceState -eq 8)

Попробуйте в консоли PowerShell:

3-экв 1 -или 8

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...