Friday, March 25, 2016

some handy dandy powercli

<#

.SYNOPSIS

disables SSH/techsupport shell and Disables timeouts

.DESCRIPTION

disables SSH/techsupport shell and Disables timeouts

.PARAMETER VIserver

The name of a the Viserver.

.EXAMPLE

lock-vceEsxihosts -viserver vc.somedomain.com

#>



function lock-VCESXiHosts {

param ([Parameter(Position=0, Mandatory=$true)][System.String]$viserver)

[System.Collections.ArrayList]$ArrResults=@()

if ((Get-Module -Name VMware.VimAutomation.Core) -eq $null){import-module -Name VMware.VimAutomation.Core}

if (($global:DefaultVIServer.name -eq $viserver -and $global:DefaultVIServer.IsConnected -eq $false) -or ($global:DefaultVIServer.name -eq $null))

{try{connect-viserver $viserver -ea stop | Out-Null} catch { write-host $viserver "failed to connect";break }}

foreach ($hostentity in (get-vmhost -Server $viserver)){

$ESXCli=Get-EsxCli -VMHost $hostentity

$ESXiShellInteractiveTimeout="";$ESXiShellTimeout="";$setESXiST="";$setESXiSiT=""




#shell Timeouts


$ESXiShellInteractiveTimeout=$hostentity|Get-AdvancedSetting|where {$_.name -eq 'UserVars.ESXiShellInteractiveTimeout'}

if ($ESXiShellInteractiveTimeout.Value -ne 300){

$setESXiSIT=$ESXiShellInteractiveTimeout| Set-AdvancedSetting -Value "300" -Confirm:$false

write-host $hostentity.name ":" $setESXiSIT.name ":" $setESXiSIT.value



}

$ESXiShellTimeout=$hostentity| Get-AdvancedSetting|where {$_.name -eq 'uservars.esxishelltimeout'}

if ($ESXiShellTimeout.Value -ne 300){

$setESXiST=$ESXiShellTimeout|Set-AdvancedSetting -Value "300" -Confirm:$false

write-host $hostentity.name ":" $setESXiST.name ":" $setESXiST.value



}

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'SSH'}|Stop-VMHostService -Confirm:$false|Out-Null

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'ESXi Shell'}|Stop-VMHostService -Confirm:$false|Out-Null



}

}

<#

.SYNOPSIS

Enables SSH/techsupport shell and Disables timeouts

.DESCRIPTION

Enables SSH/techsupport shell and Disables timeouts

.PARAMETER VIserver

The name of a the Viserver.

.EXAMPLE

lock-vceEsxihosts -viserver vc.somedomain.com

#>


function Unlock-VCESXiHosts {

param ([Parameter(Position=0, Mandatory=$true)][System.String]$viserver)

[System.Collections.ArrayList]$ArrResults=@()

if ((Get-Module -Name VMware.VimAutomation.Core) -eq $null){import-module -Name VMware.VimAutomation.Core}

if (($global:DefaultVIServer.name -eq $viserver -and $global:DefaultVIServer.IsConnected -eq $false) -or ($global:DefaultVIServer.name -eq $null))

{try{connect-viserver $viserver -ea stop | Out-Null} catch { write-host $viserver "failed to connect";break }}

foreach ($hostentity in (get-vmhost -Server $viserver )){

$ESXCli=Get-EsxCli -VMHost $hostentity

$ESXiShellInteractiveTimeout="";$ESXiShellTimeout="";$setESXiST="";$setESXiSiT=""




#shell Timeouts


$ESXiShellInteractiveTimeout=$hostentity|Get-AdvancedSetting|where {$_.name -eq 'UserVars.ESXiShellInteractiveTimeout'}

if ($ESXiShellInteractiveTimeout.Value -eq 300){

$setESXiSIT=$ESXiShellInteractiveTimeout| Set-AdvancedSetting -Value "0" -Confirm:$false

write-host $hostentity.name ":" $setESXiSIT.name ":" $setESXiSIT.value



}

$ESXiShellTimeout=$hostentity| Get-AdvancedSetting|where {$_.name -eq 'uservars.esxishelltimeout'}

if ($ESXiShellTimeout.Value -eq 300){

$setESXiST=$ESXiShellTimeout|Set-AdvancedSetting -Value "0" -Confirm:$false

write-host $hostentity.name ":" $setESXiST.name ":" $setESXiST.value



}

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'SSH'}|Start-VMHostService -Confirm:$false|Out-Null

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'ESXi Shell'}|Start-VMHostService -Confirm:$false|Out-Null



}

}

