123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- 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()
|