首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用powershell设置组件服务事务超时

使用powershell设置组件服务事务超时
EN

Stack Overflow用户
提问于 2013-12-26 21:27:13
回答 2查看 3.7K关注 0票数 3

我正在尝试使用Powershell实现应用程序部署的自动化。有一步要求我进入Component到我的计算机属性,并将事务超时设置为0。

Powershell COM+ settings的答案对我来说似乎是最有希望的答案,但我一直无法映射事务超时设置。

查看COM+管理集合页面:http://msdn.microsoft.com/en-us/library/windows/desktop/ms687763(v=vs.85).aspx,我看到有一个LocalComputer集合,但我无法从LocalComputer集合对象中检索属性集合,这就是事务超时属性的位置。

下面是我的小探索代码:

代码语言:javascript
复制
$comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")

$applications = $comAdmin.GetCollection("LocalComputer")
$applications.Populate()

$properties = $applications.GetCollection("PropertyInfo",$application.key)
foreach ($property in $properties){
    Write-Host $property.name
}

有人能帮我设置交易时间吗?

Update:这个脚本至少给了我一个TransactionTimeout值:

代码语言:javascript
复制
$comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")
$LocalColl = $comAdmin.Connect("localhost")
$LocalComputer = $LocalColl.GetCollection("LocalComputer",$LocalColl.Name)
$LocalComputer.Populate()

$LocalComputerItem = $LocalComputer.Item(0)


$LocalComputerItem.Value("TransactionTimeout")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-27 16:13:00

以下是工作代码:

代码语言:javascript
复制
$comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")
$LocalColl = $comAdmin.Connect("localhost")
$LocalComputer = $LocalColl.GetCollection("LocalComputer",$LocalColl.Name)
$LocalComputer.Populate()

$LocalComputerItem = $LocalComputer.Item(0)
$CurrVal = $LocalComputerItem.Value("TransactionTimeout")
Write-Host "Transaction Timeout = $CurrVal"

$LocalComputerItem.Value("TransactionTimeout") = 20
$LocalComputer.SaveChanges()

我不认为它是在保存更改,因为每次我检查components \ LocalComputer / Properties / Transaction超时值时,它仍然是“60”,即使在刷新所有组件之后。我最终退出了Component并返回,然后它的值为“20”。

票数 3
EN

Stack Overflow用户

发布于 2017-06-26 05:21:57

如果您希望从外部工具/实用程序/批处理文件(例如在自动软件部署期间)调用此PowerShell脚本,则如果显示超时的前后值(并使用新行很好地格式化--用于日志重定向),则可能会有所帮助:

代码语言:javascript
复制
$comAdmin = New-Object -com ("COMAdmin.COMAdminCatalog.1")
$LocalColl = $comAdmin.Connect("localhost")
$LocalComputer = $LocalColl.GetCollection("LocalComputer",$LocalColl.Name)
$LocalComputer.Populate()

$LocalComputerItem = $LocalComputer.Item(0)
$CurrVal = $LocalComputerItem.Value("TransactionTimeout")
Write-Host "Old Transaction Timeout = $CurrVal`r`n"

$LocalComputerItem.Value("TransactionTimeout") = 180
$CurrVal = $LocalComputerItem.Value("TransactionTimeout")
Write-Host "New Transaction Timeout = $CurrVal`r`n"
$LocalComputer.SaveChanges()

假设您将上面的代码保存到一个名为Set-Component-Services-Timeout.ps1的文件中,那么就可以使用如下命令从任何地方调用该代码:

代码语言:javascript
复制
powershell.exe -Command .\Set-Component-Services-Timeout.ps1 >> log_file.txt 2>&1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20791497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档