Set-HyperVVMResourceMetering
Hyper-V: Manages virtual machine resource metering
#Requires -Version 5.1
#Requires -Modules Hyper-V
[CmdletBinding()]
Param (
[string]$ComputerName = "localhost",
[PSCredential]$Credential,
[Parameter(Mandatory = $true)]
[string]$Name,
[Parameter(Mandatory = $true)]
[ValidateSet('Enable', 'Disable', 'Reset')]
[string]$Action
)
Process {
try {
$params = @{
'ComputerName' = $ComputerName
'ErrorAction' = 'Stop'
}
if ($Credential) { $params.Add('Credential', $Credential) }
$vm = Get-VM @params | Where-Object { $_.Name -eq $Name -or $_.Id -eq $Name }
if (-not $vm) {
throw "Virtual machine '$Name' not found on '$ComputerName'."
}
switch ($Action) {
'Enable' { Enable-VMResourceMetering -VM $vm }
'Disable' { Disable-VMResourceMetering -VM $vm }
'Reset' { Reset-VMResourceMetering -VM $vm }
}
$result = [PSCustomObject]@{
Name = $vm.Name
Action = $Action
ResourceMeteringEnabled = (Get-VM -VM $vm).ResourceMeteringEnabled
Status = "Success"
Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
}
Write-Output $result
}
catch {
throw
}
}Specifies the name of the Hyper-V host. Defaults to the local machine.
Specifies the credentials to use for the remote connection.
Specifies the name or ID of the virtual machine.
Specifies the action to perform (Enable, Disable, Reset).