谁说不能用PowerShell写一个个性化磁盘信息表
2018-02-24 18:42
127 查看
PowerShell不仅可以用于系统和IT产品的自动化管理操作,还可以用来做些有趣的事,只要你能发挥想象力。
有一次我在国外网站上看到了一张图(如下图),是一张在PowerShell控制台里显示个性化的磁盘信息的图片。当时顿时被脑洞打开的感觉,想不到还可以写出这样的效果,思考了一会儿,分析了下眼前的画面决定自己做一个出来。这是我好多年前写的一个PowerShell脚本,觉得挺有趣的,拿出来重新精简了下。
先来看看,做出来的效果是这样的。代码其实十分简单,只要对PowerShell基础用法的熟练加上一点点创意就行。
大致代码分为两大块,分别分为是显示Graph图形模式和Raw原生模式。
Raw模式的核心代码非常的简单,主要是把传入的$diskInfo对象进行数据处理,那么$diskInfo是什么呢? 因为显示磁盘的数据所用的方法是一样的,所以我把它统一保存在名为$diskInfo的变量里(在我们最外层的主代码里我们定义了$diskInfo变量,你可以下载完整代码时看到)。
这里,$diskInfo对象保存着我用Get-WmiObject方法获得当前计算机磁盘信息的数据,然后我把$diskInfo分别传入两个方法并做指定的数据处理。
而下面是Graph图形模式的代码块,主要磁盘的数据依然都是从传递过来的$diskInfo对象获得的,但很多人最好奇的就是那个有颜色的进度条是如何显示出来的,其实就像我一开始说的只要发挥一下你的想象加上PowerShell基础用法的熟练你就应该能想到。
在PowerShell里输出背景颜色有什么命令吗?仔细想想,是不是有个非常常用的Write-Host命令可以输出东西呢,而且它还有一个BackgroundColor参数,这个参数可以控制输出的背景色颜色。那么,如何模拟出进度条呢?你可以换种方式想,进度条无非就是几个方块拼出来的,那么如何让PowerShell自动为我们输出指定数量的方块呢?这时候要看你的基本功是否扎实熟练了。比如我们可以用字符串乘以指定数值的方法来做到。
这种方法可以指定输出对应数量的字符。那么创建出一个进度条还不简单吗,用空格乘以对应的数值比例来模拟就行了。
代码下载地址: https://github.com/anders830/GetDiskInfo.git
有一次我在国外网站上看到了一张图(如下图),是一张在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
相关文章推荐
- 一次ORA-15055 ORA-12547 RAC中一个节点不能识别asm磁盘解决办法
- win7个性化不能换桌面:此页面上的一个或多个设置已被系统管理员禁用……
- 建立一个别人不能碰触的无敌文件夹
- 错误:在一个线程上创建的控件不能成为在另一个线程控件的父级(处理方法)
- 一个另类的错误:不能打开CHM文件居然和目录名称有关
- 为何cnblogs上所有的站点不能用同一个帐户呢?
- virtualbox更新完无法启动的问题(不能为虚拟电脑 Ubuntu 打开一个新任务)
- win7系统下VirtualBox升级后不能为虚拟电脑打开一个新任务
- C++ 设计一个不能被继承的类 《两种方法》
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 关于VS2010不能显示类视图和资源视图的其中一个原因
- 传递一个指针进去用(指针不能被修改)*p;
- 阵列卡,组成的磁盘组就像是一个硬盘,pci-e扩展出sata3.0
- 一个类应该要么声称,“你不能破坏我,我对你来说是个黑盒”,要么“我已经被破坏了;先修复我然后再使用我”(转)
- 教你建立一个别人不能碰触的无敌文件夹
- VMware:无法打开磁盘G;\******.vmdk 或者某一个快照所依赖的磁盘
- 虎嗅网是一个有视角的、个性化商业资讯与交流平台,核心关注对象是包括公众公司与创业型企业在内的一系列明星公司
- 安装OFFICE提示“windows installer服务不能更新一个或多个受保护的windows文件”解决办法
- 使用 PowerShell 管理 Azure 磁盘
- 黑马程序员--图形界面中的鼠标,键盘两个事件,做一个磁盘的文件列表,菜单,子菜单,模拟记事本。网络编程,TCP的通信协议的特点