PowerShell 一 初级篇

  • 1. 我为什么要写PowerShell?
  • 2. 开始我们的PowerShell之旅
    • a) 打开PowerShell
      • >使用鼠标打开
      • >使用键盘打开
    • b) 来来来,试试Hello World
      • 第一个管道操作符 |
      • 第二个符号条件查询 ?
      • 第三个符号自动变量 $_
      • 第四个符号比较运算符 -eq
  • 3. 结束语

可能大家看到这个标题要说我是标题党了,不过没关系了。这篇文章算是我的处女作,所以再怎么花哨我都不觉得过分。好啦,废话不多讲。

作为一个考试不喜欢写作文,工作不喜欢写总结,平时不喜欢写日记的人----我居然写blog了。工作10年之后我开始写blog了!!!!天啊我到底是哪根筋不对。

1. 我为什么要写PowerShell?

其实没有太多原因,本人平生所学驳杂,但是无一专精,实在惭愧。但是PowerShell又是自己在平时日常工作中用的最多的一种脚本语言,所以就选他了。但是在这里我不会系统的讲什么是PowerShell,语法是什么,只是给大家分享一些日常使用的小技巧,来帮助我们提高工作效率.

可能大家要问了,不是有Python吗?不好意思本人用powershell的时候Python还没有现在这么火。况且语言没有好坏,适合自己的才是最好的。

2. 开始我们的PowerShell之旅

用Mac/Linux的大神们出门右拐。
其实我个人对PowerShell是有感情的。为啥?因为他简单上手快,Windows原生的。而且自从PowerShell开源之后发展迅速,功能强大,扩展性好。而且在Windows平台下的Server管理异常的强大,简直就如同Linux下的Shell。

a) 打开PowerShell

>使用鼠标打开

点击开始->Windows PowerShell ,就打开了一个PowerShell的运行环境

>使用键盘打开

1 按Windows->输入PowerShell

2 按Windows+R->输入PowerShell

b) 来来来,试试Hello World

来看看我们的系统里面都有那些程序在跑

Get-Process


啊?什么?
你们说这不是Hello World 别天真了,都这么时代了还要真的来个Hello World?
来吧来吧

Write-host "Hello World"

言归正传,我们再来看看有几个powershell进程

get-process | ?{$_.Name -eq "powershell"}

结果如下

我们来看下这条简单语句中包含的几个神奇的符号

符号 含义
| 管道操作符
? 相当于命令 where-object 设置查询条件
$_ 自动变量
-eq 比较运算符

第一个管道操作符 |

这个管道操作符可以说简直是PowerShell的艺术魅力所在。在PowerShell里面一切输入输出皆为对象(区别与其它的脚本语言),任何对象都可以往管道里面塞。

那么何为对象(单生狗请忽略)?何为管道?

对象我不解释了,大家都是老司机了谁有没有点面向对象的sense是吧。这个特点其实是基于高级语言而来的,因为PowerShell是基于C#开发的,而C#是强类型的高级语言,一切实例皆为对象。所以PowerShell也继承了这个优点。所以其实PowerShell其实是可以和C#无缝集成的。那么使用过C#的老司机要恭喜你了,完全没压力使用PowerShell,完全不需要什么学习成本。分分钟就能学会。

管道呢?字面意思大家都能理解。一根管子嘛,这头进去,那头出来。但是真正的艺术不在于一根管道。

想象一下我们把多跟管子用接头链接起来,然后把生产原料(对象)从管子的一头放进去,会从管子的另一头出来什么?哈哈当然还是生产原料(对象)这一点很重要。你们可能要骂我了,这说了等于没说。

我们再想象一下如果链接管子的不再是接头而是各种各样的生产设备,那么另一头出来的有可能是美酒,有可能汽油,有可能是牛奶或者奶粉。就像下面这张图。没错这才是管道艺术,你不需要关心里面发生了什么,只需要用管道链接你的生产设备(处理程序)那么就能创造出你想要的艺术。

那么PowerShell也是可以这样的,我们可以用多个管道符来链接不同的处理程序,然后最终输出我们想要的结果。
比如:

Command-1 | Command-2 | Command-3

