使用 Windows PowerShell

已完成

尽管 GUI 管理工具通常比命令行工具更易于使用,但 Contoso 的 IT 部门经理相信,你可以使用简单的脚本或单个命令更快地实现许多管理任务。 例如,使用 Active Directory 用户和计算机为多个用户帐户更新相同信息的过程可能非常耗时。 但是,使用 Windows PowerShell 中的 Active Directory 模块,管理员可以快速执行这项重复性的任务。 你决定调查使用 Windows PowerShell 来管理 Contoso 服务器基础结构的影响。

概述

Windows PowerShell 是一种命令行和脚本编写环境,可用于管理 Windows 操作系统的各个方面。 Windows PowerShell 使用称为 cmdlet 的特殊命令,这些 cmdlet 由谓词 - 名词对组成,例如 Restart-Computer

你还可以使用 Windows PowerShell 远程连接到其他计算机,甚至针对计算机列表运行 Windows PowerShell cmdlet,从而使用单个命令行指令对多台计算机执行操作。

Windows PowerShell 命令和 cmdlet

命令是使用 Windows PowerShell 脚本语言组合在一起的构建基块。 它们提供 Windows PowerShell 的主要功能。 通过使用命令,你可以为复杂的管理问题创建自定义解决方案。

Cmdlet 是命令的基本组件。 Windows 操作系统和其他 Microsoft 产品中提供了数千个 Windows PowerShell cmdlet。 如前文所述,cmdlet 由谓词 - 名词对组成。

Cmdlet 谓词

Cmdlet 名称的谓词部分指示该 cmdlet 执行的操作。 Cmdlet 创建者使用一组经过批准的谓词,这为 cmdlet 名称提供了一致性。 下表对这些常用谓词进行了说明。

谓词 说明
获取 检索资源,例如文件或用户。
设置 更改与资源相关的数据,例如文件或用户属性。
新建 创建资源,例如文件或用户。
添加 将资源添加到多个资源的容器。
删除 将资源从多个资源的容器中删除。

Cmdlet 名词

Cmdlet 名称的名词部分指示该 cmdlet 影响的资源或对象的类型。 对同一资源运行的所有 cmdlet 应使用相同的名词。 例如,名词“Service”用于处理 Windows 服务的 cmdlet,而名词“Process”用于管理计算机上的进程。

参数格式

参数修改 cmdlet 执行的操作。 每个 cmdlet 可以没有参数、有一个参数或多个参数。 参数名称以短划线 (-) 开头。 空格用于分隔要从参数名称传递的值。 如果传递的值包含空格,则需要将文本引在引号中。 某些参数接受多个值,这些值用逗号分隔(不含空格)。

示例

你可以学习以下示例来帮助确定如何使用 Windows PowerShell 执行常见的管理任务。 以下命令显示正在运行的服务的列表。

Get-Service | Where-Object {$_.Status -eq "Running"}

以下命令将显示名称以“win”开头(其中不包括名为 WinRM 的服务)的服务列表。

Get-Service -Name "win*" -Exclude "WinRM"

下一个命令将所有服务的列表输出到格式为 HTML 输出的文本文件。

Get-Service | ConvertTo-Html > File.html

上述命令的变体仅输出所选的有关服务的数据,然后将输出导出为 CSV 文件。

Get-Service | Select-Object Name, Status | Export-CSV c:\service.csv

以下命令检索有关 Active Directory 用户的指定信息(办公电话号码和用户主体名称)。

Get-ADUser -Filter * -Properties OfficePhone | FT OfficePhone,UserPrincipalName

最后一个示例检索 AD DS 用户的子集(位于营销 OU 中)并通过向每个帐户添加说明来修改其属性。

Get-ADUser -Filter 'Name -like "*"' -SearchBase "OU=Marketing,DC=Contoso,DC=Com" | Set-ADUser -Description "Member of the Marketing Department"

Windows PowerShell ISE

ISE 是一个完全图形环境,它提供脚本编辑器、调试功能、交互式控制台和多种工具,可帮助你发现和学习新的 Windows PowerShell 命令。 此模块可以让你基本熟悉 ISE 的工作原理。

“管理员: Windows PowerShell ISE”的屏幕截图。其中管理员启用了命令预览窗口。管理员刚刚在未命名的脚本窗格中运行了 Get-localuser。

窗格

ISE 提供两个主要窗格:脚本窗格(或脚本编辑器)和控制台窗格。 你可以将一个窗格放置在另一个窗格上方,或者以两窗格的布局并排放置。 还可以最大化一个窗格,并在窗格之间来回切换。 默认情况下,还会显示命令加载项窗格,它使你可以搜索或浏览可用的命令,并查看和填写所选命令的参数。 还有一个提供相同功能的浮动命令窗口。

自定义视图

ISE 提供多种方法来自定义视图。 窗口右下角区域中的滑块可更改活动字体大小。 “选项”对话框使你能够为许多不同的 Windows PowerShell 文本元素(例如关键字和字符串值)自定义字体和颜色选择。 ISE 支持创建视觉对象主题。 主题是一组字体和颜色设置,你可以将其作为组应用以自定义 ISE 的外观。 有几款内置主题可以打包自定义项,用于诸如演示之类的目的。 ISE 还提供了创建自定义主题的选项。 其他 ISE 功能包括:

  • 可用于存储常用命令的内置可扩展代码片段库。
  • 加载由 Microsoft 或第三方创建的加载项的功能,这些加载项可提供其他功能。
  • 与 Windows PowerShell 的调试功能集成。

Windows PowerShell 远程功能

Windows PowerShell 远程处理的目的是连接到远程计算机,以便你可以在这些计算机上运行命令,并将结果定向回本地计算机。 这使你能够从客户端计算机对网络上的多台计算机运行 Windows PowerShell命令,而不是创建到每台计算机的连接。

Windows PowerShell 远程处理的一个重要目标是启用批管理,这使你能够同时在一组远程计算机上运行命令。 你可以使用以下三种方法之一进行远程处理,如下表中所述。

方法 描述
一对一远程处理 在一对一远程处理方案(也称为交互式远程处理)中,你可以连接到单一远程计算机并对其运行 Windows PowerShell 命令,就像登录到计算机并打开 Windows PowerShell 窗口一样。
一对多远程处理 在一对多远程处理方案(也称为扇出远程处理)中,你发出一个命令,该命令将以并行方式在一台或多台远程计算机上执行-。 你不能以交互方式处理每台远程计算机。 相反,你的命令会批量发出和执行,并且结果会返回计算机以供使用。
多对一远程处理 在多对一远程处理方案(也称为扇入远程处理)中,多个管理员会与单一计算机建立远程连接。 通常,这些管理员在同一台远程计算机上具有不同的权限,并且可能在受限制的 Windows PowerShell 会话中正常工作。

注意

对多台计算机运行命令时,请注意远程计算机之间的差异,例如操作系统、文件系统结构和系统注册表中的差异。

PowerShell Direct

许多管理员选择在虚拟化环境中运行某些服务器。 若要对运行 Windows 10 或 Windows Server 的 Hyper-V VM 实现更简单的管理,可以使用名为 PowerShell Direct 的功能。

使用 PowerShell Direct,你可以在 VM 中从主机操作系统中运行 Windows PowerShell cmdlet 或脚本,而无需考虑网络、防火墙和远程管理配置。