我正在尝试使用Powershell实现应用程序部署的自动化。有一步要求我进入Component到我的计算机属性,并将事务超时设置为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
}有人能帮我设置交易时间吗?
Update:这个脚本至少给了我一个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")发布于 2013-12-27 16:13:00
以下是工作代码:
$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”。
发布于 2017-06-26 05:21:57
如果您希望从外部工具/实用程序/批处理文件(例如在自动软件部署期间)调用此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>&1https://stackoverflow.com/questions/20791497
复制相似问题