什么是 PowerShell?一篇让你快速入门、理解核心概念的超详细文章
在信息技术的广阔世界里,效率和自动化是永恒的追求。无论是系统管理员、开发者,还是仅仅想更好地掌控自己电脑的普通用户,掌握一款强大的命令行工具都至关重要。而 Windows 系统,乃至如今的 Linux 和 macOS,都拥有一个被誉为自动化利器、功能远超传统命令行的存在——那就是 PowerShell。
如果你之前只接触过 Windows 的 CMD (命令提示符) 或 Linux 的 Bash/Zsh 等,初见 PowerShell 可能会觉得有点陌生,它的命令格式、输出方式似乎都与你习惯的不同。但请相信,一旦理解了它的核心理念,PowerShell 将会极大地提升你的工作效率,打开自动化和管理的新世界。
本文旨在为你提供一个全面而深入的 PowerShell 入门指南。我们将从它的基本定义出发,讲解它为何如此强大,它的核心概念是什么,如何开始使用它,以及一些让你快速上手的基础命令和技巧。读完这篇文章,你将对 PowerShell 有一个清晰的认识,并具备迈出第一步的能力。
第一部分: PowerShell 到底是什么?不仅仅是一个命令行
让我们从最基本的问题开始:PowerShell 究竟是什么?
很多人简单地认为 PowerShell 就是一个类似于 CMD 的命令行工具。这个说法没错,它确实提供了一个文本界面,让你通过输入命令来操作系统。但这个定义太过片面,忽略了 PowerShell 最核心、最强大的特性。
PowerShell 的官方全称是 Windows PowerShell (早期版本) 或 PowerShell Core (跨平台版本,现在通常简称 PowerShell)。它是一个由 Microsoft 开发的任务自动化和配置管理框架,包含一个命令行 Shell 和相关的脚本语言。
注意这里的关键词:框架、任务自动化、配置管理。这些词汇表明 PowerShell 的野心远不止执行简单的命令,它的设计目标是:
- 简化和自动化重复性任务: 无论是管理服务器、部署应用、生成报告,还是处理文件,PowerShell 都能帮助你编写脚本来自动完成,从而节省大量时间和精力。
- 提供统一的管理界面: 无论是管理本地 Windows 系统、远程 Windows 服务器,还是 Microsoft Azure 云服务、Microsoft 365 (Office 365),甚至是许多第三方应用和服务,PowerShell 都力求提供一套统一、一致的管理方式。
- 强大的脚本开发能力: PowerShell 拥有自己的脚本语言,这门语言功能丰富,支持变量、数组、哈希表、控制流(循环、条件判断)、函数、模块,甚至面向对象编程的一些概念,可以用来编写复杂的自动化脚本。
PowerShell 最核心、最革命性的特点是:它基于对象 (Objects),而不是基于文本 (Text)。
这是 PowerShell 与传统命令行工具 (如 CMD 或大多数 Bash 命令) 最根本的区别。在 CMD 或 Bash 中,命令的输出通常是纯文本。你需要使用各种文本处理工具 (如 findstr
, awk
, sed
, grep
) 来解析这些文本输出,提取需要的信息。这个过程往往复杂且容易出错,因为文本格式可能因命令版本、语言环境等因素而变化。
而在 PowerShell 中,命令的输出是结构化的对象。每个对象都包含属性 (Properties) 和方法 (Methods)。属性是对象的特征或数据,方法是对象可以执行的动作。这意味着你可以直接访问和操作这些对象的属性和方法,而无需进行复杂的文本解析。
举个简单的例子:
在 CMD 中查看进程列表:tasklist
。输出是文本表格。如果你想找到内存使用超过 100MB 的进程,你需要用 tasklist | findstr "..."
或其他方法,需要对输出格式非常了解。
在 PowerShell 中查看进程列表:Get-Process
。输出是进程对象的集合。每个对象都有 Name, Id, WorkingSet (内存), CPU 等属性。你可以直接使用 PowerShell 的命令来过滤和选择这些对象:Get-Process | Where-Object {$_.WorkingSet -gt 100MB}
。这里 $_.WorkingSet
直接访问了进程对象的 WorkingSet 属性,Where-Object
根据这个属性进行过滤。整个过程更直观、更强大、更不容易出错。
总结一下 PowerShell 的核心特性:
- 基于对象: 这是最重要的区别。命令输出是对象,而非文本。
- 脚本语言: 强大的脚本能力,支持复杂的逻辑和流程控制。
- Cmdlet (命令小程序): PowerShell 的基本命令单元,遵循 Verb-Noun (动词-名词) 的命名规范,非常易于理解和发现。
- 一致性: Cmdlet 的命名和参数使用遵循统一规范,降低学习成本。
- 可发现性: 提供了强大的帮助系统和命令发现工具。
- 跨平台: PowerShell Core 版本 (
pwsh
) 可以在 Windows, Linux, macOS 上运行。 - .NET 框架集成: PowerShell 构建在 .NET 框架之上,可以直接访问和使用 .NET 类库,功能无限扩展。
第二部分: 为什么要学习 PowerShell?它的价值在哪里?
既然 PowerShell 这么特别,那么作为初学者,你为什么要花时间去学习它呢?它的价值体现在哪里?
-
自动化效率提升: 这是 PowerShell 最核心的价值。
- 系统管理: 批量创建用户、重置密码、管理文件权限、安装软件、配置服务、检查系统状态等,这些重复性任务都可以通过脚本自动化完成。
- 日常操作: 批量重命名文件、整理文件夹、定时备份数据、生成报告等。
- 云和服务管理: 管理 Azure 虚拟机、存储账户、网络;管理 Microsoft 365 用户、邮箱、SharePoint 站点等。
- 部署和配置: 自动化软件部署、系统配置、环境搭建。
-
强大的数据处理能力: 由于基于对象,PowerShell 处理和分析数据非常方便。你可以轻松地获取各种系统信息、服务状态、日志事件,然后通过管道和各种 Cmdlet 进行过滤、排序、分组、计算、导出为各种格式 (CSV, XML, JSON)。
-
更好的可管理性: PowerShell 提供了一种标准化、可重复、无误的方式来执行管理任务。脚本可以被版本控制,可以被共享和复用,这比手动点击界面或执行零散的命令效率高得多,也更可靠。
-
与 Microsoft 生态系统的深度集成: 对于使用 Windows Server、Exchange Server、SQL Server、SharePoint Server 以及 Azure 和 Microsoft 365 等 Microsoft 技术的用户来说,PowerShell 几乎是必备的管理工具。许多新功能和高级配置只能通过 PowerShell 实现。
-
故障排除和诊断: PowerShell 提供了丰富的 Cmdlet 来获取系统信息、诊断网络问题、查看事件日志等,是故障排除的强大帮手。
-
职业发展: 在 IT 领域,尤其是系统管理、DevOps、云工程等方向,PowerShell 技能是招聘中非常看重的能力。掌握 PowerShell 意味着你具备更高的效率和更强的自动化能力。
-
跨平台能力: 随着 PowerShell Core 的出现,你学习的 PowerShell 技能不仅限于 Windows,也可以用来管理 Linux 和 macOS 系统,以及跨平台的应用和服务。
总而言之,学习 PowerShell 就是投资于你的效率和未来的职业发展。它将你从繁琐的手动操作中解放出来,让你能够处理更复杂、更有价值的任务。
第三部分: PowerShell 的核心概念:Cmdlet, 对象, 管道
理解 PowerShell 的强大,必须掌握它的几个核心概念。
3.1 Cmdlet (命令小程序)
Cmdlet 是 PowerShell 的基本命令单元。发音通常是 “command-let”。
与传统命令行工具中名称各异、参数用法五花八门的命令不同,PowerShell 的 Cmdlet 遵循严格的 Verb-Noun (动词-名词) 命名规范。
- Verb (动词): 表示要执行的动作,例如
Get
(获取),Set
(设置),New
(新建),Remove
(移除),Start
(启动),Stop
(停止),Restart
(重启),Out
(输出),Add
(添加),Update
(更新) 等。PowerShell 有一个标准的动词列表,Get-Verb
命令可以查看所有标准动词。 - Noun (名词): 表示操作的对象,例如
Process
(进程),Service
(服务),Item
(文件/目录等),Command
(命令),Help
(帮助),Content
(内容),Computer
(计算机) 等。
这种 Verb-Noun
结构使得 Cmdlet 的功能一目了然,并且极大地提高了命令的可发现性。例如:
- 想要获取进程列表?动词是
Get
,名词是Process
->Get-Process
。 - 想要停止某个服务?动词是
Stop
,名词是Service
->Stop-Service
。 - 想要创建一个新的文件?动词是
New
,名词是Item
->New-Item
。 - 想要获取命令的帮助信息?动词是
Get
,名词是Help
->Get-Help
。
通过这种规范,你可以很容易地猜测出 Cmdlet 的名称,或者通过 Get-Command
命令来查找。
3.2 对象 (Objects)
如前所述,对象是 PowerShell 的基石。当 Cmdlet 执行完毕并返回结果时,它不是返回一串文本,而是返回一个或多个对象。
每个对象都是一个数据结构,它拥有:
- 属性 (Properties): 描述对象的特征或状态的数据。例如,一个
Process
对象可能有Id
(进程 ID)、Name
(进程名称)、WorkingSet
(工作集内存)、CPU
(CPU 使用率) 等属性。 - 方法 (Methods): 对象可以执行的动作。例如,一个
Service
对象可能有Start()
、Stop()
、Restart()
等方法 (尽管通常我们使用Start-Service
,Stop-Service
,Restart-Service
这类 Cmdlet 来操作,但在脚本中可以直接调用对象的方法)。
如何查看对象的属性和方法? 使用 Get-Member
Cmdlet。这是 PowerShell 中一个非常非常重要的命令。
例如,你想知道 Get-Process
命令返回的进程对象有哪些属性和方法:
powershell
Get-Process | Get-Member
这里使用了管道 (|
),我们将 Get-Process
的输出 (进程对象) 传递给了 Get-Member
命令,Get-Member
就会显示这些对象的类型名称、成员 (包括 Aliases, Properties, Methods 等) 的名称和定义。
理解对象后,你可以轻松地访问对象的特定属性,例如:
powershell
Get-Process | Select-Object Name, WorkingSet
这条命令获取所有进程对象,然后使用 Select-Object
命令只选取并显示每个对象的 Name
和 WorkingSet
属性。
3.3 管道 (|
) (The Pipeline)
管道是连接 Cmdlet 的强大工具。在大多数命令行环境中,管道 (|
) 的作用是将前一个命令的文本输出作为后一个命令的文本输入。
但在 PowerShell 中,管道的作用是将前一个命令输出的对象传递给后一个命令。后一个命令接收这些对象作为输入,并对它们进行处理。
这是一个非常重要的区别。因为传递的是结构化的对象,而不是无结构的文本,后一个命令可以直接访问对象的属性和方法,而无需担心文本解析问题。
经典的 PowerShell 管道用法:
- 获取数据 -> 过滤数据 -> 选择数据 -> 排序数据 -> 输出数据
例如:
powershell
Get-Service # 获取所有服务对象
Get-Service | Where-Object {$_.Status -eq 'Running'} # 将服务对象传递给 Where-Object,过滤出状态为 'Running' 的服务对象
Get-Service | Where-Object {$_.Status -eq 'Running'} | Select-Object Name, DisplayName # 将过滤后的服务对象传递给 Select-Object,只选取 Name 和 DisplayName 属性
Get-Service | Where-Object {$_.Status -eq 'Running'} | Select-Object Name, DisplayName | Sort-Object Name # 将选取了属性的对象传递给 Sort-Object,按 Name 属性排序
Get-Service | Where-Object {$_.Status -eq 'Running'} | Select-Object Name, DisplayName | Sort-Object Name | Out-GridView # 将排序后的对象传递给 Out-GridView,以图形化表格显示
这一系列命令通过管道连接,每一步都在前一步输出的对象基础上进行操作,流程清晰,功能强大。这是 PowerShell 自动化的核心工作模式之一。
第四部分: 如何开始使用 PowerShell?安装与环境
要开始使用 PowerShell,你需要确保你的系统上已经安装了它,并知道在哪里运行它。
-
Windows PowerShell (powershell.exe):
- 这是 Windows 操作系统内置的 PowerShell 版本。
- 在 Windows 7 SP1 及更高版本中默认安装。
- 打开方式:
- 在搜索栏输入 “PowerShell”。
- 运行
powershell
或powershell_ise
(PowerShell Integrated Scripting Environment)。 - 在文件资源管理器的地址栏输入
powershell
或cmd
然后输入powershell
。
- 注意: Windows PowerShell 的最新版本是 5.1,它只在 Windows 上运行。这是较旧的版本。
-
PowerShell Core (pwsh):
- 这是微软推出的下一代 PowerShell,是开源的、跨平台的版本。
- 可以在 Windows, macOS, Linux 上运行。
- 它不断更新,包含许多新特性和改进。建议新用户学习和使用 PowerShell Core。
- 安装方法:
- 访问 Microsoft Docs 上的 PowerShell 安装指南 (https://docs.microsoft.com/zh-cn/powershell/scripting/install/installing-powershell),按照你的操作系统指引进行安装。对于 Windows 用户,可以下载 MSI 安装包进行安装。
- 安装完成后,你通常可以在开始菜单找到 “PowerShell” (不是 “Windows PowerShell”) 或在命令行中输入
pwsh
启动。
执行环境选择:
- PowerShell 控制台: 最基本的命令行界面。适合执行单个命令。
- PowerShell ISE (Integrated Scripting Environment): Windows PowerShell 内置的脚本编辑和运行环境,提供语法高亮、调试功能等。只适用于 Windows PowerShell (powershell.exe)。
- Visual Studio Code (VS Code) + PowerShell 扩展: 强烈推荐! VS Code 是一款免费、轻量级、强大的代码编辑器,配合官方的 PowerShell 扩展,提供了最佳的 PowerShell 脚本开发体验,包括语法高亮、IntelliSense (智能提示)、代码片段、调试、集成终端等。支持 Windows PowerShell 和 PowerShell Core。
对于初学者,建议:
1. 安装最新版的 PowerShell Core (pwsh)。
2. 安装 Visual Studio Code 并安装 PowerShell 扩展。在 VS Code 中打开终端 (Ctrl+`) 并选择 PowerShell (pwsh) 作为默认 Shell 进行学习和练习。
执行策略 (Execution Policy):
PowerShell 有一个安全特性叫做执行策略,它控制 PowerShell 加载配置文件的能力以及运行脚本的限制。默认设置 (通常是 Restricted
) 可能不允许你运行任何脚本文件 (.ps1
)。
要允许运行本地编写的脚本,你可以将执行策略设置为 RemoteSigned
:
powershell
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
-Scope CurrentUser
表示只对当前用户生效。-RemoteSigned
意味着下载的脚本需要有数字签名才能运行,但你自己创建的、在本地编写的脚本可以直接运行。这是一个比较安全的常用设置。
重要提示: 在更改执行策略之前,请理解其含义。不要轻易设置为 Unrestricted
,这会增加安全风险。如果只是学习或运行信任的脚本,RemoteSigned
或 Bypass
(仅用于特定测试或脚本,不推荐长期使用) 可以考虑。
第五部分: 快速上手:你的第一个 PowerShell 命令
现在,让我们打开 PowerShell (无论是 PowerShell 控制台还是 VS Code 中的终端,确保运行的是 pwsh
或 powershell.exe
),输入你的第一个命令。
5.1 获取帮助:你的导航仪 Get-Help
学习任何新的命令行工具,最重要的命令是获取帮助的命令。在 PowerShell 中,它是 Get-Help
。
- 获取
Get-Process
命令的帮助:
powershell
Get-Help Get-Process
这会显示命令的语法、参数、别名、相关命令等基本信息。 - 获取更详细的帮助,包括示例:
powershell
Get-Help Get-Process -Detailed
Get-Help Get-Process -Examples
Get-Help Get-Process -ShowWindow # 在一个独立的窗口中显示帮助,更易读 - 下载最新的帮助文件 (推荐,特别是 PowerShell Core):
powershell
Update-Help
执行此命令需要管理员权限。它会从网上下载最新的帮助文档到你的本地,以后使用Get-Help
会更快速和全面。
记住:当你不知道某个命令怎么用,或者某个任务应该用什么命令时,Get-Help
是你最好的朋友。
5.2 查找命令:探索未知世界 Get-Command
如果你知道你想要做什么 (例如,处理文件,管理网络),但不知道具体的 Cmdlet 名称怎么办?使用 Get-Command
。
- 查找所有与 “Process” 相关的命令:
powershell
Get-Command *Process* - 查找所有以 “Get-” 开头,与 “Service” 相关的命令:
powershell
Get-Command Get-*Service* - 查找所有 Cmdlet (不包括函数、别名等):
powershell
Get-Command -CommandType Cmdlet - 结合
Get-Help
和管道,查找并获取特定命令的帮助:
powershell
Get-Command *Service* | Get-Help
5.3 文件和目录操作:熟悉的环境
PowerShell 提供了与 CMD 或 Bash 类似的命令别名,方便你从其他环境过渡:
- 当前目录:
powershell
Get-Location # 等同于 pwd - 改变目录:
powershell
Set-Location C:\Windows\System32 # 等同于 cd
cd .. # 返回上一级目录
cd ~ # 回到用户主目录 - 列出文件和目录:
powershell
Get-ChildItem # 等同于 dir 或 ls
Get-ChildItem -Path C:\Users\YourUsername -Filter *.txt # 查找指定目录下的所有 .txt 文件
Get-ChildItem -Recurse -Path C:\MyDocuments | Where-Object {$_.Length -gt 1MB} # 递归查找大小超过 1MB 的文件 (体现对象特性) - 新建项 (文件或目录):
powershell
New-Item -Path C:\Temp\MyFolder -ItemType Directory # 新建一个目录
New-Item -Path C:\Temp\MyFile.txt -ItemType File # 新建一个文件 - 复制、移动、删除项:
powershell
Copy-Item -Path C:\Temp\MyFile.txt -Destination C:\Backup\MyFile.txt
Move-Item -Path C:\Temp\MyFile.txt -Destination C:\Archive\MyFile.txt
Remove-Item -Path C:\Temp\MyFile.txt # 删除文件
Remove-Item -Path C:\Temp\MyFolder -Recurse # 删除目录及其内容 - 获取和设置文件内容:
powershell
Get-Content C:\Temp\MyFile.txt # 读取文件内容 (等同于 type 或 cat)
Set-Content C:\Temp\MyFile.txt -Value "Hello, PowerShell!" # 设置文件内容 (覆盖)
Add-Content C:\Temp\MyFile.txt -Value "`nAnother line." # 向文件末尾追加内容
注意:PowerShell 默认使用 Unicode 编码处理文件内容,这比 CMD 的文本处理更可靠。
5.4 系统管理基础:进程与服务
- 获取进程:
powershell
Get-Process # 获取所有进程
Get-Process -Name chrome # 获取指定名称的进程
Get-Process | Where-Object {$_.CPU -gt 5} # 获取 CPU 占用率大于 5% 的进程
Get-Process | Sort-Object WorkingSet -Descending # 按内存使用从高到低排序进程 - 停止进程:
powershell
Stop-Process -Name notepad # 停止所有 notepad 进程
Stop-Process -Id 1234 # 停止指定 ID 的进程
Get-Process -Name chrome | Stop-Process # 获取 chrome 进程对象,然后通过管道停止它们 (体现管道的强大)
注意: 停止进程时要小心,确保你知道自己在做什么。 - 获取服务:
powershell
Get-Service # 获取所有服务
Get-Service -Name spooler # 获取打印机服务
Get-Service | Where-Object {$_.Status -eq 'Stopped'} # 获取所有已停止的服务 - 启动、停止、重启服务:
powershell
Start-Service -Name spooler
Stop-Service -Name spooler
Restart-Service -Name spooler
Get-Service -Name BITS | Stop-Service # 通过管道停止 BITS 服务
注意: 操作服务通常需要管理员权限。
第六部分: PowerShell 脚本入门:让命令动起来
单个命令很强大,但 PowerShell 的真正威力在于脚本。脚本是包含一系列 PowerShell 命令的文本文件,通常以 .ps1
为扩展名。
-
创建脚本文件:
在 VS Code 中,创建一个新文件,输入一些 PowerShell 命令,然后保存为.ps1
文件,例如MyFirstScript.ps1
。“`powershell
这是一个PowerShell脚本示例
Write-Host “你好,PowerShell 脚本!”
获取并显示运行中的服务名称和状态
Get-Service | Where-Object {$_.Status -eq ‘Running’} | Select-Object Name, Status
获取当前日期和时间
$currentDate = Get-Date
Write-Host “当前时间是: $($currentDate)”
``
#
**解释:**
*符号开头的行是注释,不会被执行。
Write-Host
*用于向控制台输出文本。
$currentDate = Get-Date
*创建一个变量
$currentDate并将
Get-Date命令返回的日期时间对象赋值给它。在 PowerShell 中,变量以
$符号开头。
$($currentDate)` 是子表达式,用于在字符串中插入变量的值。
* -
运行脚本:
打开 PowerShell 控制台或 VS Code 的终端,切换到脚本所在的目录,然后输入脚本文件的完整路径来运行它:
powershell
.\MyFirstScript.ps1
.\
表示当前目录。如果你设置了执行策略 (Set-ExecutionPolicy RemoteSigned
),这个脚本应该能正常运行。
脚本的基本元素 (简要介绍):
- 变量: 用
$variableName
定义和使用,无需提前声明类型。 - 注释: 单行注释
#
,多行注释<# ... #>
。 - 控制流:
If/ElseIf/Else
:条件判断。For
,ForEach
,While
,Do/While
:循环。Switch
:多条件选择。
- 数组 (
@()
), 哈希表 (@{}
), 对象: 用于组织数据。 - 函数 (
Function
): 封装可重用的代码块。 - 参数 (
[Parameter()]
): 让脚本接受外部输入。
脚本是 PowerShell 自动化的核心。通过编写脚本,你可以将一系列复杂的任务组合起来,实现高度的自动化和定制化。
第七部分: 进阶方向与学习资源
你已经迈出了学习 PowerShell 的重要一步,理解了它的核心概念和基本用法。接下来,你可以根据自己的需求向更深的方向发展:
- 深入学习脚本编程: 掌握更复杂的控制流、数据结构、函数编写、错误处理 (
try/catch
) 等。 - 模块 (Modules): PowerShell 的功能通过模块来扩展。你需要学习如何安装、导入、使用模块,特别是与你工作相关的模块 (如 Active Directory 模块、AzureAD 模块、Az 模块、Exchange Online 模块等)。
- PowerShell Remoting (远程管理): 学习如何使用 PowerShell 连接并管理远程计算机。Cmdlet 如
Invoke-Command
,Enter-PSSession
,Exit-PSSession
是关键。 - Desired State Configuration (DSC): PowerShell 的一个特性,用于定义和强制执行服务器和系统的配置状态。
- 错误处理和日志记录: 学习如何在脚本中妥善处理错误并记录脚本执行过程。
- 安全性: 深入了解执行策略、凭据管理等。
推荐的学习资源:
- Microsoft Learn (Docs): Microsoft 官方文档是最权威的学习资源。PowerShell 文档非常全面。 (https://docs.microsoft.com/zh-cn/powershell/)
- PowerShell 官方博客: 获取最新的 PowerShell 新闻、功能介绍和实用技巧。 (https://devblogs.microsoft.com/powershell/)
- 在线课程平台: Coursera, Udemy, Pluralsight 等平台有许多高质量的 PowerShell 入门到精通课程。
- YouTube 教程: 搜索 “PowerShell Tutorial”,有大量免费视频资源。
- 社区: Stack Overflow (搜索 PowerShell 相关问题), Reddit 上的 r/PowerShell 板块等,是提问和交流的好地方。
- 实践: 最重要的学习方法是动手实践!尝试用 PowerShell 解决你日常工作中遇到的问题,从小任务开始,逐步挑战更复杂的自动化需求。
总结: 开启你的 PowerShell 之旅
PowerShell 是一个强大、灵活且不断发展的任务自动化和配置管理工具。它独特的基于对象的特性、统一的 Cmdlet 命名规范和强大的管道功能,使其在系统管理和自动化领域脱颖而出。
本文为你揭示了 PowerShell 的本质,解释了它为何重要,阐述了 Cmdlet、对象和管道这三大核心概念,指导你如何开始安装和运行 PowerShell,并通过一些基础命令带你进行了初步的实践。
学习 PowerShell 需要时间和练习,但投入的回报是巨大的。它将极大地提升你的工作效率,让你从重复性劳动中解放出来,专注于更具价值的任务。
现在,你已经掌握了 PowerShell 入门所需的知识。打开你的 PowerShell 终端,从 Get-Help
和 Get-Command
开始,探索这个充满可能性的世界吧!祝你在 PowerShell 的学习旅程中一切顺利!