您的位置:首页 > 运维架构 > Shell

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

2018-02-24 18:42 127 查看
PowerShell不仅可以用于系统和IT产品的自动化管理操作,还可以用来做些有趣的事,只要你能发挥想象力。

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



先来看看,做出来的效果是这样的。代码其实十分简单,只要对PowerShell基础用法的熟练加上一点点创意就行。



大致代码分为两大块,分别分为是显示Graph图形模式和Raw原生模式。



Raw模式的核心代码非常的简单,主要是把传入的$diskInfo对象进行数据处理,那么$diskInfo是什么呢? 因为显示磁盘的数据所用的方法是一样的,所以我把它统一保存在名为$diskInfo的变量里(在我们最外层的主代码里我们定义了$diskInfo变量,你可以下载完整代码时看到)。

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


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

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



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

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


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

代码下载地址: https://github.com/anders830/GetDiskInfo.git
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  powershell
相关文章推荐