您可以从服务器管理器中使用 BPA GUI 运行最佳做法分析器 (BPA) 扫描,也可以在 Windows PowerShell 中使用 cmdlet 执行该操作。Windows PowerShell 中的 BPA cmdlet 允许一次扫描一个或多个角色,而 BPA GUI 只允许一次扫描一个角色。您还可以指示 BPA 排除或忽略不需要查看的扫描结果。

本主题内容

对角色执行最佳做法分析器扫描

您可以在服务器管理器中使用 BPA GUI 对角色执行 BPA 扫描,也可以使用 Windows PowerShell cmdlet 执行该操作。

使用 BPA GUI 扫描角色

按照以下步骤操作可使用 BPA GUI 扫描一个角色。

使用 BPA GUI 扫描一个角色的步骤
  1. 打开服务器管理器。 要打开“服务器管理器”,请单击「开始」,指向“管理工具”,然后单击“服务器管理器”。

  2. 在树窗格中,打开“角色”,然后选择要为其打开 BPA 的角色。

  3. 在细节窗格中,打开“摘要”部分,然后打开“最佳做法分析器”区域。

  4. 单击“扫描此角色”以启动扫描。

使用 Windows PowerShell cmdlet 扫描角色

按照以下过程操作可使用 Windows PowerShell cmdlet 扫描一个或多个角色。您必须以管理员组成员的身份登录计算机才能完成此过程。

注意

此部分中的过程不显示所有 BPA cmdlet 和参数。有关 Windows PowerShell 中 BPA 操作的详细信息,请在 Windows PowerShell 会话中,输入 Get-Help BPACmdlet -full,其中 BPACmdlet 可以是以下值之一。

  • Get-BPAModel

  • Get-BPAResult

  • Invoke-BPAModel

  • Set-BPAResult

使用 Windows PowerShell cmdlet 扫描一个角色的步骤
  1. 使用提升的用户权限打开 Windows PowerShell 会话。为此,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”

  2. 将服务器管理器模块导入 Windows PowerShell 会话。若要导入服务器管理器模块,请键入以下内容,然后按 Enter

    Import-Module ServerManager

  3. 导入 BPA 模块。键入以下内容,然后按 Enter

    Import-Module BestPractices

  4. 查找可以通过输入标识符 BestPracticesModelId 不等于“null”的 Get-WindowsFeature cmdlet 对其执行 BPA 扫描的所有角色的模型 ID,如以下示例所示。

    Get-WindowsFeature | Where {$_.BestPracticesModelId -ne $null}

  5. 在步骤 4 的结果中,查找要对其执行 BPA 扫描的角色的模型 ID。

  6. 输入以下命令以启动该角色的 BPA 扫描。

    Invoke-BPAModel -BestPracticesModelId ModelID_from_Step4

    如果可以对指定角色运行 BPA 扫描,则还可以通过将 Get-WindowsFeature cmdlet 的结果传输到 Invoke-BPAModel cmdlet 中来启动扫描,如以下示例所示。

    Get-WindowsFeature Model_Name | Invoke-BPAModel

使用 Windows PowerShell cmdlet 扫描所有角色的步骤
  1. 使用提升的用户权限打开 Windows PowerShell 会话。为此,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”

  2. 将服务器管理器模块导入 Windows PowerShell 会话。若要导入服务器管理器模块,请键入以下内容,然后按 Enter

    Import-Module ServerManager

  3. 导入 BPA 模块。键入以下内容,然后按 Enter

    Import-Module BestPractices

  4. 将可以执行 BPA 扫描的所有角色传输到 Invoke-BPAModel cmdlet 中以启动扫描。

    Get-WindowsFeature | Where {$_.BestPracticesModelId -ne $null} | Invoke-BPAModel

扫描远程计算机上运行的角色

本节中的过程介绍如何对运行 Windows Server(R) 2008 R2 的远程计算机上安装的角色执行 BPA 扫描。

重要

您必须是要执行 BPA 扫描的任何远程计算机上“管理员”组的成员。

使用服务器管理器 GUI 扫描远程角色的步骤
  1. 您必须先按照使用服务器管理器进行远程管理中的过程准备远程计算机,然后才能使用服务器管理器管理远程计算机。

  2. 打开服务器管理器。 要打开“服务器管理器”,请单击「开始」,指向“管理工具”,然后单击“服务器管理器”。

  3. 在服务器管理器树窗格中,右键单击“服务器管理器”节点,然后单击“连接到另一台计算机”

  4. “连接到另一台计算机”对话框中,选择“另一台计算机”,然后浏览或输入运行 Windows Server 2008 R2 的另一台计算机的名称或 IP 地址。单击“确定”

  5. 在远程计算机的服务器管理器树窗格中,打开“角色”

  6. 选择要执行 BPA 扫描的角色的角色主页。

  7. 在细节窗格中,打开“摘要”部分,然后展开“最佳做法分析器”区域。

  8. “最佳做法分析器”区域中,单击“扫描此角色”

  9. 扫描完成后,通过双击“不符合”“符合”“全部”选项卡上的某个结果项目查看扫描结果。

使用 Windows PowerShell cmdlet 扫描远程角色的步骤
  1. 您必须先按照使用服务器管理器进行远程管理中的过程准备远程计算机,然后才能使用服务器管理器管理远程计算机。

  2. 使用提升的用户权限打开 Windows PowerShell 会话。为此,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”

  3. 键入以下内容,其中 ComputerName 是运行 Windows Server 2008 R2 的远程计算机的名称,UserName 是远程计算机上属于“管理员”组成员的用户的名称,然后按 Enter

    Enter-PSSession <ComputerName> -credential <UserName>

  4. 系统将提示您在安全的对话框中输入密码。键入密码,然后按 Enter

  5. 将服务器管理器模块导入 Windows PowerShell 会话。若要导入服务器管理器模块,请键入以下内容,然后按 Enter

    Import-Module ServerManager

  6. 导入 BPA 模块。键入以下内容,然后按 Enter

    Import-Module BestPractices

  7. 通过将角色的模型传输到 Invoke-BPAModel cmdlet 中来启动 BPA 扫描。键入以下内容,然后按 Enter

    Get-WindowsFeature [Role Name] | Invoke-BpaModel

  8. 键入以下内容,然后按 Enter

    configure-wsman.ps1

  9. 键入以下内容,然后按 Enter

    New-RunSpace

  10. 键入以下内容,然后按 Enter

    Start-PSSession

  11. 通过将角色的模型传输到启动 BPA 扫描的 cmdlet(即 Invoke-BpaModel)中,对远程计算机上运行的角色启动 BPA 扫描。键入以下内容,然后按 Enter

    Get-WindowsFeature [Role Name] | Invoke-BpaModel

  12. 获得 BPA 扫描的结果。键入以下内容之一,然后按 Enter

    • Get-BpaResult [BestPracticeModelID]

    • Get-WindowsFeature [Role Name] | Get-BpaResult

排除扫描结果

由于您可能不需要查看某些扫描结果,尤其是当您频繁运行扫描时,因此可以排除不想查看或与您的扫描无关的扫描结果。已排除的扫描结果将移动到 BPA GUI 的“已排除”选项卡中。可以随时再次包括这些扫描结果。

使用 BPA GUI 排除扫描结果

按照以下步骤操作可使用 BPA GUI 排除扫描结果。

注意

您必须对一个角色至少运行一次 BPA 扫描,然后才能使用该过程。

使用 BPA GUI 排除扫描结果的步骤
  1. 打开服务器管理器。 要打开“服务器管理器”,请单击「开始」,指向“管理工具”,然后单击“服务器管理器”。

  2. 在树窗格中,打开“角色”,然后选择要为其打开 BPA 的角色。

  3. 在细节窗格中,打开“摘要”部分,然后打开“最佳做法分析器”区域。

  4. “不符合”“符合”“全部”选项卡中选择一个结果,然后单击“排除”

  5. 若要一次排除多个结果,请在选择结果时按下 Ctrl 键。

使用 Windows PowerShell cmdlet 排除扫描结果

可以通过将 Set-BPAResult cmdlet 与 -Exclude 参数一起使用排除扫描结果。与在 BPA GUI 中一样,您可以排除单个结果对象,也可以排除其字段(例如类别、标题以及严重性)等于或包含指定值的结果集。例如,您可以从某个角色的扫描结果集中排除所有“性能”结果。

注意

您必须对一个角色至少运行一次 BPA 扫描,然后才能使用该过程。

使用 Windows PowerShell cmdlet 排除扫描结果的步骤
  1. 使用提升的用户权限打开 Windows PowerShell 会话。若要执行此操作,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”

  2. 将服务器管理器模块导入 Windows PowerShell 会话。若要导入服务器管理器模块,请键入以下内容,然后按 Enter

    Import-Module ServerManager

  3. 导入 BPA 模块。键入以下内容,然后按 Enter

    Import-Module BestPractices

  4. 通过输入以下 cmdlet 从某个角色扫描中排除特定结果。

    Get-BPAResult -BestPracticesModelId Specified Model Id | Where { $_ Field_Name -eq "Value" } | Set-BPAResult -Id Specified Model Id -Exclude $true

    以上 cmdlet 检索 Specified Model Id 表示的模型 ID 的 BPA 扫描结果项目。此命令的第二个部分筛选 Get-BPAResult cmdlet 的结果,以仅检索结果字段的值与引号中的文本相匹配的扫描结果。此 cmdlet 的最后一个部分(即位于第二个管道字符后面的部分)排除该 cmdlet 的前一部分筛选的结果。

包括扫描结果

当您想查看已排除的扫描结果时,您可以包括这些扫描结果。

使用 BPA GUI 包括扫描结果

在 BPA GUI 中,您可以通过在“已排除”选项卡上选择一个或多个结果,然后单击“包括”来包括任何已排除的扫描结果。

使用 BPA GUI 包括扫描结果的步骤
  1. 打开服务器管理器。 要打开“服务器管理器”,请单击「开始」,指向“管理工具”,然后单击“服务器管理器”。

  2. 在树窗格中,打开“角色”,然后选择要为其打开 BPA 的角色。

  3. 在细节窗格中,打开“摘要”部分,然后打开“最佳做法分析器”区域。

  4. “已排除”选项卡中选择一个结果,然后单击“包括”

  5. 若要一次包括多个结果,请在选择结果时按下 Ctrl 键。

使用 Windows PowerShell cmdlet 包括扫描结果

可以通过将 Set-BPAResult cmdlet 与 -Exclude 参数一起使用包括扫描结果。与在 BPA GUI 中一样,您可以包括单个结果对象,也可以包括其字段(例如类别、标题以及严重性)等于或包含指定值的结果集。例如,您可以包括以前从某个角色的扫描结果集中排除的所有“性能”结果。

使用 Windows PowerShell cmdlet 包括扫描结果的步骤
  1. 使用提升的用户权限打开 Windows PowerShell 会话。若要执行此操作,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”

  2. 将服务器管理器模块导入 Windows PowerShell 会话。若要导入服务器管理器模块,请键入以下内容,然后按 Enter

    Import-Module ServerManager

  3. 导入 BPA 模块。键入以下内容,然后按 Enter

    Import-Module BestPractices

  4. 通过键入以下 cmdlet,然后按 Enter 来包括角色扫描中的特定结果。

    Get-BPAResult -BestPracticesModelId Specified Model Id | Where { $_Field_Name-eq "Value" } | Set-BPAResult -Id Specified Model Id -Exclude $false

    以上 cmdlet 检索 Specified Model Id 表示的模型的 BPA 扫描结果项目。此 cmdlet 的第二个部分(即位于第一个管道字符 (|) 后面的部分)筛选 Get-BPAResult cmdlet 的结果,以仅检索结果字段的值与引号中的文本相匹配的扫描结果。此 cmdlet 的最后一个部分(即位于第二个管道字符后面的部分)包括该 cmdlet 的第二部分筛选的结果,方法是将 –Exclude 参数的值设置为 false

存档扫描结果

可以将 BPA 扫描的结果存档到基于 HTML 的报告中。

  1. 使用提升的用户权限打开 Windows PowerShell 会话。若要执行此操作,请依次单击「开始」“所有程序”“附件”Windows PowerShell,右键单击 Windows PowerShell 快捷方式,然后单击“以管理员身份运行”

  2. 将服务器管理器模块导入 Windows PowerShell 会话。若要导入服务器管理器模块,请键入以下内容,然后按 Enter

    Import-Module ServerManager

  3. 导入 BPA 模块。键入以下内容,然后按 Enter

    Import-Module BestPractices

  4. 键入以下内容,然后按 Enter 以存档扫描结果。

    Get-BPAResult –BestPracticesModelId Specified Model Id | ConvertTo-Html –As List –CssUri $env:windir\system32\WindowsPowerShell\v1.0\Modules\BestPractices\BestPracticesReportFormat.css > <path to HTML report file>

    以上 cmdlet 检索指定模型的最新 BPA 扫描的结果,并采用 HTML 格式保存这些结果,从而应用存储在路径 windir\system32\WindowsPowerShell\v1.0\Modules\BestPractices\BestPracticesReportFormat.css 中的标准级联样式表。如果想替换级联样式表,请提供其他级联样式表的路径。

  5. 若要查看存档的 HTML 扫描结果,请打开 Internet 浏览器,然后打开您在上一步中存档的扫描结果。

请参阅