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

时间:2013-12-26 21:27:13

标签: powershell com

我正在尝试使用Powershell自动化应用程序部署。 一步需要我进入组件服务到我的计算机属性并将事务超时设置为0。

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

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

这是我的小探索性代码:

$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
}

任何人都可以帮我设置交易Timout吗?

更新:此脚本至少获取TransactionTimeout值:

$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")

2 个答案:

答案 0 :(得分:3)

这是工作代码:

$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()

我不认为它是保存更改,因为每次我检查组件服务|本地计算机|属性|事务超时它仍然是'60',即使我刷新了所有组件。我终于退出组件服务并返回,然后它有'20'值。

答案 1 :(得分:0)

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

$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的文件中,然后可以使用以下命令从任何地方调用此代码:

powershell.exe -Command .\Set-Component-Services-Timeout.ps1 >> log_file.txt 2>&1