AutomatedLab.Ships.psm1
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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
using namespace Microsoft.PowerShell.SHiPS [SHiPSProvider(UseCache = $true)] [SHiPSProvider(BuiltinProgress = $false)] class LabHost : SHiPSDirectory { LabHost( [string]$name) : base($name) { } [object[]] GetChildItem() { if (-not (Get-Module -ListAvailable AutomatedLab)) { Write-Warning -Message 'AutomatedLab is not available - using its SHiPS provider will not work this way' return $null } $labs = @() foreach ($lab in (Get-Lab -List)) { $labs += [Lab]::new($lab) } return $labs } } [SHiPSProvider(UseCache = $true)] [SHiPSProvider(BuiltinProgress = $false)] class Lab : SHiPSDirectory { Lab( [string]$name) : base($name) { } [object[]] GetChildItem() { Import-Lab -Name $this.name -NoValidation -NoDisplay $obj = @() $obj += [LabMachine]::new('Machines') $obj += [LabDisk]::new('Disks') $obj += [LabNetwork]::new('Networks') $obj += [LabDomain]::new('Domains') return $obj; } } [SHiPSProvider(UseCache = $true)] [SHiPSProvider(BuiltinProgress = $false)] class LabMachine : SHiPSDirectory { LabMachine([string]$name) : base($name) { } [object[]] GetChildItem() { return (Get-LabVm) } } [SHiPSProvider(UseCache = $true)] [SHiPSProvider(BuiltinProgress = $false)] class LabNetwork : SHiPSDirectory { LabNetwork([string]$name) : base($name) { } [object[]] GetChildItem() { return (Get-Lab).VirtualNetworks } } [SHiPSProvider(UseCache = $true)] [SHiPSProvider(BuiltinProgress = $false)] class LabDisk : SHiPSDirectory { LabDisk([string]$name) : base($name) { } [object[]] GetChildItem() { return (Get-Lab).Disks } } [SHiPSProvider(UseCache = $true)] [SHiPSProvider(BuiltinProgress = $false)] class LabDomain : SHiPSDirectory { LabDomain([string]$name) : base($name) { } [object[]] GetChildItem() { return (Get-Lab).Domains } } |