[英]PowerShell, BizTalk and changing Host Instance configuration
另一个PowerShell / BizTalk问题,但首先要了解一些背景知识:
一个开发人员环境上有很多(8个进程内,2个隔离)主机实例。 其中一个实例已损坏(管理控制台中的状态为“安装失败”)。 我看到它缺少密码,并尝试手动更新它。 运气不好,我输入的密码是错误的,也与该帐户在我们的CMDB中存储的密码相同...哦,很好。 只是要重置它并在所有主机实例上对其进行更改。
好吧,我想尝试用PowerShell的方式来做。 这是可行的,但是仅当实例处于ServiceState 8时才有效? ServiceState 4(已启动)当然会给出错误。 但是ServiceState 1(已停止)是否也如此?
很烦人。 是安装失败的方法:
异常调用“安装”:“安装Windows 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
}
}
}
有人知道吗? 这让我讨厌。
最好的祝福,
约阿基姆
$hostinst.ServiceState -eq 1 -or 8
应该改写
($hostinst.ServiceState -eq 1) -or ($hostinst.ServiceState -eq 8)
在PowerShell控制台中试用:
3 -eq 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
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.