Спасибо всем за ответы.:-) Одна вещь, которую я не упомянул, это то, что все серверы сборки имеют одинаковую структуру установки для CruiseControl.NET на них, и каталог установки напрямую доступен через общую папку.Вот мой сценарий для создания списка проектов на определенном сервере сборки:
function Get-Projects
{
param([string]$BuildServer = $(Throw "You must specify the name of the build server containing the projects you want to list"))
$BuildServer = $BuildServer.ToUpper()
$ConfigFilePath = [string]"\\$BuildServer\CruiseControl.NET\server\ccnet.config"
$ValidPath = Test-Path -Path "$ConfigFilePath"
if (!$ValidPath)
{
$InvalidPathErrorMessage = [string]"Path $ConfigFilePath does not exist!"
Write-Host $InvalidPathErrorMessage
$InvalidPathErrorMessage
return
}
$ConfigXml = [xml](Get-Content $ConfigFilePath)
$Projects = @($ConfigXml.SelectNodes("cruisecontrol/project"))
if (!$Projects)
{
$ErrorMessage = [string]"No projects on $BuildServer!"
Write-Host $ErrorMessage
$ErrorMessage
return
}
$Projects
}
Затем, если этот сценарий доступен в вашем сеансе PowerShell, вы можете просто выбрать нужные данные, как предложил Джейкуль:
Get-Projects <BuildServer> | Select-Object name, queue, category | Sort-Object category
Я надеюсь, что это окажется полезным!