<#

.SYNOPSIS

Enables SSH/techsupport shell and Disables timeouts

.DESCRIPTION

Enables SSH/techsupport shell and Disables timeouts

.PARAMETER VIserver

The name of a the Viserver.

.PARAMETER esxhost

The name of a the esxhost.

.EXAMPLE

unlock-vceEsxihosts -viserver vc.somedomain.com


#>

function UNlock-ESXiHost {

param ([Parameter(Position=0, Mandatory=$true)][System.String]$viserver,

[Parameter(Position=1, Mandatory=$true)][System.String]$esxhost



)

[System.Collections.ArrayList]$ArrResults=@()

if ((Get-Module -Name VMware.VimAutomation.Core) -eq $null){import-module -Name VMware.VimAutomation.Core}

if (($global:DefaultVIServer.name -eq $viserver -and $global:DefaultVIServer.IsConnected -eq $false) -or ($global:DefaultVIServer.name -eq $null))

{try{connect-viserver $viserver -ea stop | Out-Null} catch { write-host $viserver "failed to connect";break }}

$hostentity=get-vmhost -Server $viserver -Name $esxhost

$ESXCli=Get-EsxCli -VMHost $hostentity

$ESXiShellInteractiveTimeout="";$ESXiShellTimeout="";$setESXiST="";$setESXiSiT=""




#shell Timeouts


$ESXiShellInteractiveTimeout=$hostentity|Get-AdvancedSetting|where {$_.name -eq 'UserVars.ESXiShellInteractiveTimeout'}

if ($ESXiShellInteractiveTimeout.Value -eq 300){

$setESXiSIT=$ESXiShellInteractiveTimeout| Set-AdvancedSetting -Value "0" -Confirm:$false

write-host $hostentity.name ":" $setESXiSIT.name ":" $setESXiSIT.value



}

$ESXiShellTimeout=$hostentity| Get-AdvancedSetting|where {$_.name -eq 'uservars.esxishelltimeout'}

if ($ESXiShellTimeout.Value -eq 300){

$setESXiST=$ESXiShellTimeout|Set-AdvancedSetting -Value "0" -Confirm:$false

write-host $hostentity.name ":" $setESXiST.name ":" $setESXiST.value



}

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'SSH'}|Start-VMHostService -Confirm:$false|Out-Null

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'ESXi Shell'}|Start-VMHostService -Confirm:$false|Out-Null



}



<#

.SYNOPSIS

disables SSH/techsupport shell and Disables timeouts

.DESCRIPTION

disables SSH/techsupport shell and Disables timeouts

.PARAMETER VIserver

The name of a the Viserver.

.PARAMETER esxhost

The name of a the esxhost.

.EXAMPLE

lock-vceEsxihosts -viserver vc.somedomain.com -esxhost host.example.com


#>

