@@ -21,7 +21,8 @@
|
||||
[Parameter(Mandatory=$true)][String]$RefreshToken
|
||||
)
|
||||
|
||||
$results = Invoke-WebRequest -Uri "https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize?refresh_token=$RefreshToken" -Method POST -ContentType "application/json" -UseBasicParsing -Headers @{"csp-auth-token"="$RefreshToken"}
|
||||
$body = "refresh_token=$RefreshToken"
|
||||
$results = Invoke-WebRequest -Uri "https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/authorize" -Method POST -ContentType "application/x-www-form-urlencoded" -UseBasicParsing -Body $body
|
||||
if($results.StatusCode -ne 200) {
|
||||
Write-Host -ForegroundColor Red "Failed to retrieve Access Token, please ensure your VMC Refresh Token is valid and try again"
|
||||
break
|
||||
@@ -51,4 +52,43 @@ Function Get-CSPServices {
|
||||
$results = Invoke-WebRequest -Uri "https://console.cloud.vmware.com/csp/gateway/slc/api/definitions?expand=1" -Method GET -ContentType "application/json" -UseBasicParsing -Headers @{"csp-auth-token"="$env:cspAuthToken"}
|
||||
((($results.Content) | ConvertFrom-Json).results | where {$_.visible -eq $true}).displayName
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Function Get-CSPRefreshTokenExpiry {
|
||||
<#
|
||||
.NOTES
|
||||
===========================================================================
|
||||
Created by: William Lam
|
||||
Date: 01/10/2019
|
||||
Organization: VMware
|
||||
Blog: https://www.virtuallyghetto.com
|
||||
Twitter: @lamw
|
||||
===========================================================================
|
||||
|
||||
.DESCRIPTION
|
||||
Retrieve the expiry for a given CSP Refresh Token
|
||||
.PARAMETER RefreshToken
|
||||
Retrieve the expiry for a given CSP Refresh Token
|
||||
.EXAMPLE
|
||||
Get-CSPRefreshTokenExpiry -RefreshToken $RefreshToken
|
||||
#>
|
||||
Param (
|
||||
[Parameter(Mandatory=$true)][String]$RefreshToken
|
||||
)
|
||||
|
||||
$body = @{"tokenValue"="$RefreshToken"}
|
||||
$json = $body | ConvertTo-Json
|
||||
$results = Invoke-WebRequest -Uri "https://console.cloud.vmware.com/csp/gateway/am/api/auth/api-tokens/details" -Method POST -ContentType "application/json" -UseBasicParsing -Body $json
|
||||
$tokenDetails = (($results.Content) | ConvertFrom-Json)
|
||||
|
||||
$createDate = (Get-Date -Date "01/01/1970").AddMilliseconds($tokenDetails.createdAt).ToLocalTime()
|
||||
$usedDate = (Get-Date -Date "01/01/1970").AddMilliseconds($tokenDetails.lastUsedAt).ToLocalTime()
|
||||
$expiryDate = (Get-Date -Date "01/01/1970").AddMilliseconds($tokenDetails.expiresAt).ToLocalTime()
|
||||
|
||||
$tmp = [pscustomobject] @{
|
||||
LastUsedDate = $usedDate;
|
||||
CreatedDate = $createDate;
|
||||
ExpiryDate = $expiryDate;
|
||||
}
|
||||
$tmp | Format-List
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ Description = 'PowerShell Module for Managing NSX-T on VMware Cloud on AWS'
|
||||
PowerShellVersion = '6.0'
|
||||
|
||||
# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
|
||||
FunctionsToExport = 'Connect-NSXTProxy', 'Get-NSXTSegment', 'New-NSXTSegment', 'Remove-NSXTSegment', 'Get-NSXTGroup', 'New-NSXTGroup', 'Remove-NSXTGroup', 'Get-NSXTService', 'New-NSXTService', 'Get-NSXTFirewall', 'New-NSXTFirewall', 'Remove-NSXTFirewall', 'Get-NSXTDistFirewallSection', 'Get-NSXTDistFirewall', 'New-NSXTDistFirewall', 'Remove-NSXTDistFirewall'
|
||||
FunctionsToExport = 'Connect-NSXTProxy', 'Get-NSXTSegment', 'New-NSXTSegment', 'Remove-NSXTSegment', 'Get-NSXTGroup', 'New-NSXTGroup', 'Remove-NSXTGroup', 'Get-NSXTService', 'New-NSXTService', 'Get-NSXTFirewall', 'New-NSXTFirewall', 'Remove-NSXTFirewall', 'Get-NSXTDistFirewallSection', 'Get-NSXTDistFirewall', 'New-NSXTDistFirewall', 'Remove-NSXTDistFirewall', 'Get-NSXTRouteTable', 'Get-NSXTOverviewInfo'
|
||||
# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
|
||||
CmdletsToExport = @()
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@ Function New-NSXTFirewall {
|
||||
|
||||
$services = @()
|
||||
foreach ($serviceName in $Service) {
|
||||
if($group -eq "ANY") {
|
||||
if($serviceName -eq "ANY") {
|
||||
$services = @("ANY")
|
||||
} else {
|
||||
$tmp = "/infra/services/$serviceName"
|
||||
@@ -1361,4 +1361,138 @@ Function Remove-NSXTDistFirewall {
|
||||
Write-Host "Succesfully removed NSX-T Distributed Firewall Rule"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Function Get-NSXTRouteTable {
|
||||
<#
|
||||
.NOTES
|
||||
===========================================================================
|
||||
Created by: William Lam
|
||||
Date: 02/02/2019
|
||||
Organization: VMware
|
||||
Blog: http://www.virtuallyghetto.com
|
||||
Twitter: @lamw
|
||||
===========================================================================
|
||||
|
||||
.SYNOPSIS
|
||||
Retrieves NSX-T Routing Table
|
||||
.DESCRIPTION
|
||||
This cmdlet retrieves NSX-T Routing Table. By default, it shows all routes but you can filter by BGP, CONNECTED or STATIC routes
|
||||
.EXAMPLE
|
||||
Get-NSXTRouteTable
|
||||
.EXAMPLE
|
||||
Get-NSXTRouteTable -RouteSource BGP
|
||||
.EXAMPLE
|
||||
Get-NSXTRouteTable -RouteSource CONNECTED
|
||||
.EXAMPLE
|
||||
Get-NSXTRouteTable -RouteSource STATIC
|
||||
.EXAMPLE
|
||||
Get-NSXTRouteTable -RouteSource BGP -Troubleshoot
|
||||
#>
|
||||
Param (
|
||||
[Parameter(Mandatory=$False)][ValidateSet("BGP","CONNECTED","STATIC")]$RouteSource,
|
||||
[Switch]$Troubleshoot
|
||||
)
|
||||
|
||||
If (-Not $global:nsxtProxyConnection) { Write-error "No NSX-T Proxy Connection found, please use Connect-NSXTProxy" } Else {
|
||||
$method = "GET"
|
||||
$routeTableURL = $global:nsxtProxyConnection.Server + "/policy/api/v1/infra/tier-0s/vmc/routing-table?enforcement_point_path=/infra/deployment-zones/default/enforcement-points/vmc-enforcementpoint"
|
||||
|
||||
if($RouteSource) {
|
||||
$routeTableURL = $routeTableURL + "&route_source=$RouteSource"
|
||||
}
|
||||
|
||||
if($Troubleshoot) {
|
||||
Write-Host -ForegroundColor cyan "`n[DEBUG] - $method`n$routeTableURL`n"
|
||||
}
|
||||
|
||||
try {
|
||||
if($PSVersionTable.PSEdition -eq "Core") {
|
||||
$requests = Invoke-WebRequest -Uri $routeTableURL -Method $method -Headers $global:nsxtProxyConnection.headers -SkipCertificateCheck
|
||||
} else {
|
||||
$requests = Invoke-WebRequest -Uri $routeTableURL -Method $method -Headers $global:nsxtProxyConnection.headers
|
||||
}
|
||||
} catch {
|
||||
if($_.Exception.Response.StatusCode -eq "Unauthorized") {
|
||||
Write-Host -ForegroundColor Red "`nThe NSX-T Proxy session is no longer valid, please re-run the Connect-NSXTProxy cmdlet to retrieve a new token`n"
|
||||
break
|
||||
} else {
|
||||
Write-Error "Error in retrieving NSX-T Routing Table"
|
||||
Write-Error "`n($_.Exception.Message)`n"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if($requests.StatusCode -eq 200) {
|
||||
Write-Host "Succesfully retrieved NSX-T Routing Table`n"
|
||||
$routeTables = ($requests.Content | ConvertFrom-Json).results
|
||||
|
||||
foreach ($routeTable in $routeTables) {
|
||||
Write-Host "EdgeNode: $($routeTable.edge_node)"
|
||||
Write-Host "Entries: $($routeTable.count)"
|
||||
|
||||
$routeEntries = $routeTable.route_entries
|
||||
$routeEntryResults = @()
|
||||
foreach ($routeEntry in $routeEntries) {
|
||||
$routeEntryResults += $routeEntry
|
||||
}
|
||||
$routeEntryResults | select network,next_hop,admin_distance,route_type | ft
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Function Get-NSXTOverviewInfo {
|
||||
<#
|
||||
.NOTES
|
||||
===========================================================================
|
||||
Created by: William Lam
|
||||
Date: 02/02/2019
|
||||
Organization: VMware
|
||||
Blog: http://www.virtuallyghetto.com
|
||||
Twitter: @lamw
|
||||
===========================================================================
|
||||
|
||||
.SYNOPSIS
|
||||
Retrieves NSX-T Overview including the VPN internet IP Address and SDDC Infra/Mgmt Subnets, etc.
|
||||
.DESCRIPTION
|
||||
This cmdlet retrieves NSX-T Overview details including the VPN internet IP Address and SDDC Infra/Mgmt Subnets, etc.
|
||||
.EXAMPLE
|
||||
Get-NSXTOverviewInfo
|
||||
#>
|
||||
Param (
|
||||
[Parameter(Mandatory=$False)][ValidateSet("BGP","CONNECTED","STATIC")]$RouteSource,
|
||||
[Switch]$Troubleshoot
|
||||
)
|
||||
|
||||
If (-Not $global:nsxtProxyConnection) { Write-error "No NSX-T Proxy Connection found, please use Connect-NSXTProxy" } Else {
|
||||
$method = "GET"
|
||||
$overviewURL = $global:nsxtProxyConnection.Server + "/cloud-service/api/v1/infra/sddc-user-config"
|
||||
|
||||
if($Troubleshoot) {
|
||||
Write-Host -ForegroundColor cyan "`n[DEBUG] - $method`n$overviewURL`n"
|
||||
}
|
||||
|
||||
try {
|
||||
if($PSVersionTable.PSEdition -eq "Core") {
|
||||
$requests = Invoke-WebRequest -Uri $overviewURL -Method $method -Headers $global:nsxtProxyConnection.headers -SkipCertificateCheck
|
||||
} else {
|
||||
$requests = Invoke-WebRequest -Uri $overviewURL -Method $method -Headers $global:nsxtProxyConnection.headers
|
||||
}
|
||||
} catch {
|
||||
if($_.Exception.Response.StatusCode -eq "Unauthorized") {
|
||||
Write-Host -ForegroundColor Red "`nThe NSX-T Proxy session is no longer valid, please re-run the Connect-NSXTProxy cmdlet to retrieve a new token`n"
|
||||
break
|
||||
} else {
|
||||
Write-Error "Error in retrieving NSX-T Overview Information"
|
||||
Write-Error "`n($_.Exception.Message)`n"
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if($requests.StatusCode -eq 200) {
|
||||
Write-Host "Succesfully retrieved NSX-T Overview Information"
|
||||
($requests.Content | ConvertFrom-Json)
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
74
Modules/vCenterCEIP/vCenterCEIP.psm1
Executable file
74
Modules/vCenterCEIP/vCenterCEIP.psm1
Executable file
@@ -0,0 +1,74 @@
|
||||
Function Get-VCenterCEIP {
|
||||
<#
|
||||
.NOTES
|
||||
===========================================================================
|
||||
Created by: William Lam
|
||||
Date: 01/23/2019
|
||||
Organization: VMware
|
||||
Blog: http://www.virtuallyghetto.com
|
||||
Twitter: @lamw
|
||||
===========================================================================
|
||||
|
||||
.SYNOPSIS
|
||||
Retrieves the the Customer Experience Improvement Program (CEIP) setting for vCenter Server
|
||||
.DESCRIPTION
|
||||
This cmdlet retrieves the the CEIP setting for vCenter Server
|
||||
.EXAMPLE
|
||||
Get-VCenterCEIP
|
||||
#>
|
||||
If (-Not $global:DefaultVIServer.IsConnected) { Write-error "No valid VC Connection found, please use the Connect-VIServer to connect"; break } Else {
|
||||
$ceipSettings = (Get-AdvancedSetting -Entity $global:DefaultVIServer -Name VirtualCenter.DataCollector.ConsentData).Value.toString() | ConvertFrom-Json
|
||||
$ceipEnabled = $ceipSettings.consentConfigurations[0].consentAccepted
|
||||
|
||||
$tmp = [pscustomobject] @{
|
||||
VCENTER = $global:DefaultVIServer.Name;
|
||||
CEIP = $ceipEnabled;
|
||||
}
|
||||
$tmp
|
||||
}
|
||||
}
|
||||
Function Set-VCenterCEIP {
|
||||
<#
|
||||
.NOTES
|
||||
===========================================================================
|
||||
Created by: William Lam
|
||||
Date: 01/23/2019
|
||||
Organization: VMware
|
||||
Blog: http://www.virtuallyghetto.com
|
||||
Twitter: @lamw
|
||||
===========================================================================
|
||||
|
||||
.SYNOPSIS
|
||||
Enables or Disables the Customer Experience Improvement Program (CEIP) setting for vCenter Server
|
||||
.DESCRIPTION
|
||||
This cmdlet enables or disables the CEIP setting for vCenter Server
|
||||
.EXAMPLE
|
||||
Set-VCenterCEIP -Enabled
|
||||
.EXAMPLE
|
||||
Set-VCenterCEIP -Disabled
|
||||
#>
|
||||
Param (
|
||||
[Switch]$Enabled,
|
||||
[Switch]$Disabled
|
||||
)
|
||||
If (-Not $global:DefaultVIServer.IsConnected) { Write-error "No valid VC Connection found, please use the Connect-VIServer to connect"; break } Else {
|
||||
$ceipSettings = (Get-AdvancedSetting -Entity $global:DefaultVIServer -Name VirtualCenter.DataCollector.ConsentData).Value.toString() | ConvertFrom-Json
|
||||
If($Enabled) {
|
||||
$originalVersion = $ceipSettings.version
|
||||
$ceipSettings.version = [int]$originalVersion + 1
|
||||
$ceipSettings.consentConfigurations[0].consentAccepted = $True
|
||||
$ceipSettings.consentConfigurations[1].consentAccepted = $True
|
||||
$updatedceipSettings = $ceipSettings | ConvertTo-Json
|
||||
Write-Host "Enabling Customer Experience Improvement Program (CEIP) ..."
|
||||
Get-AdvancedSetting -Entity $global:DefaultVIServer -Name VirtualCenter.DataCollector.ConsentData | Set-AdvancedSetting -Value $updatedceipSettings -Confirm:$false
|
||||
} else {
|
||||
$originalVersion = $ceipSettings.version
|
||||
$ceipSettings.version = [int]$originalVersion + 1
|
||||
$ceipSettings.consentConfigurations[0].consentAccepted = $False
|
||||
$ceipSettings.consentConfigurations[1].consentAccepted = $False
|
||||
$updatedceipSettings = $ceipSettings | ConvertTo-Json
|
||||
Write-Host "Disablng Customer Experience Improvement Program (CEIP) ..."
|
||||
Get-AdvancedSetting -Entity $global:DefaultVIServer -Name VirtualCenter.DataCollector.ConsentData | Set-AdvancedSetting -Value $updatedceipSettings -Confirm:$false
|
||||
}
|
||||
}
|
||||
}
|
||||
50
Scripts/Set-NetworkAdapterOpaqueNetwork.ps1
Normal file
50
Scripts/Set-NetworkAdapterOpaqueNetwork.ps1
Normal file
@@ -0,0 +1,50 @@
|
||||
function Set-NetworkAdapterOpaqueNetwork {
|
||||
param(
|
||||
[Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 1)]
|
||||
[VMware.VimAutomation.Types.NetworkAdapter]
|
||||
$NetworkAdapter,
|
||||
|
||||
[Parameter(Mandatory = $true, Position = 2)]
|
||||
[string]
|
||||
$OpaqueNetworkName,
|
||||
|
||||
[Parameter()]
|
||||
[switch]
|
||||
$Connected,
|
||||
|
||||
[Parameter()]
|
||||
[switch]
|
||||
$StartConnected
|
||||
)
|
||||
process {
|
||||
$opaqueNetwork = Get-View -ViewType OpaqueNetwork | ? {$_.Name -eq $OpaqueNetworkName}
|
||||
if (-not $opaqueNetwork) {
|
||||
throw "'$OpaqueNetworkName' network not found."
|
||||
}
|
||||
|
||||
$opaqueNetworkBacking = New-Object VMware.Vim.VirtualEthernetCardOpaqueNetworkBackingInfo
|
||||
$opaqueNetworkBacking.OpaqueNetworkId = $opaqueNetwork.Summary.OpaqueNetworkId
|
||||
$opaqueNetworkBacking.OpaqueNetworkType = $opaqueNetwork.Summary.OpaqueNetworkType
|
||||
|
||||
$device = $NetworkAdapter.ExtensionData
|
||||
$device.Backing = $opaqueNetworkBacking
|
||||
|
||||
if ($StartConnected) {
|
||||
$device.Connectable.StartConnected = $true
|
||||
}
|
||||
|
||||
if ($Connected) {
|
||||
$device.Connectable.Connected = $true
|
||||
}
|
||||
|
||||
$spec = New-Object VMware.Vim.VirtualDeviceConfigSpec
|
||||
$spec.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::edit
|
||||
$spec.Device = $device
|
||||
$configSpec = New-Object VMware.Vim.VirtualMachineConfigSpec
|
||||
$configSpec.DeviceChange = @($spec)
|
||||
$NetworkAdapter.Parent.ExtensionData.ReconfigVM($configSpec)
|
||||
|
||||
# Output
|
||||
Get-NetworkAdapter -Id $NetworkAdapter.Id
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user