Platform/build/TestProduct/Impl/InTest/PowerOn.ps1 (43 lines of code) (raw):
Param
(
[Parameter(Position=0, Mandatory=$true)]$cloneNamePattern,
[Parameter(Position=0, Mandatory=$true)]$VmName,
[Parameter(Position=0, Mandatory=$true)][String[]]$ViServerData,
[Parameter(Position=0)]$CountOfMachinesToStart=1
)
<#ScriptPrologue#> Set-StrictMode -Version Latest; $ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
function GetDirectoryNameOfFileAbove($markerfile) { $result = ""; $path = $MyInvocation.ScriptName; while(($path -ne "") -and ($path -ne $null) -and ($result -eq "")) { if(Test-Path $(Join-Path $path $markerfile)) {$result=$path}; $path = Split-Path $path }; if($result -eq ""){throw "Could not find marker file $markerfile in parent folders."} return $result; }
$ProductHomeDir = GetDirectoryNameOfFileAbove "Product.Root"
function PowerOn
{
$cloneNames = @()
for ($i=0; $i -lt $CountOfMachinesToStart; $i++) {
$cloneNames += $cloneNamePattern+'_'+[System.DateTime]::Now.ToString("MMdd_HHmmss")+'_'+$VmName+'_'+'clone'+'_'+$i
}
$jobs = @()
$jobsA = @()
foreach ($cloneName in $cloneNames) {
Write-Host "parameters for cloning vm" ' VmName: ' $VmName ' cloneName: ' $cloneName ' cloneNamePattern: ' $cloneNamePattern ' ViServerAddress: ' $ViServerData[0] ' ViServerLogin: ' $ViServerData[1] ' ViServerPasword: ' $ViServerData[2]
$params = @{VmName = "`"" + $VmName + "`""; cloneName = "`"" + $cloneName + "`""; cloneNamePattern = $cloneNamePattern; ViServerAddress = $ViServerData[0];ViServerLogin = $ViServerData[1];ViServerPasword = $ViServerData[2]}
[string] $scriptPath ="$ProductHomeDir\Platform\build\TestProduct\Impl\InTest\VirtualEnvironment.ps1";
$sb = [scriptblock]::create("&'$scriptpath' $(&{$args} @params)")
$job = Start-Job -scriptblock $sb
$jobs += $job
$jobsA+=New-Object PSObject -Property @{ VmName=$VmName; cloneName=$cloneName; job=$job; data=@()}
}
$machines = @()
foreach ($j in $jobs)
{
Wait-Job -Job $j |Out-Null
foreach ($jA in $jobsA){
if ($j -eq $jA.job){
$jA.data = Receive-Job -Job $j
$machines +=$jA
}
}
}
Write-Host @($machines).Count machines started: $machines
return $machines
}
$ret = PowerOn
return $ret