Powershell 初学者教程
⚡ 智能摘要
PowerShell 脚本是一个基于 .NET 框架构建的面向对象的自动化引擎。它结合了 cmdlet、脚本和脚本语言,帮助 IT 管理员实现自动化。 Windows通过单个命令行管理服务和连接远程计算机。

什么是PowerShell?
Windows PowerShell的 是一个面向对象的自动化引擎和脚本语言。它专为需要控制和自动化管理的 IT 专业人员和系统管理员而设计。 Windows 以及其他应用程序。PowerShell 扩展了在以下环境中学习到的概念: Windows 命令提示符和 Windows Script Host 具有新对象、cmdlet 和强大的管道。
它融合了脚本的灵活性、命令行的快捷性和图形用户界面管理工具的强大功能。借助它,管理员可以高效地解决问题,并节省大量手动工作时间。本教程将带您从零开始学习 PowerShell 的基础知识。
为什么要使用 PowerShell?
使用 PowerShell 的最重要原因有:
- 为操作系统提供高度集成的命令行体验。
- 提供对 .NET 框架中每种类型的完全访问权限。
- 深受企业系统管理员信赖。
- 只需几行代码即可操控服务器和工作站组件。
- 面向系统管理员,采用简洁的动词-名词语法。
- 比运行更安全 VBScript中 或其他传统脚本语言。
PowerShell 历史
PowerShell 1.0 于 2006 年首次发布。如今,PowerShell 已发展到 7.2 及更高版本。随着版本的不断发布,其功能和支持的环境也显著增强。
PowerShell 的版本历史记录:
- PowerShell 1.0 —支持地方政府 Windows 2003服务器。
- PowerShell 2.0 — 与……集成 Windows 7和 Windows Server 2008 R2。新增了远程处理、事务、后台作业、事件和调试功能。
- PowerShell 3.0 — 随附 Windows 8和 Windows 作为服务器 2012 的一部分 Windows 管理框架。新增了计划任务、会话连接和自动模块加载功能。
- PowerShell 4.0 — 随附 Windows 8.1和 Windows Server 2012 R2。新增了所需状态配置、增强了调试和网络诊断功能。
- PowerShell 5.0 — 的一部分 Windows 管理框架 5. 增加了远程调试、类定义和 .NET 枚举。
- PowerShell 7.2 — 基于 .NET 6.0 构建。新增了运算符、动态错误视图和自动版本通知。
PowerShell 的功能
- PowerShell 远程处理: 在远程计算机上调用脚本和 cmdlet。
- 背景工作: 在本地机器或多台远程机器上异步运行脚本或管道。
- 交易方式: 允许 cmdlet 和开发人员执行可以一起提交或一起回滚的分组操作。
- 赛事: 监听、转发并处理管理和系统事件。
- 网络文件传输: 通过后台智能传输服务 (BITS) 实现机器间优先、异步、限速文件传输的原生支持。
如何启动 PowerShell
PowerShell 已预装在每个最新版本的系统中。 Windows按以下步骤启动。
步骤1) 在以下位置搜索 PowerShell Windows然后选择并点击它。
步骤2) PowerShell窗口打开。
Cmdlet 与命令
A 小命令 cmdlet(发音为“command-let”)是 PowerShell 环境中使用的轻量级命令。PowerShell 在提示符处调用 cmdlet,您可以使用 PowerShell API 创建自己的 cmdlet。cmdlet 与传统 shell 命令的区别如下:
- Cmdlet 是 NET框架。 类对象;它们不能作为独立可执行文件执行。
- cmdlet 最少只需十几行代码即可编写完成。
- 解析、输出格式设置和错误显示由运行时处理,而不是由 cmdlet 本身处理。
- Cmdlet 可以处理对象,因此文本流和对象都可以在管道中流动。
- Cmdlet 是基于记录的,一次只能处理一个对象。
大多数 PowerShell 功能都是通过 cmdlet 实现的,cmdlet 始终使用动词-名词的命名模式(始终为单数)。cmdlet 返回对象,而不是文本。 脚本 — 与 cmdlet 不同 — 是一系列存储在文本文件中的命令。 .ps1 延期。
学习 PowerShell 时,您会用到以下常用动词:
- 积极 — 取回某物。
- 开始 — 运行一些程序。
- 输出 — 输出一些内容。
- Stop 停止 — 停止正在运行的程序。
- 米 — 定义某事物。
- 全新发布 — 创造一些东西。
重要的 PowerShell 命令
得到帮助: 查看 PowerShell 命令和主题的帮助。
示例:显示帮助信息 Format-Table 命令。
Get-Help Format-Table
获取命令: 获取所有可调用对象的信息。
例如:生成计算机上已安装的 cmdlet 和函数列表。
Get-Command
获取服务: 查找机器上的所有服务。
例如:获取名称以“vm”开头的所有服务。
Get-Service "vm*"
获取会员资格: 展示可以用这个物体做什么。
示例:列出 Get-Service 返回的虚拟机服务的成员。
Get-Service "vm*" | Get-Member
其他有用的 cmdlet:
Get-Module— 显示已安装的命令软件包。Get-Content— 读取文件并处理其内容。Get-*通配符 — 列出所有以“Get-”开头的 cmdlet。
例如:创建一个文件夹。
New-Item -Path 'X:\Guru99' -ItemType Directory
输出:
PowerShell 数据类型
PowerShell 支持标准的 .NET 数据类型,因此您可以将任何值清晰地存储在变量中。
特殊变量
PowerShell 提供了许多内置的特殊变量。下面列出了其中最常用的一些变量。
| 特殊变量 | 描述 |
|---|---|
| $错误 | 一个包含最新错误信息的错误对象数组。 |
| $主机 | 显示当前宿主应用程序的名称。 |
| $个人资料 | 存储默认 shell 的用户配置文件的完整路径。 |
| $PID | 存储进程标识符。 |
| $PSUI文化 | 承载着当前用户界面文化的名称。 |
| $NULL | 包含空值或null值。 |
| $False | 包含布尔值 FALSE。 |
| $真 | 包含布尔值 TRUE。 |
PowerShell脚本
PowerShell 脚本存储在 .ps1 文件。默认情况下,您无法通过双击运行脚本——此安全措施可保护系统免受意外损害。要执行脚本,请右键单击它并选择“运行”。 “使用 PowerShell 运行”.
执行策略控制哪些脚本可以运行。使用以下命令查看当前策略。 Get-ExecutionPolicy可能的值包括:
- 受限 — 不允许使用任何脚本。这是默认设置。
- 使用AllSigned 只有经过受信任开发者签名的脚本才能运行,并且每个脚本都需要确认。
- 下RemoteSigned — 您自己的脚本运行,以及来自可信来源的签名脚本。
- 无限制 — 任何脚本都可以运行(请谨慎使用)。
更改执行策略的步骤:
步骤1) 右键单击 PowerShell 并选择“打开提升权限的 PowerShell 提示符”。 以管理员身份运行.
步骤2) 运行以下命令。
Get-ExecutionPolicySet-ExecutionPolicy Unrestricted- 输入
Y在确认提示处。 Get-ExecutionPolicy
第一个 PowerShell 脚本
打开记事本并输入:
Write-Host "Hello, Guru99!"
保存文件 .ps1 扩展——例如, FirstScript.ps1.
在 PowerShell 中,使用以下命令运行脚本:
& "X:\FirstScript.ps1"
什么是 PowerShell ISE?
此 Windows PowerShell 集成脚本环境 (ISE) ISE 是 PowerShell 的默认编辑器。在 ISE 中,您可以在图形化的窗口环境中运行命令、编写测试和调试脚本。它支持多行编辑、语法高亮、Tab 键自动补全、选择性执行等功能。
PowerShell ISE 还提供了一个控制台窗格,可以直接运行命令,而侧边窗格则显示脚本源代码以及任何已插入 ISE 的工具。您可以同时打开多个脚本窗口——这在调试依赖于其他脚本或模块中定义的函数的脚本时非常有用。
在 ISE 中重新创建之前的脚本:
- 将代码粘贴到编辑器中。
- 保存脚本。
- 按F5运行。
- 查看控制台窗格中的输出。
范例2: 以下脚本显示免费 虚拟内存 在机器上。
Get-WmiObject -Class Win32_OperatingSystem -ComputerName localhost |
Select-Object -Property CSName, FreeVirtualMemory
PowerShell的 Concepts
以下概念构成了 PowerShell 日常工作的基本词汇。
| 提案 | 描述 |
|---|---|
| cmdlet | 内置命令是用 VB 或 C# 等 .NET 语言编写的。开发人员可以通过加载或编写 PowerShell 管理单元来扩展命令集。 |
| 功能 | 直接用 PowerShell 语言编写命令,无需使用 IDE,例如…… Visual Studio中. |
| 脚本 | 磁盘上的文本文件 .ps1 延期。 |
| 应用 | 现有 Windows 从 shell 调用的程序。 |
| WhatIf | 告诉 cmdlet 不要执行,而是描述如果执行会发生什么情况。 |
| 确认 | 指示 cmdlet 在执行前发出提示。 |
| 详细 | 提供更高层次的操作细节。 |
| 调试 | 指示 cmdlet 发出调试信息。 |
| 错误动作 | 定义 cmdlet 在出错时执行的操作。允许的值:continue、stop、silentlycontinue、inquire。 |
| 误差变量 | 指定用于保存错误信息的变量。 |
| 输出变量 | 指示 cmdlet 将其输出存储在指定的变量中。 |
| 输出Buffer | 在将对象发送到管道之前,会先保存特定数量的对象。 |
使用 PowerShell 脚本的优势
- PowerShell 脚本功能强大且简洁——只需几行代码即可完成很多事情。
- 变量用以下方式声明:
$<variable>语法。 - 变量可以保存命令输出、对象和原始值。
- 无需明确指定变量类型。
PowerShell 与命令提示符
| PowerShell的 | 命令提示符 |
|---|---|
| 与 Windows提供交互式命令行和完整的脚本语言。 | 默认命令行界面由 Microsoft一个简单的 Win32 应用程序,可以与其他 Win32 对象通信。 |
| 使用可以通过交互方式或自动化脚本调用的 cmdlet。 | 没有 cmdlet。 |
| 将输出视为对象,以便可以通过管道流入另一个 cmdlet。 | 输出结果是纯文本流,而不是对象。 |
| 在功能、性能和内部架构方面均处于先进水平。 | 基础 shell,适用于传统的批处理任务。 |
PowerShell 的应用
PowerShell 已成为 IT 管理员的标准选择,因为它能显著降低大型企业网络的管理工作量。试想一下,如果您要管理四百多台服务器,并且要部署一个依赖于每台主机上运行的特定服务的新安全解决方案,那将是多么繁琐的工作。
手动登录每台服务器既慢又容易出错。一个 PowerShell 脚本可以在几分钟内扫描所有服务器,报告哪些主机已运行该服务,甚至可以在其余主机上启用该服务。该脚本只需捕获一次意图,即可可靠地将其应用到整个环境中。
















