ZetCode

PowerShell Out-GridView

最后修改:2025 年 2 月 15 日

在本文中,我们将介绍PowerShell中的Out-GridView cmdlet。此cmdlet在一个交互式网格窗口中显示数据。它允许进行排序、过滤和选择数据。

Out-GridView基础知识

Out-GridView cmdlet将输出发送到单独窗口中的图形表。它接受来自管道或参数的输入。该网格提供交互式功能,例如列排序和数据过滤。这使其在可视化检查和选择数据集时非常有用。

Out-GridView基本用法

使用Out-GridView的最简单方法是将其通过管道命令输出。这将在可滚动、可排序的网格窗口中显示数据。网格默认包含输入对象的所有属性。您可以在不修改原始源的情况下与数据进行交互。

grid1.ps1
Get-Process | Out-GridView

此命令在网格视图中显示所有正在运行的进程。您可以通过单击列标题按任何列进行排序。在脚本继续执行时,窗口保持交互状态。

使用Out-GridView过滤数据

Out-GridView包含内置的过滤功能。单击任何列标题中的过滤图标可访问过滤选项。您可以按特定值或文本模式进行过滤。网格会立即更新以仅显示匹配的行。

grid2.ps1
Get-Service | Out-GridView

这将在网格中显示所有系统服务。使用过滤框按状态或名称缩小服务范围。过滤是动态的,并在您键入时应用。可以同时过滤多个列。

选择和返回数据

-PassThru参数允许选择项目并将其返回到管道。关闭网格窗口后,选定的项目可用于进一步处理。这使得脚本中的交互式选择工作流程成为可能。

grid3.ps1
Get-ChildItem C:\Windows\*.exe | Out-GridView -PassThru | ForEach-Object {
    Write-Host "Selected file: $($_.FullName)"
}

此脚本在网格中显示Windows可执行文件。关闭窗口后,将处理选定的文件。ForEach-Object cmdlet仅接收选定的项目。这创建了一个交互式文件选择工具。

自定义网格标题

-Title参数为网格设置自定义窗口标题。这有助于在打开多个网格窗口时识别它们。标题显示在窗口的标题栏和任务栏条目中。

grid4.ps1
Get-Process | Select-Object Name, Id, CPU | Out-GridView -Title "Process Monitor"

这以自定义窗口标题显示进程信息。网格中仅显示选定的属性。标题使窗口的目的更加清晰。这在具有多个网格的复杂脚本中特别有用。

使用Out-GridView创建选择菜单

Out-GridView可以在脚本中创建交互式选择菜单。通过与-PassThru结合使用,用户可以选择选项。选择决定了脚本的后续操作。这提供了一种替代文本菜单的图形化方法。

grid5.ps1
$options = @(
    [pscustomobject]@{Name="Restart"; Description="Restart the service"}
    [pscustomobject]@{Name="Stop"; Description="Stop the service"}
    [pscustomobject]@{Name="Start"; Description="Start the service"}
)

$action = $options | Out-GridView -Title "Select Action" -PassThru
Write-Host "You selected: $($action.Name)"

此脚本在网格中提供服务操作菜单。用户的选择存储在$action中以供进一步处理。描述列为每个选项提供了附加的上下文。

多选模式

默认情况下,Out-GridView允许选择多个项目。按住Ctrl键可选择不连续的项目,按住Shift键可选择范围。-PassThru参数返回所有选定的项目。这使得对选定的数据执行批量操作成为可能。

grid6.ps1
$selected = Get-Process | Out-GridView -PassThru
$selected | Stop-Process -WhatIf

此脚本允许用户选择多个进程来停止。-WhatIf参数显示实际停止进程之前会发生什么。删除它即可执行实际操作。请务必向用户确认破坏性操作。

等待网格关闭

-Wait参数会暂停脚本执行,直到网格窗口关闭。这可以确保后续命令仅在用户交互后运行。没有它,脚本会在显示网格后立即继续。

grid7.ps1
Get-Service | Out-GridView -Title "Service Status" -Wait
Write-Host "Grid window closed - continuing script"

此脚本等待用户关闭服务网格后继续。消息仅在网格窗口关闭后显示。此行为对于顺序交互式脚本很有用。

来源

PowerShell 文档

在本文中,我们介绍了PowerShell中的Out-GridView cmdlet。

作者

我叫Jan Bodnar,我是一名热情的程序员,拥有丰富的编程经验。我自2007年以来一直在撰写编程文章。至今,我已撰写了1400多篇文章和8本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PowerShell 教程