前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用PowerShell做点实用的东西--GUI设计第二弹

用PowerShell做点实用的东西--GUI设计第二弹

作者头像
盆盆
发布2019-04-24 14:54:04
3.6K0
发布2019-04-24 14:54:04
举报

PowerShell好不好?确实好,能帮助运维提升工作效率,让工作变得轻松而且高效。但是很遗憾的是,PowerShell的重要性,在国内的认知度并不够高,去看看各大招聘网站,很少有对PowerShell能力进行要求的。或者即使有要求,高薪职位也很少。

那么问题来了,这么小众的市场,还有必要学么?浪费这时间做什么?

这个问题问得好,一看就是没经过大脑。通常这类人人正直、豪爽、干活肯吃苦耐劳,简直是人格正能量的代言人。

关于PowerShell我只说一句。一群人天天走路上班,突然在你面前摆了一个机会,你只要简单的学一下,就可以骑自行车上班了。重要的是,自行车我还白送。那我问你,你是愿意继续走路还是骑车?事实是,很多人总是担心骑车怕摔,还在安心的走路。

在上一篇分享中(点击这里),我们大致了解了一下PowerShell的图形界面编程,很容易就可以将一段脚本改变成GUI程序。比如我们今天要做的程序是这样的。

高逼格计算器

这个程序和走路也有很大的关系,因为各种原因,我买了辆自行车。我只是想简单的算一下,如果我每天骑自行车上班,这个节省下来的钱,要几个月才能追的上之前坐地铁和公交的钱。这种看起来简单的问题,才是细思极恐。

需求分析

不管是写脚本还是做什么,稍微复杂一点的时候,千万不要相信自己的记忆力,西安把事情捋一捋,后面会省事很多。首先我们来看看计算公式:

  1. 北京坐公交刷卡1元起步,永不打折
  2. 北京坐地铁3元起步,100以内不打折,100到150之间打8折,150到400打5折,400之后没折扣。
  3. 每年的每个月,除了2月之外,其他月的天数都是固定的,但是4年一闰跑不掉
  4. 每年的每个月,公休日(周六周日)的天数是不一样的(法定节假日又是一个巨麻烦的计算器,这里先不考虑。)

所以说,想要计算个大概还凑合,但是想要计算的精准,不容易。

比如说,因为有折扣的存在,如果一个人单程地铁5元,和单程地铁10元,他们的交通费差距,一年是多少。你可以拍脑袋就出来么?

不写代码,谈谈实现

可能很多人一想到写程序,就得大谈特谈代码。这确实没错,但是光说代码,文章的阅读性就差了很多。这个计算器的核心在于算法,基本没有用到什么令人惊喜的编程方法。

首先,上一个小结我们提到,怎么算一个月有多少天,这个月有多少公休日。

PowerShell里面并没有直接提供当月有多少天的命令和参数,所以我用了一个方法:

#计算当月多少天,计算方式是先跳到下个月,然后天数减少一天,就是当月的最后一天,取天数

$dangyuetian=$dangyue.Date.AddMonths(1).AddDays(-1).Day

至于计算一个月有多少公休日,可以通过获取当前日期的属性查询得出,PowerShell有直接得到当前日期是星期几的方法,我们只要简单做一个检查就可以了。

if ($xingqiji-ne"Sunday"-and$xingqiji-ne"Saturday")

针对用户的输入数据,其实也要做一个限定,比如年份是4位数,月份是1到12。地铁起步价3块等等。下面的正则部分是一个叫做大表哥的网友提供的。很好用:

if ([int]$textbox6.text -match'\d{4}') { $global:nian=$textbox6.text} if (([int]$textbox5.text -match'\d{1}'-or[int]$textbox5.text -match'\d{2}') -and ([int]$textbox5.text -le12-and[int]$textbox5.text -ge1)) {$global:yue=$textbox5.text } if (([int]$textbox8.text -match'\d{1}'-or[int]$textbox8.text -match'\d{2}') -and ([int]$textbox8.text -le30-and[int]$textbox8.text -ge0)) { $global:ditie=$textbox8.text } if (([int]$textbox7.text -match'\d{1}'-or[int]$textbox7.text -match'\d{2}') -and ([int]$textbox7.text -le20-and[int]$textbox7.text -ge0)) { $global:gongjiao=$textbox7.text }

算完单月花多少钱,当然计算一下一年花多少钱会显得比较专业,这块也很好实现,只是一个简单的叠加。

写点东西,超出预期

随便说说题外话。如果说今天这个问题,让你自己计算器/Excel计算器算,都是个很麻烦的事情。写脚本可以把这个事情做的更漂亮一些。同样一件事情,能解决和解决的漂亮,其实会产生两种结果,工作中也是如此。在Windows的运维工作中,不用脚本在多数情况下都是可以完成日常工作的,但是要让工作更有价值,可以尝试下PowerShell。

还是之前说的那句话,走路还是骑车,看你。

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

本文分享自 华来四Azure混合云 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高逼格计算器
  • 需求分析
  • 不写代码,谈谈实现
  • 写点东西,超出预期
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档