powershell - Powershell - 可变数量的驱动器
问题描述
所以,我要把这个扔掉。我正在尝试为一堆系统编写一个简单的健康检查。我知道有些产品可以做到这一点,诸如此类。这是一种特殊的孤立情况,除非软件事先获得批准,否则我什至不能考虑免费软件选项。我拼凑了以下内容:
Clear-Host
$date = Get-Date -Format "yyyy-MM-dd"
$cpuTime = (Get-Counter '\Processor(_Total)\% Processor Time').CounterSamples.CookedValue
$availMem = (Get-Counter '\Memory\Available MBytes').CounterSamples.CookedValue / 1024
$totalRam = (Get-WmiObject Win32_ComputerSystem).totalphysicalmemory / (1024 * 1024 * 1024)
$DiskUsageC = (Get-Counter '\LogicalDisk(C:)\% Free Space').CounterSamples.CookedValue
$env:computername + "`t`t" + $date + "`t`t CPU Usage: " + $cpuTime.ToString("#,0.0") + "%" + "`t`t Memory Usage: " + ($availMem / $totalRam *100).ToString("#,0.0") + '%' + "`t`t Hard Disk Usage: " + " (C:) " + $DiskUsageC.ToString("#,0.0") + "%" | Out-GridView -Title 'System Health Check'
它绝不是完美的,也不是干净的。我是SA。不是开发商。它通过调整其他 ppls 代码拼凑在一起。我的问题是,有没有一种好方法,而不是在代码中明确说明驱动器,我可以设置一个变量,它会适应驱动器的数量并给我它们的使用百分比?这些是具有不同数量驱动器的服务器。任何人都可以提供建议或指出正确的方向吗?
提前感谢您的帮助!
解决方案
所以让我们谈谈POWERSHELL。
在 Powershell 中,我们喜欢使用Pipe |
。这意味着将命令连接在一起以获取我们想要的数据。一旦命令完成,它将通过管道 |
将响应传递给下一个命令。使用了一个 Magic 变量来表示传递的响应,即$_
.
在这种情况下,您似乎想要构建一种传感器。
所以让我们解决这个问题
有一个命令叫做Get-PSDrive
它基本上可以让你与操作系统环境进行交互。
如果你跑步Get-PSDrive
,你会得到类似的东西
Name Used (GB) Free (GB) Provider Root CurrentLocation
---- --------- --------- -------- ---- ---------------
Alias Alias
C 101.05 314.08 FileSystem C:\ Users\Andrew Davis\Documents\Scripts\Powershell\Autoload\ActiveDirectory
Cert Certificate \
D 79.95 576.85 FileSystem D:\
我们要找的是 Provider 而我们想要的Provider是FileSystem。
所以让管道
Get-PSDrive -PSProvider 'FileSystem' | Foreach-Object{
"Drive: $($_.Name), Free Space : $([math]::Round($_.Free / 1GB, 1)) GB"
}
会返回类似的东西
Drive: C, Free Space : 314.1 GB
Drive: D, Free Space : 576.8 GB
Drive: E, Free Space : 0.8 GB
Drive: F, Free Space : 6.2 GB
Drive: G, Free Space : 73.3 GB
Drive: H, Free Space : 29 GB
Drive: I, Free Space : 6.6 GB
Drive: J, Free Space : 24 GB
推荐阅读
- data-science - 考虑到销售额有自然增长,如何建立统计模型来确定网站内容的更新是否促进了销售额
- javascript - 我将如何测试具有内部承诺的功能?
- vba - 遍历文件夹中的所有 Excel 工作簿并将所有公式转换为值
- javascript - 微服务架构和 MySQL 数据库分页
- ms-access - MS Access 打印页边距重置。
- opengl - GLSL 空函数使代码工作
- html - 害怕 CSS 会被其他 css 文件覆盖
- swift - Swift:复制 UInt32 缓冲区的最快方法
- c++ - SDL/C++:如何平滑但随机地移动矩形?
- angular - 没有 detectChanges 测试 observables 失败