function lock-ESXiHost {

param ([Parameter(Position=0, Mandatory=$true)][System.String]$viserver,

[Parameter(Position=1, Mandatory=$true)][System.String]$esxhost



)

[System.Collections.ArrayList]$ArrResults=@()

if ((Get-Module -Name VMware.VimAutomation.Core) -eq $null){import-module -Name VMware.VimAutomation.Core}

if (($global:DefaultVIServer.name -eq $viserver -and $global:DefaultVIServer.IsConnected -eq $false) -or ($global:DefaultVIServer.name -eq $null))

{try{connect-viserver $viserver -ea stop | Out-Null} catch { write-host $viserver "failed to connect";break }}

$hostentity=get-vmhost -Server $viserver -Name $esxhost

$ESXCli=Get-EsxCli -VMHost $hostentity

$ESXiShellInteractiveTimeout="";$ESXiShellTimeout="";$setESXiST="";$setESXiSiT=""




#shell Timeouts


$ESXiShellInteractiveTimeout=$hostentity|Get-AdvancedSetting|where {$_.name -eq 'UserVars.ESXiShellInteractiveTimeout'}

if ($ESXiShellInteractiveTimeout.Value -eq 0){

$setESXiSIT=$ESXiShellInteractiveTimeout| Set-AdvancedSetting -Value "300" -Confirm:$false

write-host $hostentity.name ":" $setESXiSIT.name ":" $setESXiSIT.value



}

$ESXiShellTimeout=$hostentity| Get-AdvancedSetting|where {$_.name -eq 'uservars.esxishelltimeout'}

if ($ESXiShellTimeout.Value -eq 0){

$setESXiST=$ESXiShellTimeout|Set-AdvancedSetting -Value "300" -Confirm:$false

write-host $hostentity.name ":" $setESXiST.name ":" $setESXiST.value



}

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'ESXi Shell'}|Stop-VMHostService -Confirm:$false|Out-Null

Get-VMHostService -VMHost $hostentity.name|?{$_.Label -eq 'SSH'}|Stop-VMHostService -Confirm:$false|Out-Null



}

 

<#

.SYNOPSIS

Pings an IP through a specific kernal port

.DESCRIPTION

Pings an IP through a specific kernal port

.PARAMETER VIserver

The name of a the Viserver.

.PARAMETER esxserver

The name of a the esxhost.

.EXAMPLE

esxi-VMKPing -viserver vc.somedomain.com -esxhost host.example.com -pingip 192.168.1.1 -vmkinterface vmk0


#>

Function esxi-VMKPing {

Param(

[Parameter(Position=0, Mandatory=$true)][System.String]$viServer,

[Parameter(Position=1, Mandatory=$true)][System.String]$esxhost,

[Parameter(Position=2, Mandatory=$true)][System.String]$pingIP,

[Parameter(Position=3, Mandatory=$true)]$vmkinterface,

$Count=3, $vmkdebug=$false, $DFbit=$true, $Interval = 1, $ipv4=$true,$ipv6=$false



)

if ((Get-Module -Name VMware.VimAutomation.Core) -eq $null){import-module -Name VMware.VimAutomation.Core}

try {connect-viserver $ViServer -ea Stop | Out-Null } catch {write-host $error[0] -ForegroundColor RED;break}

$hostentity=get-vmhost $esxhost -server $viserver

$ESXCli=Get-EsxCli -VMHost $hostentity

$PingResult=$ESXCli.network.diag.ping($Count,$vmkdebug,$DFbit,$PingIP,$vmkinterface,$Interval,$ipv4,$ipv6).summary

Write-Host "Pinged Host:" $PingResult.HostAddr

if ($PingResult.PacketLost -ne 0) {Write-Host "PacketLost:" $PingResult.PacketLost -ForegroundColor RED} Else {Write-Host "PacketLost:" $PingResult.PacketLost -ForegroundColor Green}

Write-Host "Recieved:" $PingResult.Recieved

Write-Host "RoundtripAvgMS:" $PingResult.RoundtripAvgMS

Write-Host "RoundtripMaxMS:" $PingResult.RoundtripMaxMS

Write-Host "RoundtripMinMS:" $PingResult.RoundtripMinMS

Write-Host "Transmitted:" $PingResult.Transmitted



}