在 PowerShell 中将命令拆分为多行

Marion Paul Kenneth Mendoza 2023年1月30日 2022年5月16日
  1. Windows PowerShell 多行命令
  2. 使用特定的操作符断开长行代码
在 PowerShell 中将命令拆分为多行

可读代码很容易将其功能目的传达给用户。变量名称和方法名称应具有适当的命名约定以提高代码的可读性。其他有助于代码可读性的属性是一致的缩进和格式样式。Windows PowerShell 多行命令有助于将长命令行拆分为多个语句以提高可读性。

在 Windows PowerShell 中,可以使用反引号字符轻松创建多行命令,以拆分长或单行命令多行语句。

反引号字符用作一种转义字符。它转义换行符并导致行继续。

本文将解释 Windows PowerShell 多行命令将长命令拆分为多行的重要性。

Windows PowerShell 多行命令

要将长命令拆分为多行,请使用反引号字符将其拆分为多行。

例如,我们要获取本地计算机上的可用磁盘空间信息。不幸的是,获取此特定信息的脚本是一个扩展命令,因此难以阅读和管理。

示例代码:

Get-WmiObject -Class win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}

看起来本文中的语法是拆分的,但是当复制到命令行界面时,上面的示例是一个很长的单行脚本。

我们可以使用 Windows PowerShell 反引号字符轻松地将长命令拆分为多行,以便在给定命令中换行。

示例代码:

Get-WmiObject -Class win32_logicaldisk `
| Format-Table DeviceId, `MediaType, @{n="Size";e={[Math]::Round($_.Size/1GB,2)}}, `
@{n="FreeSpace";e={[Math]::Round($_.FreeSpace/1GB,2)}}

在上面的示例中,我们使用空格将长命令拆分为多行,然后在要拆分的末尾处使用反引号字符。请记住,反引号和换行符之间不能有任何字符,包括空格。

代码结构在 Windows PowerShell 中使用多行命令易于阅读和维护。但是,通常不推荐使用反引号字符,因为该字符难以阅读并且会引起错误。因此,我们有另一种方法来破坏长行代码。

使用特定的操作符断开长行代码

通常,当命令在该点在语法上无法完成时,你会获得自动行继续。

一个例子是启动一个新的管道元素(|)。管道将毫无问题地工作,因为在管道运算符之后,该命令由于缺少另一个管道元素而无法完成。因此,我们的解释器所做的是在以下命令行中查找下一个管道元素。

示例代码:

Get-WmiObject -Class win32_logicaldisk | 
Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}

逗号 (,) 也可以在某些上下文中使用,例如管道运算符。

示例代码:

Get-WmiObject -Class win32_logicaldisk | 
Format-Table DeviceId, MediaType, 
@{n="Size"; e={[Math]::Round($_.Size/1GB,2)}},
@{n="FreeSpace"; e={[Math]::Round($_.FreeSpace/1GB,2)}}

此外,定义脚本块时的大括号 ({}) 将允许直接续行。

示例代码:

Get-WmiObject -Class win32_logicaldisk | 
Format-Table DeviceId, MediaType, 
@{
    n="Size"; e={
        [Math]::Round($_.Size/1GB,2)
    }
},
@{
    n="FreeSpace";e={
        [Math]::Round($_.FreeSpace/1GB,2)
    }
}

使用上述技术,我们现在可以观察到我们的示例代码更易于阅读,并且我们在不使用反引号字符的情况下进行了管理。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn