PowerShell脚本的后缀名为ps1,脚本文件本质上还是一个文本文件。所以在windows下新建一个txt文本,将后缀改为ps1,就是一个标志的PowerShell脚本文件,就可以在PowerShell控制台执行。PS脚本主要用于系统管理和自动化任务。以下是 PowerShell 的一些基本语法和概念:

注释

每个PS脚本中避免不了一些注释和说明。在PowerShell脚本中使用 # 进行单行注释,使用 <# ... #> 进行多行注释。

# 这是单行注释

<#
这是多行注释
可以跨越多行
#>

变量声明

在PowerShell脚本中,变量以 $ 符号开头,可以存储各种类型的数据。

$myVariable = "Hello, PowerShell!"
$number = 42
$array = @(1, 2, 3, 4, 5)

上面代码中,我们声明了三个变量$myVariable$number$array。下面一节,我们使用输出语法将这三个变量输出到控制台。

输出到控制台

使用 Write-Output 或简写 echo 来输出内容到控制台。

Write-Output $myVariable
echo $number
Write-Output $array

执行上述脚本,可以得到如下结果:

除了Write-Output之外,PowerShell还提供了一些Write函数,用于输出信息到控制台或其他输出流。不同的输出函数,在控制台会有不同的颜色和字体显示。这个有点类似于我们在应用程序中的日志级别:输出错误信息、输出警告信息、输出详细信息、输出调试信息、输出普通信息等。

# 输出到输出流
Write-Output "This is an output message."

# 直接输出到控制台
Write-Host "This is a host message." -ForegroundColor Green

# 输出错误信息
Write-Error "This is an error message."

# 输出警告信息
Write-Warning "This is a warning message."

# 输出详细信息
$VerbosePreference = "Continue"
Write-Verbose "This is a verbose message."

# 输出调试信息
$DebugPreference = "Continue"
Write-Debug "This is a debug message."

# 输出信息
Write-Information "This is an informational message."

执行上述脚本,可以看到以下执行结果,可以看到不同的信息有不同的颜色。

条件变量if-elseif-else

在PowerShell脚本中使用 if、elseif 和 else 进行条件判断。下面是条件判断的基础语法:

$number = 10

if ($number -gt 5) {
    Write-Output "Number is greater than 5"
} elseif ($number -eq 5) {
    Write-Output "Number is equal to 5"
} else {
    Write-Output "Number is less than 5"
}

执行上述脚本,可以看到以下执行结果:

中文大于翻译成英文是greater,等于翻译成英文是equal,小于翻译成英文是less。所以在 PowerShell 脚本中,条件变量的比较操作符如下:
1、大于:-gt(Greater Than)
2、小于:-lt(Less Than)
3、等于:-eq(Equal)
4、大于等于:-ge(Greater Than or Equal)
5、小于等于:-le(Less Than or Equal)

循环

在PowerShell脚本中,使用 for、foreach 和 while 进行循环操作。语法和我们写高级语言的语法几乎一模一样,一看就懂!!

# for 循环
Write-Output "for"
for ($i = 0; $i -lt 5; $i++) {
    Write-Output $i
}

Write-Output "foreach"
# foreach 循环
$array = @(1, 2, 3, 4, 5)
foreach ($item in $array) {
    Write-Output $item
}

Write-Output "while"
# while 循环
$i = 0
while ($i -lt 5) {
    Write-Output $i
    $i++
}

执行上述代码,会看到以下的执行结果,可以看到三个循环的结果都被正确打印出来。

函数

在PowerShell脚本中,函数是非常强大的一个功能,我们脚本的核心功能很多时候都是通过函数一个个组成的,

如何声明一个PowerShell函数,首先用function 关键字表示,后面是函数的名称Say-Hello,然后是一对花括号表示函数体。函数体中通过param关键字表示函数的参数,每个参数最前面可以标注参数的类型,参数名必须用$开头。参数描述完之后,就可以正常写脚本语句,本质上就是函数实际上要执行的内容。

说完函数的声明之后,我们就可以调用该函数。直接通过函数名后面跟上一个个参数即可调用一个函数。类似于这样Say-Hello -name "PowerShell"

function Say-Hello {
    param (
        [string]$name
    )
    Write-Output "Hello, $name!"
}

Say-Hello -name "PowerShell"

执行上述脚本,可以看到以下执行结果,可以看到脚本正常调用了Say-Hello函数。

错误处理try-catch-finally

在PowerShell脚本中,使用 try、catch 和 finally 进行错误处理。和大部分高级语言的写法一模一样,这里直接给出示例代码。

try {
    # 可能会引发错误的代码
    $result = 1 / 0
} catch {
    # 处理错误
    Write-Error "An error occurred: $_"
} finally {
    # 始终执行的代码
    Write-Output "This is the finally block"
}

执行上述脚本,可以看到以下执行结果,可以看到脚本输出了一个错误信息。

文件操作

在PowerShell脚本中,使用 Get-Content、Set-Content 和 Add-Content 进行文件操作,分别可以读取文件内容、写入文件内容、追加文件内容。


# 读取文件内容
$content = Get-Content -Path "d:\file.txt"
Write-Output $content

# 写入文件内容
Set-Content -Path "d:\file.txt" -Value "New content"

# 追加文件内容
Add-Content -Path "d:\file.txt" -Value "Additional content"

上述脚本,首先获取d盘file.txt的文件内容,然后分别往文件中写入内容和追加内容,执行成功之后,会看到file.txt正确写入了文本内容。