在PowerShell中获取磁盘使用情况

时间:2018-03-04 16:55:03

标签: powershell

我正在尝试获取当前磁盘使用活动并以xaml形式显示它。我试图谷歌如何做到这一点,但每个人只是谈论MB可用/使用。 我想在Windows 10的任务管理器中显示磁盘活动时间的百分比。

我试图找到一种方法来获取Get-Counter以及collect1的信息,但这些信息似乎都不起作用,我在起点上迷失了。

2 个答案:

答案 0 :(得分:0)

<强> 8 ^}

你必须用你选择的Search-Fu风格训练(无论风格/引擎)。掌握所选择的风格,只有理解,承诺和冥想

<强> 8 ^}

如果您没有提出搜索引擎的正确问题,那么您将无法获得您所追求的结果。您的答案可能永远不会在一个源/一个搜索中。所以,像Lays薯片一样,不要只做一个。

使用 &#39; PowerShell磁盘使用gui&#39; 进行简单的字符串搜索会返回大量的商品详情。以下示例,如---

  

*我想显示磁盘显示的百分比*

---空间或煮熟时间。

这只是基本的数学。是的,PoSH可以用作计算器来做这类事情,就像所有的MB公式一样,只是基本的数学。好吧,并使用正确的对象。再看下面。

那么,你是否要求我们为你做基础数学?

好吧,使用相同的搜索字符串并添加单词 &#39;百分比&#39; ,也可以为您提供。见下文。好吧,并在任务管理器中为 &#39;磁盘活动时间添加一个字符串&#39;

为什么Xaml,Excel,图形,图表有什么问题?只是好奇吗?

BTW ...所有字符串搜索的总时间为30-60秒。

  

Powershell磁盘使用情况报告

     

我有以下脚本将从远程服务器收集磁盘使用情况统计信息。

     

Powershell Disk Usage Report

     

使用PowerShell创建显示可用磁盘空间的报告

     

我知道可能很难相信今天笔记本电脑上的多TB磁盘时代,但我们的服务器不断耗尽磁盘空间。

     

https://blogs.technet.microsoft.com/heyscriptingguy/2012/08/08/use-powershell-to-create-a-report-displaying-free-disk-space

     

PowerShell - 磁盘空间监控和预警报告

     

https://dataginger.com/2016/06/09/powershell-sql-server-disk-space-monitoring-and-reports

预建脚本:

  

无论您在服务器中运行的服务是多少,无论您有多大的空间,磁盘空间都会经常耗尽空间。我知道存储空间很便宜,但谁也不想留意什么是烹饪,特别是当它有可能让事情停止时?

     

用于报告服务器上的可用磁盘空间的PowerShell脚本

     

此PowerShell脚本计算多个服务器(来自文本文件)中的可用磁盘空间以及csv报告的电子邮件副本。该脚本旨在仅报告可用空间少于10%的服务器。提供定制信息。请评价,发表评论并提出问题。

     

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Script-Sample-f7164554

     

用于监控企业级磁盘空间使用情况的PowerShell脚本

     

负责管理数千台Windows服务器的人都知道监控磁盘空间对于应用程序性能至关重要。当有许多Windows服务器(例如数千台)时,要知道发生了什么变得更加困难;因此,为主动监测目的,建立有效的监测工具是绝对必要的。

     

http://sqltouch.blogspot.com/2014/01/a-powershell-script-to-monitor.html

至于GUI - XAML尽管......

  

PowerShell - 磁盘空间GUI工具 - 共享有用的PowerShell GUI脚本,以检查磁盘驱动器的使用情况以及图表。

     

将以下代码复制并粘贴到Powershell-ISE上以便更好地执行。

     

https://sqlpowershell.wordpress.com/2013/10/14/powershell-disk-space-gui-tool

PowerShell - 磁盘空间Utlization GUI工具

代码已更新。此PowerShell GUI脚本允许您查询任何本地计算机或远程计算机的磁盘空间详细信息。该脚本可以获取给定计算机的磁盘空间详细信息,并生成显示每个驱动器的磁盘空间利用率的图表。

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Disk-Space-cf5568f4

  

