58 lines
1.2 KiB
Plaintext
Vendored
58 lines
1.2 KiB
Plaintext
Vendored
class Device {
|
|
[string]$Brand
|
|
[string]$Model
|
|
[string]$VendorSku
|
|
|
|
[string]ToString(){
|
|
return ("{0}|{1}|{2}" -f $this.Brand, $this.Model, $this.VendorSku)
|
|
}
|
|
}
|
|
|
|
class Rack : Device {
|
|
hidden [int] $Slots = 8
|
|
static [Rack[]]$InstalledRacks = @()
|
|
[int]$Slots = 8
|
|
[string]$Brand
|
|
[string]$Model
|
|
[string]$VendorSku
|
|
[string]$AssetId
|
|
[Device[]]$Devices = [Device[]]::new($this.Slots)
|
|
|
|
Device(
|
|
[string]$b,
|
|
[string]$m,
|
|
[string]$vsk
|
|
){
|
|
$this.Brand = $b
|
|
$this.Model = $m
|
|
$this.VendorSku = $vsk
|
|
}
|
|
|
|
[void] AddDevice([Device]$dev, [int]$slot){
|
|
## Add argument validation logic here
|
|
$this.Devices[$slot] = $dev
|
|
}
|
|
|
|
[void]RemoveDevice([int]$slot){
|
|
## Add argument validation logic here
|
|
$this.Devices[$slot] = $null
|
|
}
|
|
|
|
[int[]] GetAvailableSlots(){
|
|
[int]$i = 0
|
|
return @($this.Devices.foreach{ if($_ -eq $null){$i}; $i++})
|
|
}
|
|
}
|
|
|
|
$rack = [Rack]::new()
|
|
|
|
$surface = [Device]::new()
|
|
$surface.Brand = "Microsoft"
|
|
$surface.Model = "Surface Pro 4"
|
|
$surface.VendorSku = "5072641000"
|
|
|
|
$rack.AddDevice($surface, 2)
|
|
|
|
$rack
|
|
$rack.GetAvailableSlots()
|