文章 / 公众号历史文章
[PowerShell]人人都值得学一点PowerShell实现自动化(4)打开无穷无尽的轮子世界
经过上篇的简单示例,给大家领略了PowerShell的威力,做同样的事情,比起其他语言来,更容易实现,几乎就是需要做什么就一个命令完成。 但通常一些复杂的操作,在原生的功能上没提供,此时就需要到社区里找现成的轮子来用,本篇给大家送上几个新发现的不错的轮子,让我们的工作更加轻松,自在。 听多了pyth
经过上篇的简单示例,给大家领略了PowerShell的威力,做同样的事情,比起其他语言来,更容易实现,几乎就是需要做什么就一个命令完成。
但通常一些复杂的操作,在原生的功能上没提供,此时就需要到社区里找现成的轮子来用,本篇给大家送上几个新发现的不错的轮子,让我们的工作更加轻松,自在。
听多了python的好,经PowerShell一比就不算什么
相信在数据圈子里,或多或少都听到过python的一些宣传,同一个功能C写100行代码,python10行代码搞定。
这次好了,在PowerShell里,只需1行代码就完事,谁优谁劣,有对比就有结果。在PowerShell的轮子世界里,也是同样地追求这种1行代码解决问题的快感。
PowerShell轮子在哪里?
和dotNET的轮子库nuget一样,PowerShell一样有一个官方的轮子库powershellgallery。火热程度不及nuget,但其实从广义来说,nuget的轮子,都可以用到PowerShell上来,因为都是同样的dotNET库,PowerShell支持使用dotNET类库,只是有些麻烦,笔者也没兴趣太多研究,坐等powershellgallery慢慢繁荣起来即可。

如何安装PowerShell轮子
PowerShell的轮子叫模块,一句命令就可以安装了。按关键字找到自己需要安装的轮子,把名字记下来,就可以在PowerShell上输入Install-Module -Name 模块名进行安装。

当然,如果不想用浏览器,直接在PowerShell上用Find-Module一样可以查看到。不过信息量没有网页查看地详细。

安装过程中,可能有些小意外,不要慌,一般来说,用管理员权限打开PowerShell更为合理,如果自己写脚本给自己用的话。

查看轮子有哪些的功能
作为一个搞数据的人,哪里都离不开Excel,本篇也重点给大家介绍一个不错的Excel轮子,其底层也是用了dotNET的EPPLUS轮子作封装的,让PowerShell上与Excel交互更方便,并且性能得到保证,用的是openxml方式而不是依赖OFFICE环境的COM接口方式。
查看ImportExcel轮子有哪些功能,相对去网页上看,还不如直接在PowerShell的帮助上看,更方便,有时作者也只是维护了PowerShell里的帮助文档,反而在网页上没多少文档信息,这就是PowerShell奇特之处,用中学,自带帮助。
一般来说,只要我们导入过模块之后,右边的帮助系统里,就可以找到模块的帮助信息,如果没有,就重新用Import-Module导入一下。

随便找一句命令来试试手,Send-SQLDataToExcel,将数据库数据导出到Excel中来,数据库不限于Sqlserver,ACCESS、Excel也可以当数据库访问。

Send-SQLDataToExcel -MsSQLserver -Connection localhost -SQL "select name,type,type_desc from [master].[sys].[all_objects]" -Path F:\自媒体相关\其他文章分享\powershell\轮子\temp.xlsx -WorkSheetname master -AutoSize -FreezeTopRow -AutoFilter -BoldTopRow
就一句命令,按照人想什么,它就帮我们做成了什么,只要按格式把一些要求的参数填上,参数填得越详细,出来的结果越符合自己的期望。
如示例中展示的-AutoSize -FreezeTopRow -AutoFilter -BoldTopRow,只要会英文单词,都可以知道里面是什么意思了。
比起等现成工具给我们做界面,开放各种参数,不如自己会一点点小脚本,自己灵活配置来得舒服。

ImportExcel的许多宝藏等着挖掘
相对于像Excel催化剂那样的插件实现,自己把这个Excel轮子研究一下,可能出来的结果更合自己的口味,此轮子有大量的示例文件供学习,在github上可以找到,或者不想找,后台回复【ImportExcel】给大家发送。
忍不住给大家再展示一条命令,Excel催化剂未有实现的文件对比功能,两个工作表的数据差异对比,提供参照列,对比列的参数即可完成。最终结果如下:橙色是不同,绿色是新增,粉色是删除。

按对应的参数填写好,复制一下就完事,当然在作者的示例文档里直接复制更容易。

