ZetCode

PowerShell 基础

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍 PowerShell 的基础知识。PowerShell 是一个强大的 Windows 系统自动化和配置工具。PowerShell 旨在帮助 IT 专业人员和系统管理员自动化重复性任务、管理系统配置并提高整体效率。凭借其丰富的功能集,PowerShell 已成为管理和自动化 Windows 环境中各种任务的重要工具。

PowerShell 是一个跨平台的任务自动化解决方案,由命令行 Shell、脚本语言和配置管理框架组成。命令行 Shell 提供了一个运行命令和脚本的交互式环境,而脚本语言允许用户编写复杂的脚本来自动化任务。配置管理框架使用户能够管理和维护系统配置,确保系统保持在期望的状态。

PowerShell 提供对 .NET Framework 和 Windows Management Instrumentation (WMI) 的完全访问。这种集成允许用户利用 .NET 库和 WMI 类的强大功能来执行高级任务和管理系统组件。通过 PowerShell,用户可以与各种系统资源交互、检索信息并执行命令来自动化流程和简化操作。此外,PowerShell 支持远程管理,允许管理员在远程系统上执行命令和脚本,使其成为管理大规模 IT 环境的通用工具。

PowerShell 的一项关键功能是其广泛的内置 cmdlet 库,这些 cmdlet 是专门用于执行特定任务的命令。这些 cmdlet 可以组合和管道化,以创建复杂的 [workfows](工作流程)和自动化复杂的流程。此外,PowerShell 的可扩展性允许用户创建自定义 cmdlet 和模块,进一步增强其功能和适应性,以满足不同的自动化需求。

PowerShell 变量

在第一个示例中,我们将演示如何在 PowerShell 中声明和使用变量。

variables.ps1
$name = "John Doe"
Write-Output "Hello, $name!"

在此程序中,我们声明一个变量 $name 并为其赋值“John Doe”。然后,我们使用 Write-Output cmdlet 将问候语打印到控制台。

$name = "John Doe"

我们声明一个变量 $name 并为其赋值“John Doe”。

Write-Output "Hello, $name!"

我们使用 Write-Output cmdlet 将问候语打印到控制台。我们使用字符串插值在输出中包含 $name 变量的值。

PS C:\> .\variables.ps1
Hello, John Doe!

我们运行脚本并查看输出。

PowerShell 数组

在下一个示例中,我们将演示如何在 PowerShell 中创建和操作数组。

arrays.ps1
$fruits = @("apple", "banana", "cherry")
Write-Output "The first fruit is $($fruits[0])"

在此程序中,我们创建一个包含三个水果名称的数组 $fruits。然后,我们使用 Write-Output cmdlet 打印数组中的第一个水果。

$fruits = @("apple", "banana", "cherry")

我们创建一个包含三个水果名称的数组 $fruits

Write-Output "The first fruit is $($fruits[0])"

我们使用 Write-Output cmdlet 打印数组中的第一个水果。我们使用索引运算符 [] 来访问数组中的第一个元素。

PS C:\> .\arrays.ps1
The first fruit is apple

我们运行脚本并查看输出。

PowerShell 循环

PowerShell 提供了几种遍历项目集合的方法。在此示例中,我们使用 for 循环。

loops.ps1
$fruits = @("apple", "banana", "cherry")

for ($i = 0; $i -lt $fruits.Count; $i++) {
    Write-Output "Fruit ${i}: $($fruits[$i])"
}

在此程序中,我们使用 for 循环遍历 $fruits 数组,并打印每个水果及其索引。

$fruits = @("apple", "banana", "cherry")

我们创建一个包含三个水果名称的数组 $fruits

for ($i = 0; $i -lt $fruits.Count; $i++) {
    Write-Output "Fruit ${i}: $($fruits[$i])"
}

我们使用 for 循环遍历 $fruits 数组。我们使用索引运算符 [] 来访问数组中的每个元素。

PS C:\> .\loops.ps1
Fruit 0: apple
Fruit 1: banana
Fruit 2: cherry

我们运行脚本并查看输出。

PowerShell 函数

PowerShell 允许您定义自定义函数。在此示例中,我们定义了一个接受单个参数的简单函数。

functions.ps1
function greet($name) {
    Write-Output "Hello, $name!"
}

greet "John Doe"

在此程序中,我们定义了一个名为 greet 的函数,该函数接受单个参数 $name。然后,我们使用参数“John Doe”调用该函数。

function greet($name) {
    Write-Output "Hello, $name!"
}

我们定义了一个名为 greet 的函数,该函数接受单个参数 $name

greet "John Doe"

我们使用参数“John Doe”调用 greet 函数。

PS C:\> .\functions.ps1
Hello, John Doe!

我们运行脚本并查看输出。

PowerShell 模块

PowerShell 模块允许您组织和重用代码。在此示例中,我们创建了一个简单的模块。

module.ps1
function greet($name) {
    Write-Output "Hello, $name!"
}

Export-ModuleMember -Function greet

在此程序中,我们定义了一个 greet 函数,然后使用 Export-ModuleMember cmdlet 将该函数导出为模块的一部分。

function greet($name) {
    Write-Output "Hello, $name!"
}

我们定义了一个名为 greet 的函数,该函数接受单个参数 $name

Export-ModuleMember -Function greet

我们使用 Export-ModuleMember cmdlet 将 greet 函数导出为模块的一部分。

PS C:\> .\module.ps1
PS C:\> Import-Module .\module.ps1
PS C:\> greet "John Doe"
Hello, John Doe!

我们运行脚本,导入模块,然后调用 greet 函数。

来源

PowerShell 文档

在本文中,我们学习了 PowerShell 的基础知识。

作者

我叫 Jan Bodnar,我是一位充满激情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PowerShell 教程