Adding VMware Fusion Module
This commit is contained in:
18
Modules/VMware.Hosted/VMware.Hosted.psd1
Normal file
18
Modules/VMware.Hosted/VMware.Hosted.psd1
Normal file
@@ -0,0 +1,18 @@
|
||||
@{
|
||||
ModuleToProcess = 'VMware.Hosted.psm1'
|
||||
ModuleVersion = '1.0.0.0'
|
||||
GUID = '11393D09-D6B8-4E79-B9BC-247F1BE66683'
|
||||
Author = 'William Lam'
|
||||
CompanyName = 'primp-industries.com'
|
||||
Copyright = '(c) 2017. All rights reserved.'
|
||||
Description = 'Powershell Module for VMware Fusion 10 REST API'
|
||||
PowerShellVersion = '5.0'
|
||||
FunctionsToExport = 'Get-HostedCommand','Connect-HostedServer','Disconnect-HostedServer','Get-HostedVM','Start-HostedVM','Stop-HostedVM','Suspend-HostedVM','Resume-HostedVM','New-HostedVM','Remove-HostedVM','Get-HostedVMSharedFolder','New-HostedVMSharedFolder','Remove-HostedVMSharedFolder','Get-HostedVMNic','Get-HostedNetworks'
|
||||
PrivateData = @{
|
||||
PSData = @{
|
||||
Tags = @('Fusion','REST','vmrest')
|
||||
LicenseUri = 'https://www.tldrlegal.com/l/mit'
|
||||
ProjectUri = 'https://github.com/lamw/PowerCLI-Example-Scripts/tree/master/Modules/VMware.Hosted'
|
||||
}
|
||||
}
|
||||
}
|
||||
501
Modules/VMware.Hosted/VMware.Hosted.psm1
Normal file
501
Modules/VMware.Hosted/VMware.Hosted.psm1
Normal file
@@ -0,0 +1,501 @@
|
||||
Function Get-Confirmation {
|
||||
$choice = ""
|
||||
while ($choice -notmatch "[y|n]"){
|
||||
$choice = read-host "Do you want to continue? (Y/N)"
|
||||
}
|
||||
if($choice -ne 'y') {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
Function Connect-HostedServer {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Server,
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Username,
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Password,
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][string]$Protocol = "http",
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][int]$Port = 8697
|
||||
)
|
||||
$pair = $Username+":"+$Password
|
||||
$bytes = [System.Text.Encoding]::ASCII.GetBytes($pair)
|
||||
$base64 = [System.Convert]::ToBase64String($bytes)
|
||||
$basicAuthValue = "Basic $base64"
|
||||
$headers = @{Authorization = $basicAuthValue}
|
||||
|
||||
$Global:DefaultHostedServer = [pscustomobject] @{
|
||||
Server=$Protocol + "://" + $server + ":$Port/api";
|
||||
Protcol=$Protocol
|
||||
Headers=$headers
|
||||
}
|
||||
|
||||
if($DefaultHostedServer.Protcol -eq "https") {
|
||||
# PowerShell Core has a nice -SkipCertificateCheck but looks like Windows does NOT :(
|
||||
if($PSVersionTable.PSEdition -eq "Core") {
|
||||
$Global:fusionCommand = "Invoke-Webrequest -SkipCertificateCheck "
|
||||
} else {
|
||||
# Needed for Windows PowerShell to handle HTTPS scenario
|
||||
# https://stackoverflow.com/a/15627483
|
||||
$Provider = New-Object Microsoft.CSharp.CSharpCodeProvider
|
||||
$Compiler = $Provider.CreateCompiler()
|
||||
$Params = New-Object System.CodeDom.Compiler.CompilerParameters
|
||||
$Params.GenerateExecutable = $false
|
||||
$Params.GenerateInMemory = $true
|
||||
$Params.IncludeDebugInformation = $false
|
||||
$Params.ReferencedAssemblies.Add("System.DLL") > $null
|
||||
$TASource=@'
|
||||
namespace Local.ToolkitExtensions.Net.CertificatePolicy
|
||||
{
|
||||
public class TrustAll : System.Net.ICertificatePolicy
|
||||
{
|
||||
public bool CheckValidationResult(System.Net.ServicePoint sp,System.Security.Cryptography.X509Certificates.X509Certificate cert, System.Net.WebRequest req, int problem)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
'@
|
||||
$TAResults=$Provider.CompileAssemblyFromSource($Params,$TASource)
|
||||
$TAAssembly=$TAResults.CompiledAssembly
|
||||
## We create an instance of TrustAll and attach it to the ServicePointManager
|
||||
$TrustAll = $TAAssembly.CreateInstance("Local.ToolkitExtensions.Net.CertificatePolicy.TrustAll")
|
||||
[System.Net.ServicePointManager]::CertificatePolicy = $TrustAll
|
||||
$Global:fusionCommand = "Invoke-Webrequest "
|
||||
}
|
||||
} else {
|
||||
$Global:fusionCommand = "Invoke-Webrequest "
|
||||
}
|
||||
$Global:DefaultHostedServer
|
||||
}
|
||||
|
||||
Function Disconnect-HostedServer {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Server
|
||||
)
|
||||
|
||||
$Global:DefaultHostedServer = $null
|
||||
}
|
||||
|
||||
Function Get-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][string]$Id
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
if($Id) {
|
||||
$vmUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id
|
||||
try {
|
||||
$params = "-Headers `$Global:DefaultHostedServer.Headers -Uri $vmUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vm = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
$vmIPUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/ip"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmIPUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmIPResults = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
$vmIP = $vmIPResults.ip
|
||||
} catch {
|
||||
$vmIP = "N/A"
|
||||
}
|
||||
|
||||
$vmPowerUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/power"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmPower = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
$vmPower = "N/A"
|
||||
}
|
||||
|
||||
$results = [pscustomobject] @{
|
||||
Id = $vm.Id;
|
||||
CPU = $vm.Cpu.processors;
|
||||
Memory = $vm.Memory;
|
||||
PowerState = $vmPower.power_state;
|
||||
IPAddress = $vmIP;
|
||||
}
|
||||
$results
|
||||
} else {
|
||||
$uri = $Global:DefaultHostedServer.Server + "/vms"
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $uri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
try {
|
||||
Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Failed to list VMs"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Function Start-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$vmPowerUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/power"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmPower = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
if($vmPower.power_state -eq "poweredOff" -or $vmPower.power_state -eq "suspended") {
|
||||
try {
|
||||
Write-Host "Powering on VM $Id ..."
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method PUT -ContentType `"application/vnd.vmware.vmw.rest-v1+json`" -Body `"on`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vm = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Unable to Power On VM $Id"
|
||||
break
|
||||
}
|
||||
} else {
|
||||
Write-Host "VM $Id is already Powered On"
|
||||
}
|
||||
}
|
||||
|
||||
Function Stop-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id,
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][boolean]$Soft,
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][boolean]$Confirm = $true
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
if($Confirm) {
|
||||
Get-Confirmation
|
||||
}
|
||||
|
||||
$vmPowerUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/power"
|
||||
try {
|
||||
$params += "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmPower = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
if($vmPower.power_state -eq "poweredOn") {
|
||||
if($Soft) {
|
||||
try {
|
||||
Write-Host "Shutting down VM $Id ..."
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method PUT -ContentType `"application/vnd.vmware.vmw.rest-v1+json`" -Body `"shutdown`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vm = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Unable to Shutdown VM $Id"
|
||||
break
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
Write-Host "Powering off VM $Id ..."
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method PUT -ContentType `"application/vnd.vmware.vmw.rest-v1+json`" -Body `"off`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vm = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Unable to Power Off VM $Id"
|
||||
break
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Write-Host "VM $Id is already Powered Off"
|
||||
}
|
||||
}
|
||||
|
||||
Function Suspend-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id,
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][boolean]$Confirm
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
if($Confirm) {
|
||||
Get-Confirmation
|
||||
}
|
||||
|
||||
$vmPowerUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/power"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmPower = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
if($vmPower.power_state -eq "poweredOn") {
|
||||
try {
|
||||
Write-Host "Suspending VM $Id ..."
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method PUT -ContentType `"application/vnd.vmware.vmw.rest-v1+json`" -Body `"suspend`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vm = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Unable to suspend VM $Id"
|
||||
break
|
||||
}
|
||||
} else {
|
||||
Write-Host "VM $Id can not be suspended because it is either Powered Off or Suspended"
|
||||
}
|
||||
}
|
||||
|
||||
Function Resume-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$vmPowerUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/power"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmPowerUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmPower = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
if($vmPower.power_state -eq "suspended") {
|
||||
try {
|
||||
Start-HostedVM -Id $Id
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Unable to Resume VM $Id"
|
||||
break
|
||||
}
|
||||
} else {
|
||||
Write-Host "VM $Id is not Suspended"
|
||||
}
|
||||
}
|
||||
|
||||
Function New-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$ParentId,
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Name
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$vm = Get-HostedVM -Id $ParentId
|
||||
|
||||
if($vm -match "Invalid VM Id") {
|
||||
Write-host -ForegroundColor Red "Unable to find existing VM Id $ParentId"
|
||||
break
|
||||
}
|
||||
|
||||
$vmUri = $Global:DefaultHostedServer.Server + "/vms"
|
||||
$body = @{"ParentId"="$ParentId";"Name"=$Name}
|
||||
$body = $body | ConvertTo-Json
|
||||
|
||||
try {
|
||||
Write-Host "Cloning VM $ParentId to $Name ..."
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmUri -Method POST -ContentType `"application/vnd.vmware.vmw.rest-v1+json`" -Body `$body"
|
||||
$command = $Global:fusionCommand + $params
|
||||
Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Failed to Clone VM Id $ParentId"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
Function Remove-HostedVM {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id,
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][boolean]$Confirm = $true
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$vm = Get-HostedVM -Id $Id
|
||||
|
||||
if($vm -match "Invalid VM Id") {
|
||||
Write-host -ForegroundColor Red "Unable to find existing VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
if($Confirm) {
|
||||
Get-Confirmation
|
||||
}
|
||||
|
||||
$vmUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id
|
||||
try {
|
||||
Write-Host "Deleting VM Id $Id ..."
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmUri -Method DELETE -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Failed to Delete VM Id $Id"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
Function Get-HostedVMSharedFolder {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$folderUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/sharedfolders"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $folderUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
Function New-HostedVMSharedFolder {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id,
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$FolderName,
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$HostPath
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$body = @{"folder_id"="$FolderName";"host_path"=$HostPath;"flags"=4}
|
||||
$body = $body | ConvertTo-Json
|
||||
|
||||
$folderUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/sharedfolders"
|
||||
try {
|
||||
Write-Host "Creating new Shared Folder $FolderName to $HostPath for VM Id $Id ..."
|
||||
$params += "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $folderUri -Method POST -ContentType `"application/vnd.vmware.vmw.rest-v1+json`" -Body `$body"
|
||||
$command = $Global:fusionCommand + $params
|
||||
Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Failed to create Shared Folder for VM Id $Id"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
Function Remove-HostedVMSharedFolder {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id,
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$FolderName,
|
||||
[parameter(Mandatory=$false,ValueFromPipeline=$true)][boolean]$Confirm = $true
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
if($Confirm) {
|
||||
Get-Confirmation
|
||||
}
|
||||
|
||||
$folderUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/sharedfolders/" + $FolderName
|
||||
try {
|
||||
Write-Host "Removing Shared Folder $FolderName for VM Id $Id ..."
|
||||
$params += "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $folderUri -Method DELETE -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Failed to remove Shared Folder for VM Id $Id"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
Function Get-HostedVMNic {
|
||||
Param (
|
||||
[parameter(Mandatory=$true,ValueFromPipeline=$true)][string]$Id
|
||||
)
|
||||
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$vmNicUri = $Global:DefaultHostedServer.Server + "/vms/" + $Id + "/nic"
|
||||
try {
|
||||
$params += "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $vmNicUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$vmNics = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Invalid VM Id $Id"
|
||||
break
|
||||
}
|
||||
|
||||
$results = @()
|
||||
foreach ($vmNic in $vmNics.nics) {
|
||||
$tmp = [pscustomobject] @{
|
||||
Index = $vmNic.index;
|
||||
Type = $vmNic.Type;
|
||||
VMnet = $vmNic.Vmnet;
|
||||
}
|
||||
$results+=$tmp
|
||||
}
|
||||
$results
|
||||
}
|
||||
|
||||
Function Get-HostedNetworks {
|
||||
if(!$Global:DefaultHostedServer) {
|
||||
Write-Host -ForegroundColor Red "You are not connected to Hosted Server, please run Connect-HostedServer"
|
||||
exit
|
||||
}
|
||||
|
||||
$networksUri = $Global:DefaultHostedServer.Server + "/vmnet"
|
||||
try {
|
||||
$params = "-UseBasicParsing -Headers `$Global:DefaultHostedServer.Headers -Uri $networksUri -Method GET -ContentType `"application/vnd.vmware.vmw.rest-v1+json`""
|
||||
$command = $Global:fusionCommand + $params
|
||||
$networks = Invoke-Expression -Command $command | ConvertFrom-Json -ErrorAction Stop
|
||||
} catch {
|
||||
Write-host -ForegroundColor Red "Unable to retrieve Networks"
|
||||
break
|
||||
}
|
||||
|
||||
$results = @()
|
||||
foreach ($network in $networks.vmnets) {
|
||||
$tmp = [pscustomobject] @{
|
||||
Name = $network.Name;
|
||||
Type = $network.Type;
|
||||
DHCP = $network.Dhcp;
|
||||
Network = $network.subnet;
|
||||
Netmask = $network.mask;
|
||||
}
|
||||
$results+=$tmp
|
||||
}
|
||||
$results
|
||||
}
|
||||
Reference in New Issue
Block a user