前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[PowerShell]人人都值得学一点PowerShell实现自动化(4)打开无穷无尽的轮子世界

[PowerShell]人人都值得学一点PowerShell实现自动化(4)打开无穷无尽的轮子世界

作者头像
Excel催化剂
发布2021-08-20 15:36:41
1.3K0
发布2021-08-20 15:36:41
举报
文章被收录于专栏:Excel催化剂Excel催化剂

经过上篇的简单示例,给大家领略了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也可以当数据库访问。

代码语言:javascript
复制
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催化剂未有实现的文件对比功能,两个工作表的数据差异对比,提供参照列,对比列的参数即可完成。最终结果如下:橙色是不同,绿色是新增,粉色是删除。

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

代码语言:javascript
复制
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上,无需提前建表。或者在运行过程中生成的不同的对象集合,一样可以上传。

按实际需要填写好参数。

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 听多了python的好,经PowerShell一比就不算什么
  • PowerShell轮子在哪里?
  • 如何安装PowerShell轮子
  • 查看轮子有哪些的功能
    • ImportExcel的许多宝藏等着挖掘
      • 数据库写入数据利器Write-ObjectToSQL
      • 结语
      • 系列文章
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档