Merge pull request #55 from shidouli/master

add 1 property and 1 function for vMotionEncryption
This commit is contained in:
Kyle Ruddy
2016-12-22 10:57:50 -05:00
committed by GitHub

View File

@@ -59,12 +59,17 @@ New-VIProperty -Name Locked -ObjectType VirtualMachine -Value {
($vm.extensiondata.Runtime.ConnectionState -eq "invalid") -and ($vm.extensiondata.Config.KeyId) ($vm.extensiondata.Runtime.ConnectionState -eq "invalid") -and ($vm.extensiondata.Config.KeyId)
} -BasedOnExtensionProperty 'Runtime.ConnectionState','Config.KeyId' -Force | Out-Null } -BasedOnExtensionProperty 'Runtime.ConnectionState','Config.KeyId' -Force | Out-Null
New-VIProperty -Name vMotionEncryption -ObjectType VirtualMachine -Value {
Param ($VM)
$VM.ExtensionData.Config.MigrateEncryption
} -BasedOnExtensionProperty 'Config.MigrateEncryption' -Force | Out-Null
New-VIProperty -Name KMSserver -ObjectType VirtualMachine -Value { New-VIProperty -Name KMSserver -ObjectType VirtualMachine -Value {
Param ($VM) Param ($VM)
if ($VM.Encrypted) { if ($VM.Encrypted) {
$VM.EncryptionKeyId.ProviderId.Id $VM.EncryptionKeyId.ProviderId.Id
} }
} -BasedOnExtensionProperty 'Config.KeyId' -Force | Out-Null } -BasedOnExtensionProperty 'Config.KeyId' -Force | Out-Null
New-VIProperty -Name Encrypted -ObjectType HardDisk -Value { New-VIProperty -Name Encrypted -ObjectType HardDisk -Value {
Param ($hardDisk) Param ($hardDisk)
@@ -108,7 +113,6 @@ Function Enable-VMHostCryptoSafe {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -177,7 +181,6 @@ Function Set-VMHostCryptoKey {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -231,6 +234,74 @@ Function Set-VMHostCryptoKey {
} }
} }
Function Set-vMotionEncryptionConfig {
<#
.SYNOPSIS
This cmdlet sets the vMotionEncryption property of a VM.
.DESCRIPTION
Use this function to set the vMotionEncryption settings for a VM.
The 'Encryption' parameter is set up with Tab-Complete for the available
options.
.PARAMETER VM
Specifies the VM you want to set the vMotionEncryption property.
.PARAMETER Encryption
Specifies the value you want to set to the vMotionEncryption property.
The Encryption options are: disabled, opportunistic, and required.
.EXAMPLE
PS C:\> Get-VM | Set-vMotionEncryptionConfig -Encryption opportunistic
Sets the vMotionEncryption of all the VMs
.NOTES
Author : Brian Graf, Carrie Yang.
Author email : grafb@vmware.com, yangm@vmware.com
Version : 1.0
==========Tested Against Environment==========
VMware vSphere Hypervisor(ESXi) Version : 6.5
VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0
#>
[CmdLetBinding()]
param (
[Parameter(Mandatory=$True,ValueFromPipeline=$True,ValueFromPipelinebyPropertyName=$True)]
[VMware.VimAutomation.ViCore.Types.V1.Inventory.VirtualMachine]$VM,
[Parameter(Mandatory=$True]
[ValidateSet("disabled", "opportunistic", "required")]
[String]$Encryption
)
process{
if ($VM.vMotionEncryption -eq $Encryption) {
Write-Warning "The encrypted vMotion state is already $Encrypted, no need to change it."
return
}
if ($VM.Encrypted) {
Write-Error "Cannot change encrypted vMotion state for an encrypted VM."
return
}
$VMView = $VM | get-view
$Config = New-Object VMware.Vim.VirtualMachineConfigSpec
$Config.MigrateEncryption = New-Object VMware.Vim.VirtualMachineConfigSpecEncryptedVMotionModes
$Config.MigrateEncryption = $Encryption
$VMView.ReconfigVM($config)
$VM.ExtensionData.UpdateViewData()
$VM.vMotionEncryption
}
}
Function Enable-VMEncryption { Function Enable-VMEncryption {
<# <#
.SYNOPSIS .SYNOPSIS
@@ -277,7 +348,6 @@ Function Enable-VMEncryption {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -438,7 +508,6 @@ Function Enable-VMDiskEncryption {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -591,7 +660,6 @@ Function Disable-VMEncryption {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -688,7 +756,6 @@ Function Disable-VMDiskEncryption {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -824,7 +891,6 @@ Function Set-VMEncryptionKey {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -981,7 +1047,6 @@ Function Set-VMDiskEncryptionKey {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1094,7 +1159,7 @@ Function Get-VMEncryptionInfo {
.NOTES .NOTES
If $HardDisk is specified, then only the encryption information of the disks specified in $HardDisk is obtained. If $HardDisk is specified, then only the encryption information of the disks specified in $HardDisk is obtained.
Otherwise, all disks' encryption information of the specified VM is returned. Otherwise, all disks' encryption information of the specified VM is returned.
.NOTES .NOTES
Author : Carrie Yang. Author : Carrie Yang.
Author email : yangm@vmware.com Author email : yangm@vmware.com
@@ -1105,7 +1170,6 @@ Function Get-VMEncryptionInfo {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1194,7 +1258,7 @@ Function Get-EntityByCryptoKey {
.NOTES .NOTES
At least one of the KeyId and KMSClusterId parameters is required. At least one of the KeyId and KMSClusterId parameters is required.
If the SearchVMHosts, SearchVMs and SearchDisks all not specified, the cmdlet return $null. If the SearchVMHosts, SearchVMs and SearchDisks all not specified, the cmdlet return $null.
.NOTES .NOTES
Author : Baoyin Qiao. Author : Baoyin Qiao.
Author email : bqiao@vmware.com Author email : bqiao@vmware.com
@@ -1205,7 +1269,6 @@ Function Get-EntityByCryptoKey {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1331,7 +1394,6 @@ Function New-KMServer {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1491,7 +1553,6 @@ Function Remove-KMServer {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1569,7 +1630,6 @@ Function Get-KMSCluster {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
# Confirm the connected VIServer is vCenter Server # Confirm the connected VIServer is vCenter Server
@@ -1661,7 +1721,6 @@ Function Get-KMServerInfo {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1723,7 +1782,6 @@ Function Get-KMServerStatus {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1795,7 +1853,6 @@ Function Get-DefaultKMSCluster {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
# Confirm the connected VIServer is vCenter Server # Confirm the connected VIServer is vCenter Server
@@ -1822,7 +1879,7 @@ Function Set-DefaultKMSCluster {
C:\PS>Set-DefaultKMSCluster -KMSClusterId 'ClusterIdString' C:\PS>Set-DefaultKMSCluster -KMSClusterId 'ClusterIdString'
Sets the KMS cluster whose cluster ID is 'ClusterIdString' as the default KMS cluster. Sets the KMS cluster whose cluster ID is 'ClusterIdString' as the default KMS cluster.
.NOTES .NOTES
Author : Baoyin Qiao. Author : Baoyin Qiao.
Author email : bqiao@vmware.com Author email : bqiao@vmware.com
@@ -1833,7 +1890,6 @@ Function Set-DefaultKMSCluster {
VMware vCenter Server Version : 6.5 VMware vCenter Server Version : 6.5
PowerCLI Version : PowerCLI 6.5 PowerCLI Version : PowerCLI 6.5
PowerShell Version : 3.0 PowerShell Version : 3.0
#> #>
[CmdLetBinding()] [CmdLetBinding()]
@@ -1889,7 +1945,6 @@ Function ConfirmHardDiskIsValid {
.PARAMETER HardDisk .PARAMETER HardDisk
Specifies the hard disks which you want to use to validate. Specifies the hard disks which you want to use to validate.
#> #>
[CmdLetBinding()] [CmdLetBinding()]