[玩转系统] 创建 Hyper-V VM 内存报告
作者:精品下载站 日期:2024-12-14 07:46:20 浏览:14 分类:玩电脑
创建 Hyper-V VM 内存报告
我使用 Hyper-V 来运行我的实验室环境。由于我在家工作,无法访问“真实”的生产网络,因此我必须使用虚拟化环境。考虑到预算限制,我也没有大量具有无限内存和存储空间的高端硬件。因此,我经常使用最低限度的内存来运行虚拟机。大多数时候这不是问题。不过,有时我需要快速查看我用了多少内存。我可以使用 Get-VMMemory 或 Get-VM cmdlet。
后一个 cmdlet 包含更多细节。
所有值均以字节为单位,我知道我可以使用自定义哈希表将其转换为 MB。但我不想一直这样做,因此我创建了一个命令来获取详细的虚拟机内存。
#requires -version 4.0
#requires -module Hyper-V
Function Get-VMMemoryReport {
<#
.Synopsis
Get a VM memory report.
.Description
This command gets memory settings for a given Hyper-V virtual machine. All memory values are in MB. The Utilization value is the percentage of assigned memory is use or in demand.
The command requires the Hyper-V module and must be run in an elevated PowerShell session.
.Parameter VMName
The name of the virtual machine or a Hyper-V virtual machine object. This parameter has an alias of "Name."
.Parameter VM
A Hyper-V virtual machine object. See examples.
.Parameter Low
Filter out virtual machines without memory issues. Only get virtual machines with a Low memory status.
.Parameter Computername
The name of the Hyper-V server to query. The default is the local host. The parameter has an alias of CN.
.Example
PS C:\> Get-VMMemoryReport chi-core01 -ComputerName chi-hvr2
Computername : CHI-HVR2
Name : CHI-CORE01
Status : Low
Dynamic : True
Assigned : 514
Demand : 472
Utilization : 91.83
Startup : 512
Minimum : 512
Maximum : 1024
Buffer : 20
Priority : 50
Get a memory report for a single virtual machine.
.Example
PS C:\> Get-VM -computer chi-hvr2 | where {$_.state -eq 'running'} | Get-VMMemoryReport | Sort Status,Name | Out-Gridview -title "Memory Report"
Display a memory report for all running VMs using Out-Gridview.
.Example
PS C:\> get-vmmemoryreport -low -cn chi-hvr2 | format-table Name,Assigned,Demand,Utilization,Maximum
Name Assigned Demand Utilization Maximum
---- -------- ------ ----------- -------
CHI-SQL01 2586 2534 97.99 4096
CHI-FP02 846 812 95.98 2048
CHI-CORE01 514 483 93.97 1024
Get virtual machines with a low memory status.
.Example
PS C:\> get-content d:\MyVMs.txt | get-vmmemoryreport | Export-CSV c:\work\VMMemReport.csv -notypeinformation
Get virtual machine names from the text file MyVMs.txt and pipe them to Get-VMMemoryReport. The results are then exported to a CSV file.
.Example
PS C:\> get-vm -computer chi-hvr2 | get-vmmemoryreport | Sort Maximum | convertto-html -title "VM Memory Report" -css c:\scripts\blue.css -PreContent "<H2>Hyper-V Memory Report</H2>" -PostContent "<br>An assigned value of 0 means the virtual machine is not running." | out-file c:\work\vmmemreport.htm
Get a memory report for all virtual machines, sorted on the maximum memory property. This command then creates an HTML report.
.Notes
Last Updated: July 20, 2015
Version : 3.0
.Link
Get-VM
Get-VMMemory
.Inputs
String
Hyper-V virtual machine
.Outputs
Custom object
#>
[cmdletbinding(DefaultParameterSetName="Name")]
Param(
[Parameter(Position=0,HelpMessage="Enter the name of a virtual machine",
ValueFromPipeline,ValueFromPipelineByPropertyName,
ParameterSetName="Name")]
[alias("Name")]
[ValidateNotNullorEmpty()]
[string]$VMName="*",
[Parameter(Position=0,Mandatory,HelpMessage="Enter the name of a virtual machine",
ValueFromPipeline,ValueFromPipelineByPropertyName,
ParameterSetName="VM")]
[ValidateNotNullorEmpty()]
[Microsoft.HyperV.PowerShell.VirtualMachine[]]$VM,
[switch]$Low,
[ValidateNotNullorEmpty()]
[Parameter(ValueFromPipelinebyPropertyName)]
[ValidateNotNullorEmpty()]
[Alias("CN")]
[string]$Computername=$env:COMPUTERNAME
)
Begin {
Write-Verbose "Starting $($MyInvocation.Mycommand)"
#initialize an array to hold results
$data = @()
} #begin
Process {
if ($PSCmdlet.ParameterSetName -eq "Name") {
Try {
$VMs = Get-VM -name $VMName -ComputerName $computername -ErrorAction Stop
}
Catch {
Write-Warning "Failed to find VM $vmname on $computername"
#bail out
Return
}
}
else {
$VMs = $VM
}
foreach ($V in $VMs) {
#get memory values
Try {
Write-Verbose "Querying memory for $($v.name) on $($computername.ToUpper())"
$memorysettings = Get-VMMemory -VMName $v.name -ComputerName $Computername -ErrorAction Stop
if ($MemorySettings) {
#calculate memory utilization if VM is running
if ($v.State -eq 'running') {
#calculate % to 2 decimal points
$util = [math]::Round(($v.MemoryDemand/$v.MemoryAssigned)*100,2)
}
else {
$util = 0
}
#all values are in MB
$hash=[ordered]@{
Computername = $v.ComputerName.ToUpper()
Name = $V.Name
Status = $v.memoryStatus
Dynamic = $V.DynamicMemoryEnabled
Assigned = $V.MemoryAssigned/1MB
Demand = $V.MemoryDemand/1MB
Utilization = $util
Startup = $V.MemoryStartup/1MB
Minimum = $V.MemoryMinimum/1MB
Maximum = $V.MemoryMaximum/1MB
Buffer = $memorysettings.buffer
Priority = $memorysettings.priority
}
#write the new object to the pipeline
$data+= New-Object -TypeName PSObject -Property $hash
} #if $memorySettings found
} #Try
Catch {
Throw $_
} #Catch
} #foreach $v in $VMs
} #process
End {
if ($Low) {
Write-Verbose "Writing Low memory status objects to the pipeline"
$data.where({$_.status -eq 'Low'})
}
else {
Write-Verbose "Writing all objects to the pipeline"
$data
}
Write-Verbose "Ending $($MyInvocation.Mycommand)"
} #end
} #end Get-VMMemoryReport
#set an alias
Set-Alias -name gvmr -Value Get-VMMemoryReport
我在过去几年中发布了此函数的版本,因此您可能遇到过早期的迭代。此版本的主要变化是我正在计算内存需求与分配的利用率百分比。我还添加了一个开关,以仅显示具有低内存状态的虚拟机,因为这通常是我想知道的最重要的事情。
现在我可以轻松获取单个虚拟机的信息
或多个:
Get-VMMemoryReport -Computername chi-hvr2 -low | out-gridview -title "Low Memory"
显然我的 SQL Server 需要一些关注。
我希望你能尝试一下并让我知道你的想法。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag