本附录提供了在每个章节末尾找到的评审问题的简明答案。 使用它来验证理解并强化关键概念。
第 1 章 - PowerShell 入门
- 使用
$PSVersionTable自动变量。 - 仅当您需要绕过用户帐户控制(UAC)时,才需在本地计算机上进行任务提升。
- Windows客户端系统上的默认执行策略是
Restricted,这会阻止运行脚本。 - 用于
Get-ExecutionPolicy确定当前执行策略。 - 使用
Set-ExecutionPolicy(例如,Set-ExecutionPolicy -ExecutionPolicy RemoteSigned)。
第 2 章 - 帮助系统
- 否。 DisplayName 参数是通过名称指定的,而不是通过位置。
-
Get-Process具有六个参数集。 - 使用
Get-Command -Noun EventLog。 - 使用
Get-Process -Name powershell。 - 运行
Update-Help(在 Windows PowerShell 中提升为管理员),下载并安装最新的帮助内容。
第 3 章 - 发现对象、属性和方法
-
Get-Process生成对象System.Diagnostics.Process。 - 通过管道将命令传递给
Get-Member. - 检查对象是否具有执行该操作的方法。
- 使用命令
PassThru的参数(如果有)。 - 运行命令一次,并将结果存储在变量中,以避免在原型制作时反复生成大量输出。
第 4 章 - One-Liners 和管道
- PowerShell 单行脚本是一条连续的管道,不管它跨越多少物理行。
- 自然换行符可以出现在管道(
|)、逗号(,)、左括号([ ])、大括号({ })和括号(( ))等字符上。 - 应通过减少通过管道传递的数据量来筛选以改进性能和效率。
- 命令可以按值(按类型)或属性名称接受管道输入。
- 由于PowerShell 库中的大多数内容都是社区贡献的,可能未经审查,因此应在使用前对其进行评审和测试。
第 5 章 - 格式、别名、提供程序、比较
- 因为格式化 cmdlet 会生成格式对象,这会中断管道,并且不能由大多数其他命令使用。
- 使用
Get-Alias -Name %来确定具体的 cmdlet。 - 由于别名减少了可读性和可移植性,使脚本更难让其他人理解。
- 使用
Get-ChildItem -Path HKLM:\, HKCU:\列出这两个配置单元中的注册表项。 - 默认情况下,
-replace运算符不区分大小写,而该方法.Replace()区分大小写。
第 6 章 - 流控制
-
ForEach-Object从管道中以流式处理的方式逐个处理项目,而foreach语句则处理已加载到内存的集合中的项目。 -
while循环在运行之前评估其条件,因此如果条件为 false,则可能完全不运行,与do while和do until不同,后者至少运行一次,并在运行后评估条件。 -
break完全退出循环,同时continue跳过当前迭代并继续执行下一个循环。
第 7 章 - 使用 WMI
- WMI cmdlet(例如,
Get-WmiObject)较旧且使用 DCOM,而 CIM cmdlet(例如)Get-CimInstance较新,默认情况下使用 WSMan。 - WSMan(Windows远程管理)。
- CIM 会话允许重复使用连接、支持备用凭据、提高性能并简化管理多个远程连接。
- 创建会话
New-CimSessionOption选项,例如,使用 DCOM,并将其传递给New-CimSession,然后使用该会话。Get-CimInstance - 使用
Remove-CimSession。
第 8 章 - PowerShell 远程处理功能
- 使用
Enable-PSRemoting。 - 使用
Enter-PSSession。 - 它允许你使用持久性会话,而不是使用每个命令指定计算机名称和凭据。
- 是的,可以在一对一交互式远程处理方案中使用 PowerShell 会话(PSSession)。
- 本地运行 cmdlet 使用方法返回实时对象,而远程命令返回不带方法的反序列化对象。
第 9 章 - 函数
- 使用
Get-Verb。 - 将
[CmdletBinding()]属性添加到函数。 - 当函数对系统状态进行更改或执行可能影响的操作时。
- 指定
-ErrorAction Stop。 - 若要记录如何使用函数,以便你和其他人可以轻松理解它并查找帮助
Get-Help。
第 10 章 - 脚本模块
- 创建一个
.psm1文件并将函数放入其中。 - 使用批准的谓词可确保一致性、避免警告并提高可发现性。
- 使用
New-ModuleManifest。 - 在
.psm1文件中使用Export-ModuleMember或在.psd1文件的FunctionsToExport字段中指定函数。 - 该模块必须位于与模块相同的文件夹中,该文件夹位于列出的路径中
$env:PSModulePath,并且包含相应的模块文件(.psm1或清单)。
最终说明
- 这些答案是有意简洁的,以强化关键概念。
- 重新访问章节,以便更深入地了解。