不过瘾?来看个稍微复杂点的

Get-ChildItem -Path *.txt |Where-Object {$_.length -gt 10000} |Sort-Object -Property length |Format-Table -Property name, length

还可以简化一下

Get-ChildItem -Path *.txt | ?{$_.length -gt 10000} | sort  -Property length | ft -Property name, length

是不是碉堡了?

如果要实现同样的功能,用C#或者其它高级语言的代码量是可以想象的。当然我们不用关心这段代码的实际意义哈:)
关于管道符的更多官方解释请移步这里。E文嘛,没关系,微软貌似可以直接转中文的,如果觉得转的不好看可以来找我。 当然观看文档的时候请注意你自己使用的版本。

第二个符号条件查询 ?

? – 实际上他是 where-object 的别名,就是为了图方便。当然你也可以把它设置成其它符号,但是建议不要有这样的骚操作。因为别人不知道,你也可能忘记,在将来的某一天你一定会说 我艹。
那么这个东西有啥用?你在数据库里面的where有啥用,这个就有啥用。就是要在茫茫对象中找到你的那个它,然后用管道送到下一站盘它。上一个管道符已经演示了,这里就不赘述了。

第三个符号自动变量 $_

PowerShell 有很多保留的自动变量。$_ 就是其中之一。啥是自动变量呢?就是在你的脚本运行过程中运行环境自动申明和赋值的一些变量,在合适的情况下直接引用就可以了。但是还是要注意上下文。

$_ 在管道操作过程中使用的最多。
比如下面这段代码:

Get-ChildItem -Path *.txt | %{Write-Host $_.FullName}

输出如下:

那么看到这里的你想象一下下面这段代码的第二个 $_ 是什么类型的呢?

Get-ChildItem -Path *.txt | %{Write-Host $_.FullName} | %{Write-host $_.length}

第四个符号比较运算符 -eq

老司机们是不是是个编程语言都有比较?如果没有,那就是我孤陋寡闻,请不要吐口水。

那为啥PowerShell要高些这么奇怪的运算符呢?不是C#无缝集成吗?因为PowerShell里面好多运算符都被保留作他用了,确切的说是Windows本身也有好多保留的符号。比如 &> , < , ^| 至于这些符号在Windows里面有啥特殊含义,不属于本文讨论范围。

所以自己挖的坑跪着也要把他填完。于是PowerShell搞了一套奇怪的逻辑运算符,比较运算符, 算术运算符。
下面列几个跟本文相关的几个比较运算符:

3. 结束语

你掌握的语言已经足够强大,没有发挥出应有的作用可能是姿势不对。
哎呀不行了,第一篇blog写的我两眼发花,高龄搬砖家真的伤不起。共勉,共勉。
晚安了各位!

我会定期更新PowerShell相关的系列文章帮你提高搬砖效率。
有什么需求的也可以直接私信我,我会把我所知道的分享给大家。

整理了部分近期发布的文章仅供大家参考:

  1. 为什么大神们的文章看起来那么酷?除了写的好还使用了生动的动图(gif)。一款【免费】的动图工具screentogif了解一下
  2. Powershell:使用PSCustomObject,序列化执行结果
  3. PowerShell: 为啥大神们的PowerShell窗口还有智能提示?因为他设置了这个
  4. PowerShell: 远程管理除了知道Invoke-Command,还应该掌握Enter-PSSession这个命令
  5. PowerShell: RDP管理服务器效率低下,使用invoke-command同时维护多台服务器不再难
  6. PowerShell:用原生PowerShell就能解决访问web资源时的ADFS认证问题
  7. PowerShell:不需要学Python,使用powershell也能处理Excel提高办公效率
  8. PowerShell:作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了

