Functions/LabMachine/Get-LabMachine.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#Requires -Version 5.0 function Get-LabMachine { [CmdletBinding(DefaultParameterSetName = 'EnvironmentName')] param ( [Parameter(Mandatory = $false, Position = 0)] [string[]]$Name, [Parameter(Mandatory = $false, ParameterSetName = 'Environment', ValueFromPipeline = $true)] [LabEnvironment[]]$Environment, [Parameter(Mandatory = $false, ParameterSetName = 'EnvironmentName')] [string[]]$EnvironmentName ) Process { if ($($PSCmdlet.ParameterSetName) -ne 'Environment') { if ($EnvironmentName) { $Environment = Get-LabEnvironment -Name $EnvironmentName } else { $Environment = Get-LabEnvironment } } if (-not $Environment) { return } foreach ($e in $Environment) { if ($e.Machines) { foreach ($machine in $e.Machines) { if (-not $Name -or @($Name | Where-Object { $machine.Name -like $_ }).Length -gt 0) { Write-Output $machine } } } } } } |