PowerShell - 磁盘空间GUI - 工具 - 多个服务器

     

此工具可帮助您获取所选计算机上的磁盘空间信息。您可以键入输入文件的路径或点击“浏览按钮”以使用对话框选项选择文件。选择输入文件并点击“GetDisk&#39;”。它将查询磁盘空间信息fr

     

https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Disk-Space-GUI-cc47eedd

那个百分比......

  

帮助命令获取剩余磁盘空间百分比(%)   https://social.technet.microsoft.com/Forums/scriptcenter/en-US/18a9978e-834e-4dc4-b84a-6e8c83a2b81a/help-with-command-to-get-remaining-disk-space-in-percent-?forum=winserverpowershell

     

PowerShell:磁盘空间GUI工具(上面的GUI另一个artilce)

     

监控服务器资源是任何管理员的重要工作。保持组织有序可以提高应用程序可用性和服务器可用性作为一名数据库管理员已经面临和处理/管理了许多磁盘空间问题。很多时候我们最终会遇到I / O瓶颈,并且磁盘用完了事务日志文件的空间。为了解决这个问题,我们设计了一个简单的GUI工具,它具有各种功能,并快速带我们了解服务器的磁盘空间利用率细节。你基本上会给它提供一个要监视的服务器列表,它会为你报告这些,这意味着你也可以将它用作更通用的“每日服务器磁盘空间报告”

     

https://social.technet.microsoft.com/wiki/contents/articles/34900.powershell-disk-space-gui-tool.aspx

     

使用PowerShell监控存储磁盘队列和IO

     

使用Server 2008,任务管理器的资源监视器功能将帮助您查找这些项目。但在服务器2003中,这是一项危险的任务。每个进程的磁盘io的具体详细信息存储在运行的每个特定进程下的性能监视器中。试图分析每个过程是一个巨大的痛苦,但powershell可以做一些非常聪明的工作,以帮助缓解这一点!

     

http://andrewmorgan.ie/2012/11/monitoring-storage-disk-queues-and-io-with-powershell

答案 1 :(得分:0)

我实际上确实找到了解决方案。我一直在寻找磁盘活动时间而不是使用时间。无法轻松地获取信息,但是我在网上找到了一些可以修改的代码。我不记得来源了,否则我会找到它。

$Sleep=10
$Idle1=$DiskTime1=$T1=$Idle2=$DiskTime2=$T2=1

$Disk = Get-WmiObject -class Win32_PerfRawData_PerfDisk_LogicalDisk `
-filter "name= 'C:' "
[Double]$Idle1 = $Disk.PercentIdleTime
[Double]$DiskTime1 = $Disk.PercentDiskTime
[Double]$T1 = $Disk.TimeStamp_Sys100NS

start-Sleep $Sleep

$Disk = Get-WmiObject -class Win32_PerfRawData_PerfDisk_LogicalDisk `
-filter "name= 'C:' "
[Double]$Idle2 = $Disk.PercentIdleTime
[Double]$DiskTime2 = $Disk.PercentDiskTime
[Double]$T2 = $Disk.TimeStamp_Sys100NS

$PercentIdleTime =[math]::Round((($Idle2 - $Idle1) / ($T2 - $T1)) * 100)
$PercentDiskTime =[math]::Round((($DiskTime2 - $DiskTime1) / ($T2 - $T1)) * 100)

$PercentDiskTime反映了您在任务管理器上的图表中看到的最佳活动时间。 调整$Sleep可以提供一段时间内的平均值。我发现任何超过10秒且小于3秒的数据对于实时数据来说都是不准确的。



对于任何想以百分比形式查看实际磁盘使用情况的人:

[string[]]$Computer = $env:COMPUTERNAME
$Disk = Get-WMIObject Win32_Logicaldisk -filter "deviceid='C:'"
$FreeSpacePer = ((($Disk.Freespace /1Gb -as [float]) / ($Disk.Size / 1Gb -as [float]))*100) -as [int]
$SpaceUsePer = 100 - $FreeSpacePer