Merge-Worksheet -Referencefile "$env:temp\server1.xlsx" -Differencefile "$env:temp\Server2.xlsx" -OutputFile "$env:temp\combined1.xlsx" -Property name,displayname,startType -Key name -Show
数据库写入数据利器Write-ObjectToSQL
除了玩Excel外,数据库也是必玩的,所以也顺便介绍一个刚发现的不错的轮子Write-ObjectToSQL,将任何对象上传到Sqlserver中,如我们读入一个Excel文件,就可以把这个文件数据上传到Sqlserver上,无需提前建表。或者在运行过程中生成的不同的对象集合,一样可以上传。

按实际需要填写好参数。

Import-Excel -Path F:\自媒体相关\其他文章分享\powershell\轮子\combined.xlsx|Write-ObjectToSQL -Database Test -Server localhost -TableName TestTable
就这么简单,一句命令,就可以将Excel表数据上传到Sqlserver上。,并且代码也是接近人的语言,用界面填写下参数就完成了,门槛足够低。


结语
如今任何一门语言都是有大量的现成轮子存在可供使用,PowerShell的轮子也真不少,算上其微软自身产品Windows、Sqlserver、ExChange、OFFICE等等大量的现成cmdlets命令,再外加社区的轮子,有能力的话,还可以把dotNET社区里的轮子也一并使用起来,是不是非常爽了呢。
简单入门一下语法,又可以打开一扇大门,从中得到广阔的世界,这就是轮子消费者的境界。
笔者未来聚焦在数据领域的分享,不限于Excel,会分享更多Sqlserver、dotNET、Azure、PowerBI等话题,升级数据分析的能力,欢迎继续关注。*
系列文章
1-在VisualStudio上使用PowerShell https://www.jianshu.com/p/b270611bb9ea
2-有哪些可用的场景及方式?https://www.jianshu.com/p/52fbbdc4f46b
3-会使用Excel简单函数就能上手PowerShell https://www.jianshu.com/p/f22cf85afb85
关于Excel催化剂
Excel催化剂先是一微信公众号的名称,后来顺其名称,正式推出了Excel插件,插件将持续性地更新,更新的周期视本人的时间而定争取一周能够上线一个大功能模块。Excel催化剂插件承诺个人用户永久性免费使用!
Excel催化剂插件使用最新的布署技术,实现一次安装,日后所有更新自动更新完成,无需重复关注更新动态,手动下载安装包重新安装,只需一次安装即可随时保持最新版本!
Excel催化剂插件下载链接:https://pan.baidu.com/s/1Iz2\_NZJ8v7C9eqhNjdnP3Q

联系作者

公众号
取名催化剂,因Excel本身的强大,并非所有人能够立马享受到,大部分人还是在被Excel软件所虐的阶段,就是头脑里很清晰想达到的效果,而且高手们也已经实现出来,就是自己怎么弄都弄不出来,或者更糟的是还不知道Excel能够做什么而停留在不断地重复、机械、手工地在做着数据,耗费着无数的青春年华岁月。所以催生了是否可以作为一种媒介,让广大的Excel用户们可以瞬间点燃Excel的爆点,无需苦苦地挣扎地没日没夜的技巧学习、高级复杂函数的烧脑,最终走向了从入门到放弃的道路。
最后Excel功能强大,其实还需树立一个观点,不是所有事情都要交给Excel去完成,也不是所有事情Excel都是十分胜任的,外面的世界仍然是一个广阔的世界,Excel只是其中一枚耀眼的明星,还有其他更多同样精彩强大的技术、工具等。*Excel催化剂也将借力这些其他技术,让Excel能够发挥更强大的爆发!
关于Excel催化剂作者
姓名:李伟坚,从事数据分析工作多年(BI方向),一名同样在路上的学习者。
服务过行业:零售特别是鞋服类的零售行业,电商(淘宝、天猫、京东、唯品会)
技术路线从一名普通用户,通过Excel软件的学习,从此走向数据世界,非科班IT专业人士。
历经重重难关,终于在数据的道路上达到技术平原期,学习众多的知识不再太吃力,同时也形成了自己的一套数据解决方案(数据采集、数据加工清洗、数据多维建模、数据报表展示等)。
擅长技术领域:Excel等Office家族软件、VBA&VSTO的二次开发、Sqlserver数据库技术、Sqlserver的商业智能BI技术、Powerbi技术、云服务器布署技术等等。
2018年开始职业生涯作了重大调整,从原来的正职工作,转为自由职业者,暂无固定收入,暂对前面道路不太明朗,苦重新回到正职工作,对Excel催化剂的运营和开发必定受到很大的影响(正职工作时间内不可能维护也不可能随便把工作时间内的成果公布于外,工作外的时间也十分有限,因已而立之年,家庭责任重大)。
和广大拥护者一同期盼:Excel催化剂一直能运行下去,我所惠及的群体们能够给予支持(多留言鼓励下、转发下朋友圈推荐、小额打赏下和最重点的可以和所在公司及同行推荐推荐,让我的技术可以在贵司发挥价值,实现双赢(初步设想可以数据顾问的方式或一些小型项目开发的方式合作)。