PowerShell、BizTalk和正在更改主机实例配置



还有另一个PowerShell/BizTalk问题,但首先是一些背景:

我们在一个开发人员环境中有很多(8个进程中,2个独立的)主机实例。其中一个实例已损坏(管理控制台中的状态为"安装失败")。我发现它缺少密码,并尝试手动更新。运气不好,我的密码是错误的,而且它也是为我们CMDB中的帐户存储的相同密码。。。哦,好吧。只是重置它并在所有主机实例上更改它。

好吧,我想试试PowerShell的方式。它有点工作,但前提是实例处于ServiceState 8?ServiceState 4(已启动)当然会出现错误。但ServiceState 1(已停止)也是如此?

很烦人。失败的是安装方法:

调用"安装"时出现异常:"安装Windows NT时出错服务BTSSvc$Test_host。请验证以下内容:1) 提供的凭据是正确的,并且指定的用户名具有"日志on as service"特权已启用。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
        }
    }
}

有人有主意吗?这让我讨厌极了!

致问候,

Joakim

$hostinst.ServiceState -eq 1 -or 8

应该重写

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

在PowerShell控制台中试用:

3-当量1-或8-

找到了答案!

如果实例处于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
        }
    }
}

最新更新