jk's notes
  • ch03 组合命令

ch03 组合命令

运维过程中不会一个个命令的敲, 而是会采用管道运行, 或将命令存储于脚本文件中运行.

一个 DEMO 运行一个服务

$mysql = 'MySQL'
Get-Service -Name $mysql
Start-Service -Name $mysql

image-20240131142702524

注意需要使用管理员运行 (按下 ctrl 在点击打开窗口).

这里的目的在于判断服务是否存在. 书中作者使用的是 wuauserv 服务.

使用管道

管道可以将前一个命令的输出, 交给后一个命令作为输入使用. 语法形式:

命令1 | 命令2 |...

中间用竖线分隔.

powershell 的管道不同于其他脚本语言, 管道中可以传递对象, 而非仅仅是字符串.

在前面的案例中需要使用 -Name 来告诉命令启动什么服务. 而使用管道可以写成:

Get-Service -Name 'MySQL' | Start-Service

这里 PowerShell 会处理参数传递的问题, 不用在 第二个命令中指明 -Name. 命令甚至可以写成:

'MySQL' | Get-Service | Start-Service

使用管道传递数组

将服务名写入一个 txt 文件中

image-20240131150041521

使用命令 GetContent 可以读取其中内容:

image-20240131150116912

Get-Content 会逐行读取文件, 并将其添加到一个数组中返回.

可以利用该逻辑, 将读取的内容传递给 Get-Service

image-20240131150221410

注意, 记事本中服务名两端不允许有空格.

PowerShell 并不会通过管道发送数组本书, 而是将其拆包, 一个个的发送.

使用管道, 数量上没有做限制, 但是如果超过 5 个以上就需要考虑重构了.

也就是说编程习惯中不会超过五个命令构成管道.

参数绑定

Last Updated:
Contributors: jk