PowerShell: 作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了相关推荐

  1. 超级菜鸟如何快速入门数据分析?

    从事数据科学行业差不多快5年了,自行设计开发过两套数据分析平台,对业务数据分析深有体会,本人深恶痛绝那种<5天学会数据分析>的课程或者趴一下甩出来一堆技能列表与书单的回答. 我们知道,数据 ...

  2. 一个新手菜鸟的JVM 入门初体验

    话说现在jdk已经有好多个版本了,官网楼一眼:https://blogs.oracle.com/java-platform-group/the-arrival-of-java-13 已经13了. 以前 ...

  3. 基于菜鸟教程快速入门Vue2.0

    runoob:run noob 的合并,原意 奔跑吧菜鸟 依据个人经验: 将<style>标签放到html对应的<head>标签中 <script>标签放到< ...

  4. 快速入门PyTorch(3)--训练一个图片分类器和多 GPUs 训练

    2019 第 44 篇,总第 68 篇文章 本文大约14000字,建议收藏阅读 快速入门 PyTorch 教程前两篇文章: 快速入门Pytorch(1)--安装.张量以及梯度 快速入门PyTorch( ...

  5. 【完结】12大深度学习开源框架(caffe,tf,pytorch,mxnet等)快速入门项目

    这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpeng2008/yousa ...

  6. 【完结】给新手的12大深度学习开源框架快速入门项目

    文/编辑 | 言有三 这是一篇总结文,给大家来捋清楚12大深度学习开源框架的快速入门,这是有三AI的GitHub项目,欢迎大家star/fork. https://github.com/longpen ...

  7. ue4显示变量_UE4:快速入门蓝图(Blueprint)的方法之一

    UE4:快速入门蓝图(Blueprint)的方法之一 前言: 不久前因为工作的需要,学习了一下UE4的蓝图,发现并没有想象中的那么难以入门.今天把入门的方法和大家分享:D 适读人群: 1 有一定编程基 ...

  8. Enterprise Library 缓存应用程序块快速入门

    Enterprise Library 快速入门是简单的.易于理解的应用程序块关键特性的示例,使用了一个实现了常规场景的漫游集合来说明这些特性. 如果要理解一个应用程序块,快速入门将是理想的起始点,并且 ...

  9. UE4:快速入门蓝图(Blueprint)的方法之一

    UE4:快速入门蓝图(Blueprint)的方法之一 前言: 不久前因为工作的需要,学习了一下UE4的蓝图,发现并没有想象中的那么难以入门.今天把入门的方法和大家分享:D 适读人群: 1 有一定编程基 ...

最新文章

  1. windows2008 R2 如何建立FTP站点
  2. 创建查看修改数据库及数据表
  3. thinkphp curd的事务回滚 一看就会
  4. PHP 入门 - 1.语言基础
  5. mysql按月进行表分区
  6. YBTOJ洛谷P3750:分手是祝愿(期望dp)
  7. apache kafka_Apache Kafka消费者再平衡
  8. 【转】Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)
  9. C语言1379最小公倍数,求最小公倍数的三种方法
  10. 论文详读《基于改进 LeNet-5 模型的手写体中文识别》
  11. 关于原子的电子组态、谱项和精细结构
  12. javascript-异步之Promise then和catch
  13. 典故:一文钱难倒英雄汉
  14. 如何获取有价值的用户反馈?
  15. windows环境下编译ACE+TAO问题及解决办法
  16. 18级计算机应用基础期中考试题,早安正能量 励志新开始---法学与社会学学院18级新生开展早自习活动...
  17. Outlook打不开的问题
  18. Android创建子线程和回调主线程的几种方式
  19. 做PPT不要傻乎乎直接插入图片,一键处理,秒变高逼格
  20. 北邮计算机学院acm,计算机学院学生在2018年ACM-ICPC中国大学生程序设计竞赛中喜获佳绩...

热门文章

  1. Nginx系列教材 (五)- 和Tomcat进行负载均衡
  2. USB | 1. 技术演进及测试概览
  3. 电子印章助推《上海市公共数据和一网通办管理办法》施行
  4. 雷达信号处理-雷达应用
  5. 11.21的自动锁屏 ios_iPhone11 的新手小技巧
  6. linux 筛选重复数据,Linux下uniq筛选
  7. “信息安全产品”的昨天、今天和明天
  8. 根据特征图画热图_heatmap
  9. 深度测评:RAKsmart美国站群服务器怎么样
  10. Pytorch警告UserWarning: Loky-backed parallel loops cannot be called in a multiprocessing