ch03 组合命令
运维过程中不会一个个命令的敲, 而是会采用管道运行, 或将命令存储于脚本文件中运行.
一个 DEMO 运行一个服务
$mysql = 'MySQL'
Get-Service -Name $mysql
Start-Service -Name $mysql
注意需要使用管理员运行 (按下
ctrl
在点击打开窗口).
这里的目的在于判断服务是否存在. 书中作者使用的是
wuauserv
服务.
使用管道
管道可以将前一个命令的输出, 交给后一个命令作为输入使用. 语法形式:
命令1 | 命令2 |...
中间用竖线分隔.
powershell
的管道不同于其他脚本语言, 管道中可以传递对象, 而非仅仅是字符串.
在前面的案例中需要使用 -Name
来告诉命令启动什么服务. 而使用管道可以写成:
Get-Service -Name 'MySQL' | Start-Service
这里 PowerShell
会处理参数传递的问题, 不用在 第二个命令中指明 -Name
. 命令甚至可以写成:
'MySQL' | Get-Service | Start-Service
使用管道传递数组
将服务名写入一个 txt 文件中
使用命令 GetContent
可以读取其中内容:
Get-Content
会逐行读取文件, 并将其添加到一个数组中返回.
可以利用该逻辑, 将读取的内容传递给 Get-Service
注意, 记事本中服务名两端不允许有空格.
PowerShell
并不会通过管道发送数组本书, 而是将其拆包, 一个个的发送.
使用管道, 数量上没有做限制, 但是如果超过 5 个以上就需要考虑重构了.
也就是说编程习惯中不会超过五个命令构成管道.