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正确写入了文本内容。
