欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

谁说不能用PowerShell写一个个性化磁盘信息表

程序员文章站 2024-03-15 19:59:12
...

PowerShell不仅可以用于系统和IT产品的自动化管理操作,还可以用来做些有趣的事,只要你能发挥想象力。

有一次我在国外网站上看到了一张图(如下图),是一张在PowerShell控制台里显示个性化的磁盘信息的图片。当时顿时被脑洞打开的感觉,想不到还可以写出这样的效果,思考了一会儿,分析了下眼前的画面决定自己做一个出来。这是我好多年前写的一个PowerShell脚本,觉得挺有趣的,拿出来重新精简了下。
谁说不能用PowerShell写一个个性化磁盘信息表

先来看看,做出来的效果是这样的。代码其实十分简单,只要对PowerShell基础用法的熟练加上一点点创意就行。
谁说不能用PowerShell写一个个性化磁盘信息表

大致代码分为两大块,分别分为是显示Graph图形模式和Raw原生模式。
谁说不能用PowerShell写一个个性化磁盘信息表
Raw模式的核心代码非常的简单,主要是把传入的$diskInfo对象进行数据处理,那么$diskInfo是什么呢? 因为显示磁盘的数据所用的方法是一样的,所以我把它统一保存在名为$diskInfo的变量里(在我们最外层的主代码里我们定义了$diskInfo变量,你可以下载完整代码时看到)。

$diskInfo = Get-WmiObject -Class Win32_LogicalDisk -ComputerName $ComputerName -Filter "DriveType = 3"

这里,$diskInfo对象保存着我用Get-WmiObject方法获得当前计算机磁盘信息的数据,然后我把$diskInfo分别传入两个方法并做指定的数据处理。

而下面是Graph图形模式的代码块,主要磁盘的数据依然都是从传递过来的$diskInfo对象获得的,但很多人最好奇的就是那个有颜色的进度条是如何显示出来的,其实就像我一开始说的只要发挥一下你的想象加上PowerShell基础用法的熟练你就应该能想到。
谁说不能用PowerShell写一个个性化磁盘信息表

在PowerShell里输出背景颜色有什么命令吗?仔细想想,是不是有个非常常用的Write-Host命令可以输出东西呢,而且它还有一个BackgroundColor参数,这个参数可以控制输出的背景色颜色。那么,如何模拟出进度条呢?你可以换种方式想,进度条无非就是几个方块拼出来的,那么如何让PowerShell自动为我们输出指定数量的方块呢?这时候要看你的基本功是否扎实熟练了。比如我们可以用字符串乘以指定数值的方法来做到。

PS C:\Users\Administrator> "a" * 10
aaaaaaaaaa

这种方法可以指定输出对应数量的字符。那么创建出一个进度条还不简单吗,用空格乘以对应的数值比例来模拟就行了。

代码下载地址: https://github.com/anders830/GetDiskInfo.git

相关标签: powershell