diff --git a/Notes.md b/Notes.md index 50de052..24cc975 100644 --- a/Notes.md +++ b/Notes.md @@ -213,4 +213,13 @@ Get-VM -ComputerName Server1 ```powershell Connect-VIServer -``` \ No newline at end of file +``` + + +## Snapshot + +https://developer.vmware.com/docs/powercli/latest/products/vmwarevsphereandvsan/categories/snapshot/ + +Find hosts, iterate with domains? + +$Hostname+.domain.dom \ No newline at end of file diff --git a/Testing/with_middleware.ps1 b/Testing/with_middleware.ps1 index c0565cb..d237077 100644 --- a/Testing/with_middleware.ps1 +++ b/Testing/with_middleware.ps1 @@ -1,5 +1,5 @@ # Author: Oriol Filter -# Date: 08/04/2022 +# Date: 09/04/2022 $DebugPreference = "Continue" @@ -12,39 +12,90 @@ $HOSTS_FILE = "$SCRIPT_PATH/hosts.txt" ## Add Vhost objects for each type of server -class VirtualVM{ +class VirtualMachine +{ [VirtualizationServer]$__ServerObject [Object]$__VMObject - [VirtualizationServer]Get_ServerObject(){ + [VirtualizationServer]Get_ServerObject() + { return $this.__ServerObject } - Set_ServerObject([VirtualizationServer] $Server){ + + Set_ServerObject([VirtualizationServer] $Server) + { [VirtualizationServer] $this.__ServerObject=$Server } - Set_VMObject([Object] $object){ + + Set_VMObject([Object] $object) + { $this.__VMObject=$object } - [Object]Get_VMObject(){ + + [Object]Get_VMObject() + { return $this.__VMObject.PowerState } - [String]Get_Name(){ + [String]Get_Name() + { return $this.__ServerObject.Name } - [bool]Get_Is_Running(){ - return @{PoweredOn=$true;PoweredOff=$false}[$this.__VMObject.PowerState] + + [bool]__Get_Is_Running() + { + $type=$this.GetType().BaseType + Write-Warning "Get_Is_Running not implemented in type $type" + return $false + } + [bool]Get_Is_Running() + { + return $this.__Get_Is_Running() } + [Object]__Get_Snapshots() + { + $type=$this.GetType().BaseType + Write-Warning "Get_Snapshots not implemented in type $type" + return $null + } + [Object]Get_Snapshots() + { + return $this.__Get_Snapshots + } } -class SCVMM_VM:VirtualVM{ - +class VM_SCVMM:VirtualMachine +{ + [bool]__Get_Name() + { + return $this.__ServerObject.Name + } + [bool]__Get_Is_Running(){ + return @{"PoweredOn"=$true;"PoweredOff"=$false}[$this.__VMObject.VirtualMachineState] + } } -class VirtualizationServer { - [int]$port=8100 +class VM_VMWare:VirtualMachine +{ + [bool] + __Get_Name() + { + return $this.__ServerObject.Name + } + [bool] + __Get_Is_Running() + { + return @{ "PoweredOn" = $true; "PoweredOff" = $false }[$this.__VMObject.PowerState] + } +} + +class VirtualizationServer +{ + [VirtualMachine]$__vm_obj=[VirtualMachine] + [int]$port="" [string]$url="" + [Array] $__host_list=@() # [Boolean] _FindHost ($vname) { # $type=$this.GetType().BaseType # Write-Host "Find Host not implemented in type $type" @@ -53,6 +104,12 @@ class VirtualizationServer { # [Boolean] FindHost ($vname) { # return $this._FindHost($vname) # } + [VirtualMachine]__create_vm([Object]$item){ + [VirtualMachine]$new_vm=$this.__vm_obj::new() + $new_vm.__ServerObject=$this + $new_vm.__VMObject=$item + return $new_vm + } __load_hosts(){ $type=$this.GetType().BaseType @@ -60,41 +117,48 @@ class VirtualizationServer { } load_hosts(){ - [String]::Format("Loading VM from: {0}",$this.url) | Write-Debug $this.__host_list=@() + [String]::Format("Loading VM from: {0}",$this.url) | Write-Debug $this.__load_hosts() + [String]::Format("Loaded {1} VM from: {0}",$this.url,$this.__host_list.Length) | Write-Debug } - [Array] $__host_list=@() [Array] get_host_list(){ return $this.__host_list } + [Boolean] __check_login(){ $type=$this.GetType().BaseType Write-Warning "Check_login not implemented in type $type" return $false } + [Boolean] check_login(){ Invoke-Command -ComputerName $this.url { $true } return $this.check_login() } + } -class SystemCenterVirtualMachineManager: VirtualizationServer { - __load_hosts(){ +class SystemCenterVirtualMachineManager: VirtualizationServer +{ + __load_hosts() + { Get-SCVMMServer -ComputerName $this.url $list = Get-SCVirtualMachine $this.__host_list=$list - # [string]::Format("Loaded {0} VM from {1}",$list.Lenght,$this.url) | Write-Debug } - [Boolean] __check_login($url){ + [Boolean] __check_login($url) + { $result=Invoke-Command -ComputerName $this.url { $true } $status_message = "OK" return $result } } -class HypervisorServer: VirtualizationServer{ - [Boolean] __log_in($url){ +class HypervisorServer: VirtualizationServer +{ + [Boolean] __log_in($url) + { $result=Invoke-Command -ComputerName $this.url { $true } $status_message = "OK" return $result @@ -116,13 +180,23 @@ class HypervisorServer: VirtualizationServer{ # return $result # } } -class VMWareServer: VirtualizationServer{} +class VMWareServer: VirtualizationServer +{ + __load_hosts() + { + Connect-VIServer -Server $this.url + $list = Get-SCVirtualMachine + $this.__host_list=$list + } +} -class VirtualizerManager{ +class VirtualizerManager +{ } -class VirtualizerMiddleware{ +class VirtualizerMiddleware +{ [Array]$__connected_servers=@() [Hashtable]$__found_host_dict=@{} [Boolean] __log_in($url){ @@ -192,7 +266,6 @@ class VirtualizerMiddleware{ foreach ($entry_from_dict in $entry_from_list.GetEnumerator()) { $server_location = $entry_from_dict.Name - $vm = $entry_from_dict.Value [String]::Format("`t`tFound in {0}", $server_location) | Write-Host } Write-Host "`-----------`n" diff --git a/placeholder.md b/placeholder.md index 7166491..ceae2bc 100644 --- a/placeholder.md +++ b/placeholder.md @@ -56,38 +56,4 @@ Get-Command -Module hyper-v | Out-GridView ##### Niputis -https://livebook.manning.com/book/windows-powershell-in-action-third-edition/chapter-2/40 - -# At the authentication side. -was considering something like - - -## Background login -for (object in auth_list){ - if (can_do_backround_login){ - try{ - object.login_ended=False - check_login() # Emphasis on sending it to the background - } - catch $error { - finally.login_ended=True - } - } -} - -## Front login -for (object in auth_list){ - try{ - object.login_ended=False - check_login() # Emphasis on sending it to the background - } - catch $error { - finally.login_ended=True - } -} - - - -While (there is something that still has login_ended=False){ - wait -} \ No newline at end of file +https://livebook.manning.com/book/windows-powershell-in-action-third-edition/chapter-2/40 \ No newline at end of file