powershell作为一种脚本语言,和同是脚本语言的python在语法上有比较大的相似度

语法规则

在powershell中的命令都是以动词-名词的形式进行的,比如get-process这样的语法规则让我们在不需要记住大量的命令,查找文档就可对进行脚本编程。这个也被称为cmdlet命令

一般的cmd命令都是输入一行然后enter的,在python的交互界面IDLE中也是这样,这个是所有terminal的特性,在power shell中每当我们输入了一次enter,就相当于启动了新的管道。键入的任何命令运行该单个管道中。 在管线的结束时,Windows PowerShell 将其内容转换为其文本显示。 运行时在两个命令在普通控制台中,就已经在两个不同的管道中。当然可以在一个管道中运行多个命令,这个时候需要使用冒号隔开,比如get-serviece;get-process,代码由一系列语句构成,每条语句可以使用一个分号结束,当然也可以不写。按照习惯是不写分号的,因此要用换行来区分不同的语句,如果必须写到一行中,那就在每一句后加个分号

在输入字符串的时候,需要用””包裹,这个和我们在excel的函数中输入字符串是一样的

和python一样#是注释符,并且在powershell使用的是tab来缩进,和python一样一个tab就代表了四个空格。当然在powershell中不强制缩进。未来代码的可读性还是建议缩进比较好。

在powershell中代码是由代码块构成的,区分代码块的方式就是用{}代码块可以包含任意多条语句,或者不包含任何语句,代码块是可以嵌套的。

和python不一样的是在power shell中对大小写是不敏感的

管道

powershell作为一种脚本语言,也作为一种命令行工具,和Linux一样具有“管道”的概念,使用管道“发送”表示通过管道|字符连接两个或更多个命令。 其中的思路是,一个命令的输出作为下一个命令的输入,从左向右进行读取。

  1. Get-Process | Where-Object {$_.ProcessName -Like "p*"}
  • 上述代码中使用了管道,也就是|,将左边的命令作为一个输出输入到下一个命令中
  • where-object使用表达式进行筛选,表达式也就是后面用{}包裹的内容
  • 表达式中使用-like运算符和通配符表达式的字符串参数

筛选后的结果可以表的形式展示出来

  1. Get-CimInstance -Class Win32_SystemDriver |
  2. Where-Object {$_.State -eq "Running"} |
  3. Where-Object {$_.StartMode -eq "Manual"} |
  4. Format-Table -Property Name,DisplayName

Foreach-object可以在管道中遍历元素

  1. # 此示例采用三个整数的数组,并将其中每个整数除以 1024。
  2. 30000, 56798, 12432 | ForEach-Object -Process {$_/1024}
  3. # 处理 PowerShell 安装目录中的文件和目录 $PSHOME将其 Length 属性的值除以 1024,并添加空格 (“)
  4. Get-ChildItem $PSHOME |
  5. ForEach-Object -Process {if (!$_.PSIsContainer) {$_.Name; $_.Length / 1024; " " }}
  6. # 处理非对象的时候可以直接使用Foreach
  7. "Microsoft.PowerShell.Core", "Microsoft.PowerShell.Host" | Foreach Split "."

powershell和cmd的区别

powershell语法规则 - 图1